2012-09-19 52 views
0
* 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 commit,但是这个时候发生了冲突,为什么?为什么git commit --amend使冲突发生?那很奇怪

我只有一个电脑,我总是编辑它的文件,我也只有一个本地回购,还有更多这个回购仅在这里使用,我认为没有可能发生冲突

但它发生了,为什么?

+0

看起来像你已经做出了两个分支几乎相同的变化,(相同的提交信息)。看起来好像你在初始提交和“修改”提交之间改变了分支,导致了悲伤。 –

回答

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 

,如果你推后的第二次提交,然后ammended,然后就拼命拉着,那么你将有一个合并冲突。不知道为什么你没有单独的提交与冲突解决合并。您可能在处于冲突状态时进行了更多工作,修复了冲突,添加了所有更改并付诸实践。在这种情况下,我写的最后一组指令将帮助你。

+0

冲突发生后0d0913a和84b134d是我解决冲突后提交 – hugemeow

3

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

+1

他正在单独工作。他没有这些问题。在你合作的情况下,你是正确的,但即使如此,它并不像人们说的那样邪恶。 –

+2

@ adam-dymitruk即使只有一个人独自工作,如果他们有多个计算机/回购,也可能会合并多个历史版本。 在#git IRC频道看到一些公平的少数人设法将大量重写历史记录合并到企业环境中,而现在遇到了很多麻烦的人,我确实认为这个呼吁是过度的,谨慎是有道理的。 – canton7

+1

更好的建议是不要使用'git pull'并在'git log ... origin/currentbranch'''git fetch'之后检查历史记录。如果你每次都盲目拉动,那么你是对的。但是这不被推荐。 –