【发布时间】:2011-05-02 18:48:25
【问题描述】:
我非常喜欢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 newfilegit add newfilegit commit -m 'newfile'- 在文件中添加两行
git add -p newfile- 编辑大块 (
e),删除大块中的一行,然后退出 git add (q) git stash --keep-indexgit stash pop
现在文件newfile 处于未合并状态。请再次注意,问题只发生在手动编辑的帅哥上。如果不手动编辑任何大块,上面的命令没有任何问题。
顺便提一下,文件的前一个状态是在第三阶段(git show :3:newfile),而之前暂存的版本是在第二阶段(git show :2:newfile)。所以我可以通过一些 git 黑魔法,设法将第二阶段放在这个索引中,将第三阶段放在工作回购中......但我不知道该怎么做,所以我手动做。 :-(
【问题讨论】:
-
我尝试了好几次,但我无法用 git 版本 1.7.2.3 重现您的问题。你用的是什么版本?
-
我在 Mac OS X 上使用的是 1.7.3.1 版本。
-
在
git add -p中使用不同的随机编辑再次尝试——它对我来说总是很好。顺便说一句,我在 Linux 上。听起来像一个错误——我建议在 git 邮件列表中询问,他们的响应速度非常快。 -
根据邮件列表,这不是错误,而是预期的行为。不过我不明白为什么......
-
弗兰克的回答解决了问题。
标签: git conflict git-stash git-add