Я новичок в Git.Я читаю книгу на [https://git -scm.com / book / en / v2] , и теперь я нахожусь в главе "3.6 Перебазирование".
Эта глава имеетточка:
Обратите внимание, что моментальный снимок, на который указывает последний коммит, с которым вы закончите, будь то последний из переназначенных коммитов для перебазирования или финальный коммит слияния после слияния, одинаковСнимок - это только история, которая отличается.
Я думаю, что это не правильно во всех случаях.Давайте рассмотрим случай ниже.
Предположим, что мы находимся в коммите C0
на 2 ветвях master
и test
.И у нас есть пустой foo
текстовый файл.
Далее мы извлекаем master
, записываем текст "line 1"
в foo
и делаем коммит C1
.Затем мы проверяем test
, также пишем текст "line 1"
до foo
, делаем коммит C2
.После этого мы удаляем текст "line 1"
из foo, делаем коммит C3
.
История теперь:
C0---C1 master
\
C2---C3 test-HEAD
Теперь у нас есть 2 случая для перемещения:
Используйте объединение от git merge master
: Git примет объединенный результат до C4
.Содержимое foo
сейчас равно "line 1"
.История теперь:
C0---C1 master
| \
C2--C3--C4 test
Использовать перебазирование на git rebase master
: последний коммит после перебазировки равен C3'
.Содержимое foo
теперь пусто.История теперь:
C0---C1 master
\
C2'---C3' test
Как видите, моментальный снимок помечен C4
и C3'
не совпадают, потому что содержимое foo
в C4
отличается от foo
в C3'
.Поэтому я думаю, что приведенное выше предложение в данном случае неверно.
У меня что-то не так?Спасибо.
P / s: Я не очень хорошо говорю по-английски, поэтому, пожалуйста, прости меня, если что-то не так в моем письме.