我正在尝试推送新的更改,但我有一个冲突的文件。尝试推送后,我收到以下错误:
Merge the remote changes (e.g. 'git pull') before pushing again. See the
'Note about fast-forwards' section of 'git push --help' for details.
好的,所以我们需要使用git pull。
我尝试使用git pull
,然后我收到此错误:
error: Your local changes to the following files would be overwritten by merge:
db/profile_edit.php
Please, commit your changes or stash them before you can merge.
但是,当我尝试提交时,我会回到第一个错误。我该怎么办?远程仓库的更改比我本地计算机上的更新。那么,我如何使用diff工具打开它并进行更改,然后告诉git我已经进行了更改,以便让我推动更改?
答案 0 :(得分:23)
尝试
$ git pull --rebase
在您的之前提取远程更改,然后提交。看看它是否有效。
如果这不起作用,请尝试改为:
$ git stash
$ git pull --rebase
$ git stash pop
要在stash
上保存更改,请在工作存储库中应用远程提交,然后再次将更改(保存到stash
)应用到工作存储库中。
答案 1 :(得分:8)
首先,我想如果您要git add
然后git commit
,那么您的本地仓库将足够干净,可以git pull
。
但是,如果在您看到上游发生的情况之前您可能不想提交更改,则可以使用git stash
。它将临时清理您的工作目录并保存您的更改,以便您可以拉(我建议git pull --rebase
以避免合并点 - 但这是个人品味问题)。一旦您完成了上游更改,您就可以使用git stash pop
恢复本地修改。在清理冲突并消除不必要的更改后,您可以添加,提交,然后最终推送。
答案 2 :(得分:5)
你对这些命令感到困惑。
git commit
将更改保存到git的数据库中
git pull
将远程提交带入您的仓库
您尝试使用未提交的更改拉,因此git要求您先提交(或git stash
他们),以便它可以将您的本地更改与远程更改合并。