2011-07-20 50 views
10

我试图推动新的更改,但我有一个冲突的文件。试图推后,我得到以下错误:Git告诉我拉,然后提交,然后拉?

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拉。 我尝试使用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. 

但是,当我尝试提交,我回去的第一个错误。我该怎么办?远程repo上的更改比本地计算机上的更新更新。那么,如何用diff工具打开它并进行更改,然后告诉git我已经进行了更改,这样可以让我推送更改?

回答

23

尝试做

$ git pull --rebase 

到你面前拉远程修改,然后提交。看看它是否有效。

如果这不起作用,试试这个:

$ git stash 
$ git pull --rebase 
$ git stash pop 

要保存在stash更改,应用远程提交您的作品的仓库里面,然后里面应用更改(保存到stash)的工作库再次。

8

首先,我想如果你是git add然后git commit,你的本地回购将是足够干净做git pull

但是,如果有可能,你不想犯,直到你看到发生了什么变化的上游,可以使用git stash。它会暂时清理工作目录,并保存更改,这样你就可以拉(我会建议git pull --rebase避免合并点 - 但它是一个个人喜好的问题)。一旦你有上游改变拉,你可以使用git stash pop返回本地修改。清理冲突并摆脱不必要的更改后,您可以添加,提交,然后最终推送。

+0

+1,很好的解释 – sha256

5

你变得混淆的命令。

git commit将更改保存到Git的数据库 git pull带来了远程提交到您的回购

你试图与未提交的修改,所以Git是要求你提交的第一(或git stash他们离开),以便它可以将您的本地更改与远程更改合并。

相关问题