我在分支中添加了3个提交:
- '3'->
c3425f
(added: <h3>1</h3>)
- "2"->
c34252
(added: <h2>2</h2>)
- "首次提交"->
c3425d
(added: <h1>1</h1>)
最后我得到了这个结构:
<h1>1</h1>
<h2>2</h2>
<h3>3</h3>
现在我想排除c34252
提交。为此,我使用了git revert c34252
。
这样做我的IDE向我展示:
<h1>1</h1>
<<<<<<< HEAD
<h2>2</h2>
<h3>3</h3>
=======
>>>>>>>
因此,它建议我第二次提交包含<h2>2</h2><h3>3</h3>
,但应该只包含<h2>2</h2>
。那么,为什么git建议我第二次提交包含这两个更改呢?应该使用哪个git命令来仅排除第二次提交?
TLDR
这并没有什么神奇的命令。你需要向git
解释你到底想要什么。
更深入
当你看到你的承诺";2〃:
git show c34252
您将看到提交包含一个类似于以下的差异:
diff --git a/file b/file
index ace652e..6d8ba51 100644
--- a/file
+++ b/file
@@ -1 +1,2 @@
<h1>1<h1>
+<h2>2<h2>
所以当你运行时
git revert c34252
CCD_ 12尝试应用与此相反的方法。它试图找到
<h1>1<h1>
<h2>2<h2>
(end of file)
然后移除h2线。然而,它却发现
<h1>1<h1>
<h2>2<h2>
<h3>3<h3>
(end of file)
所以它不确定您想要获得什么:只删除h2行,或者从h2直到文件结束。你需要向git解释你想要什么,没有办法绕过这个AFAIK。当编辑同一行或紧接在一起的行时,经常会出现这种冲突。