我有一个本地分支跟踪git上的远程分支。 在某些时候我更新文件'x.out',但在这个分支上工作时,我尝试从服务器拉出最新的更改。其他人已经更新了'x.out'并且git告诉我“不能覆盖文件”(或左右)所以我必须将我的更改添加到索引中,并且还要提交我的更改,然后才能成功完成。
问题在于,通过这种方法,它会在存储库中产生2次提交:一次提交我的本地更改(因为我有来自'x.out'服务器的旧版本)和一次提交后我“git添加“我修改过的'x.out'文件(基本上是sais”合并分支..“)
我不希望这两个步骤提交(日志看起来也很糟糕) - 很难遵循本应提交的内容。是不是有一种方式像SVN / Perforce告诉什么时候拉我希望我的本地修改文件与服务器合并(如果没有合并冲突可以自动合并?)这样当再次拉到远程时有这只是1次提交而不是2次提交......
答案 0 :(得分:3)
您必须提取更改,并在本地清除冲突(如果有)。
$ git pull
...
file foobar not up to date, cannot merge.
$ git stash
$ git pull
$ git stash pop
然后删除冲突并添加文件。
答案 1 :(得分:2)
您可以尝试git pull --rebase
,这可能会在一定程度上缓解这种情况。
总而言之,进行额外提交确实没有任何问题。只需获取gitk
或gitg
这样的应用程序,即可很好地可视化日志。