我正在研究Git - Rerere section of the Git Book。我刚刚运行git checkout master; git merge rerere2; git rerere diff
。这是输出。
PS> git rerere diff
--- a/simple.rb
+++ b/simple.rb
@@ -1,9 +1,9 @@
#! /usr/bin/env ruby
def hello
-<<<<<<<
- puts 'hello mondo'
-=======
+<<<<<<< HEAD
puts 'hola world'
->>>>>>>
+=======
+ puts 'hello mondo'
+>>>>>>> rerere2
end
有三个差异部分。
<<<<<<<
显示了什么? <<<<<<< HEAD
显示了HEAD
分支机构想要贡献的内容。>>>>>>> rerere2
显示了rerere2
分支机构想要贡献的内容。看起来第一个差异部分是对rerere2
想要贡献的内容的否定。但是,这对我来说没有意义。第一部分是什么意思?
答案 0 :(得分:2)
询问git rerere diff
的第一部分是什么意思很好但是误入歧途。相反,请检查-
和+
注释。来自Git Book:
git rerere diff
将显示解决方案的当前状态 - 您开始解决的问题以及您已解决的问题。
任何以-
或no prefix
为前缀的内容都是您开始解决的问题:
<<<<<<<
puts 'hello mondo'
=======
puts 'hola world'
>>>>>>>
任何以+
或no prefix
为前缀的内容都是您已将其解析为的内容(并且是您目前在工作目录中所拥有的内容):
<<<<<<< HEAD
puts 'hola world'
=======
puts 'hello mondo'
>>>>>>> rerere2
合并后,工作目录立即包含:
def hello
<<<<<<< HEAD
puts 'hola world'
=======
puts 'hello mondo'
>>>>>>> rerere2
end
git diff
git diff
的输出是这个并使用组合的diff标记:
def hello
++<<<<<<< HEAD in working dir but in neither ours/theirs
+ puts 'hola world' in working dir but not in theirs
++======= in working dir but in neither ours/theirs
+ puts 'hello mondo' in working dir but not in ours
++>>>>>>> rerere2 in working dir but in neither ours/theirs
end
如果我们查看simple.rb的工作目录文件,这是真的。它的内容与git diff
输出相同,但没有我们的/他们的标记。
git rerere diff
git rerere diff
的输出是这个,不使用组合的diff格式。
def hello
-<<<<<<< started with
- puts 'hello mondo' started with
-======= started with
+<<<<<<< HEAD resolved to
puts 'hola world' started with & resolved to
->>>>>>> started with
+======= resolved to
+ puts 'hello mondo' resolved to
+>>>>>>> rerere2 resolved to
end
-
的任何内容都是您开始使用+
的任何内容都是您决心如果我们查看具有-
注释的内容,我们就有了这个:
-<<<<<<<
- puts 'hello mondo'
-=======
->>>>>>>
这表示左侧带来puts 'hello mondo'
而右侧带来任何东西。如果我们看一下+
的内容,我们就有了这个:
+<<<<<<< HEAD
puts 'hola world'
+=======
+ puts 'hello mondo'
+>>>>>>> rerere2
这正是目前工作目录中的内容。
答案 1 :(得分:0)
从该链接
git rerere diff将显示解决方案的当前状态 - 您开始解决的问题以及您已解决的问题。
git rerere保存合并选择。因此,它描述了它将要做的事情。第一部分是解决方案的输入之一。最后一部分是合并的输出。
$ git rerere diff
--- a/hello.rb
+++ b/hello.rb
@@ -1,11 +1,11 @@
#! /usr/bin/env ruby
def hello
-<<<<<<<
- puts 'hello mundo'
-=======
+<<<<<<< HEAD
puts 'hola world'
->>>>>>>
+=======
+ puts 'hello mundo'
+>>>>>>> i18n-world
end
本节告诉你它在做什么。它想从一个文件和hola世界中取出hello mundo,并用hello mundo替换它。
$ git rerere diff
--- a/hello.rb
+++ b/hello.rb
@@ -1,11 +1,7 @@
#! /usr/bin/env ruby
def hello
-<<<<<<<
- puts 'hello mundo'
-=======
- puts 'hola world'
->>>>>>>
+ puts 'hola mundo'
end
采取&#34;你好mundo&#34;和&#34; hola world&#34;并用hola mundo替换该行