如何解决此问题?我想提交,但我得到以下错误。
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#
答案 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