26

我该如何解决这个问题?我正在尝试提交,但出现以下错误。

git push origin monty_svm_dev

To git@github.com:  ! [rejected]        monty_svm_dev -> monty_svm_dev
(non-fast-forward) error: failed to push some refs to
'git@github.com:/mygit.git' To prevent you from losing history,
non-fast-forward updates were rejected Merge the remote changes before
pushing again.  See the 'Note about fast-forwards' section of 'git
push --help' for details. root@li409-202:~/mypath#
4

4 回答 4

36

先做git pull origin monty_svm_dev_

发生的事情是远程的更改比您的分支更新。

因此,在您进行push更改之前,您需要先获取并合并遥控器上的更改。

您可以通过执行git checkout your_branch, 然后执行此操作:

git fetch origin your_branch然后一个
git merge your_branch

或者

git pull origin your_branch # fetch and merge in one operation

monty_svm_dev您的分支是 master 或您的分支名称(我认为似乎是您的情况)

完成此操作(并解决任何冲突)后,您可以执行git push origin monty_svm_dev

于 2012-09-02T14:54:31.790 回答
2

这基本上是因为当你

git 拉

从一个分支,两个操作发生 fetch 和 merge。现在,如果您的本地有一些更改,那么 git 将不允许您在提交更改之前推送它。

如果遥控器的更改仍未拉入本地并合并,也会出现此问题,因此您需要再次拉取然后推送它。如果不能解决问题请回复

于 2012-09-02T16:05:59.527 回答
0

做一个 Git 拉动。然后它将远程分支中最近的代码更改带入您的本地。然后你就可以推动你的改变。

于 2014-05-09T13:15:03.027 回答
0

git push当用户忘记在命令后发出命令时会出现此问题git commit。使用 git 时,请始终确保基本步骤。

在使用 git 的理想周期中,请始终检查以下 git 命令是否按以下顺序依次使用:

git pull
git add
git commit
git push

我个人避免发布关于堆栈上 git 的大多数问题,因为我总是将我的 git 命令活动与上述顺序相一致。

我创建了一个首字母缩略词以确保我不会忘记,我希望它对读者有用,即:

pcp(读作:pack push where (p=git​​ push, a=git add, ck=git commit, push=git push)。

我记住 git push、add、commit、pull 的方法是:

获取包推送(意思是:git包然后推送)。

总之,记住要“git”包然后“push”。

解决问题:我想添加我最常用的恢复 git 命令:

git checkout -- path/to/file/fileName.something #undo changes in file

上面撤消了文件中的更改...类似的可以应用于使用 * 作为文件名的多个文件,同样可以应用于多个以空格分隔的目录。

git reset filename.txt 

以上从阶段中删除文件...在此命令之后,我们可以安全地执行 git commit 并且 git 只会提交我们处于阶段的那些文件,这意味着文件“filname.txt”不会被提交)

git pull origin your_intended_branch

更改与 your_intended_branch 中的最新合并,这基本上合并了您提交但未推送的更改。一旦一切顺利,只需执行推送:

git push 
于 2017-01-30T17:13:11.537 回答