Git非快进更新被拒绝合并远程更改

时间:2012-09-02 14:45:17

标签: git github

如何解决此问题?我想提交,但我得到以下错误。

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 个答案:

答案 0 :(得分:30)

git pull origin monty_svm_dev

发生的事情是遥控器的最近更改比您的分支更新。

因此,在您push更改之前,您需要首先获取并合并远程更改。

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

git fetch origin your_branch然后a git merge your_branch

git pull origin your_branch # fetch and merge in one operation

你的分支是主人,或你的分支名称(我认为你的情况似乎是monty_svm_dev

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

答案 1 :(得分:2)

这主要是因为当你

  

git pull

从一个分支,两个操作进行获取和合并。现在,如果您的本地有一些更改,那么git将不允许您在提交更改之前推送它。

如果遥控器的更改仍未在本地拉出并合并,则会出现此问题,因此您需要再次拉动然后再按下它。如果它没有解决问题,请回复

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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

  

在使用git时的理想循环中,请始终按以下顺序检查以下git命令是否按顺序使用:

git pull
git add
git commit
git push

我个人避免在堆栈上发布关于git的大部分问题,因为我总是将我的git命令acitivites统计为上述序列。

我创建了一个首字母缩略词,以确保我不会忘记,我正在跳的同样对读者有用:

  

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

我记忆git push,add,commit,pull的方法是:

  

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

总而言之,请记住“git”包然后“推”。

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

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

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

git reset filename.txt 
  

以上从舞台中删除文件...在此命令后我们可以   安全地执行git commit,git只会提交我们所在的文件   stage意味着文件“filname.txt”不会被提交)

git pull origin your_intended_branch

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

git push