为什么git commit --amend会发生冲突?这很奇怪

时间:2012-09-19 16:38:06

标签: git version-control git-push git-commit amend

*   84b134d - (HEAD, origin/lab_master, lab_master) comment macro defination which is protent to be a fun
|\
| * 735d88f - add small script to ease ctag related option (13 minutes ago) 
* | 6623a94 - add small script to ease ctag related option (4 minutes ago) 
|/
* 0d0913a - add gitignore to ignore ctags file (57 minutes ago) 

735d88f是一个--amend提交,但此时发生了冲突,为什么?

我只有一台电脑,而且我总是编辑它上面的文件,我也只有一个本地电子仓库,这个回购仅供这里使用,我认为不可能发生冲突

但它发生了,为什么?

2 个答案:

答案 0 :(得分:5)

最好只修改尚未推送到服务器的提交。一旦你推送一个提交,如果你试图修改并推送它,它将导致冲突,因为你已经改变了历史记录(记录在服务器上)。

答案 1 :(得分:0)

我没有看到冲突的例子。你所做的是从同一个时间点做出同样的改变然后合并它们。无论哪种方式,你都可以通过将所有这些压缩成一个

来解决这个问题
git tag finalstate 84b134d
git stash -u
git reset --hard 0d0913a
git checkout finalstate -- .
git add -A
git commit -C finalstate

如果“注释宏”提交并且第二个“添加小脚本”提交有效,则可以

git tag finalstate 84b134d
git stash -u
git reset --hard 6623a94
git checkout finalstate -- .
git add -A
git commit -C finalstate

代替。如果你想要第二个,那么

git tag finalstate 84b134d
git stash -u
git reset --hard 735d88f
git checkout finalstate -- .
git add -A
git commit -C finalstate

使用

删除辅助标记
git tag -d finalstate

如果你在第二次提交后推,然后修改,然后拉,那么你将与冲突合并。不确定为什么没有针对冲突解决方案的合并进行单独提交。您可能在处于冲突状态时执行了更多工作,修复了冲突,添加了所有更改并已提交。在这种情况下,我写的最后一组指令将对您有所帮助。