如何在 GitHub 上合并远程更改?

在第一次尝试 Github 推送时,我出现了以下错误:

[rejected] master -> master (non-fast forward)
error: failed to push some refs to 'git@github.com:me/me.git'
To prevent you from losing history, non-fast-forward updates were rejected
Merge the remote changes before pushing again.  See the 'non-fast forward'
section of 'git push --help' for details.

如何修复这个问题并合并远程更改?

158614 次浏览

您可能在 github 上有从未合并的更改。尝试 git pull获取和合并更改,然后您应该能够推。如果我误解了你的问题,我很抱歉。

有关详细信息,请参阅“ 废物推车,救命”中的“非快进”部分。

您可以执行“ git pull”、解决潜在的冲突和“ git push”结果。“ git pull”将在提交 A 和 B 之间创建一个合并提交 C。

或者,您可以使用“ git pull —— rebase”将 X 和 B 之间的更改重新建立在 A 之上,并将结果推回。Rebase 将创建一个新的提交 D,该提交 D 将在 A 之上构建 X 和 B 之间的更改。

还可以通过在分支名称前添加 + 符号来强制推送。

git push origin +some_branch

如果你“ git pull”上面写着“已经更新了”,仍然得到这个错误,这可能是因为您的其他分支之一没有更新。尝试切换到另一个分支,并确保其中一个分支也是最新的,然后再次尝试“ git push”:

切换到分支“ foo”并更新它:

$ git checkout foo
$ git pull

您可以通过发出命令来查看您得到的分支:

$ git branch

当您有冲突的标记时,也可能发生此问题。如果您的本地版本和远程版本对不同的提交使用相同的标记名,那么您可以在这里结束。

你可以解决它,我删除本地标签:

$ git tag --delete foo_tag

当我得到这个错误时,我备份了整个项目文件夹

$ git config branch.master.remote origin
$ git config branch.master.merge refs/heads/master

... 取决于你的分支机构名称(如果不是主机)。

然后我做了 git pull --rebase。之后,我用备份项目的文件替换了提取的文件。现在我已经准备好再次提交我的更改并推进。

你可以强迫它去推,但是只有当你非常确定你在做什么的时候才可以这样做。

命令是:

git push -f