我非常喜欢git add -p
,git stash
但我偶尔会遇到以下问题,通过以下命令序列重现:
git add -p my_file
:然后我手动(使用e
)编辑一个大块,因为 git 建议的拆分不适合我git stash --keep-index
: 然后我做一些测试,如果测试通过了我不提交git stash pop
:现在问题出现了:文件my_file
现在被认为是冲突的,git已经完全弄乱了我编辑的大块,所以我必须编辑文件,删除无用的合并标记,然后git add my_file
运行git reset HEAD
我很困惑,因为这只发生在手动编辑大块时。我不明白这应该有什么不同。
要重现问题:
touch newfile
git add newfile
git commit -m 'newfile'
- 在文件中添加两行
git add -p newfile
- 编辑大块(
e
),删除大块中的一行,然后退出 git add(q
) git stash --keep-index
git stash pop
现在文件newfile
处于未合并状态。请再次注意,该问题仅发生在手动编辑的 hunks中。如果不手动编辑任何大块,则上述命令没有任何问题。
顺便提一下,文件的先前状态处于第三阶段(git show :3:newfile
),而先前阶段的版本处于第二阶段(git show :2:newfile
)。所以我可以通过一些 git 黑魔法,设法将第二阶段放在这个索引中,将第三阶段放在工作回购中......但我不知道该怎么做,所以我手动做。:-(