Какой первый раздел в выводе git rerere diff?
Я работаю через раздел Git - Rerere в 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
хочет внести свой вклад. Это не имеет смысла для меня, хотя. Что означает первый раздел?
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
Детальное объяснение
Содержание Working Dir
Сразу после слияния рабочий каталог содержит:
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
Если мы посмотрим на рабочий файл dir файла 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
Это именно то, что сейчас находится в рабочем каталоге.
По этой ссылке
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
Этот раздел рассказывает вам, что он думает о том, чтобы делать. Он хочет извлечь hello mundo из одного файла и hola world из другого и заменить его на 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
Принимает "привет мундо" и "мир hola" и заменяет эту строку на "hola mundo"