Как побороть боязнь разрешения Git-конфликтов? (Гит расширенный)

задняя часть WeChat Git

HEAD

HEAD — это символическая ссылка на текущую запись проверки, то есть на запись фиксации, над которой вы работаете.

HEAD всегда указывает на самую последнюю фиксацию в текущей ветке. Большинство команд Git, изменяющих дерево коммитов, начинают с изменения того, на что указывает HEAD.

Мы можем понять это по следующей картинке:

HEAD->master->C1, HEAD указывает на master, master указывает на C1

HEAD обычно указывает на имя ветки (например, bugFix). При фиксации измените состояние bugFix, и это изменение станет видимым через HEAD.

Если вы хотите увидеть, на что указывает HEAD, вы можете проверить это с помощью cat .git/HEAD.Если HEAD указывает на ссылку, вы также можете использовать git symbolic-ref HEAD для проверки ее указания.

отсоединить ГОЛОВУ

Отдельный HEAD должен указывать на конкретную запись коммита, а не на имя ветки.

когда мы выполняемgit checkout C4Когда команда выполняется, эффект показан на следующем gif:

С относительными ссылками вы можете начать отсчет с легко запоминающегося места (например, с ветки bugFix или HEAD).

относительная ссылка

Относительные ссылки очень эффективны, здесь я представляю два простых способа использования:

  • использовать^Переместить вверх на 1 запись коммита
  • использовать~<num>Переместите вверх несколько записей коммитов, например~3

Относительная ссылка (^)

Помещение оператора (^) после имени ссылки указывает Git, что нужно найти родительский коммит указанного коммита.

так,master^Эквивалентно «Родительскому узлу мастера»,master^^Это второй родитель мастера.

воплощать в жизньgit checkout master^, конкретный эффект показан на следующем gif-файле:

Относительная ссылка (~)

Если вы хотите продвинуться на много шагов вверх по дереву коммитов, введите столько^Это кажется довольно раздражающим, конечно, Git учитывает это, поэтому вводит оператор~.

Оператор может сопровождаться числом (необязательно, если не следует номер и^ 相同, подняться один раз), укажите, сколько раз нужно подняться.

воплощать в жизньgit checkout master~2, конкретный эффект показан на следующем gif-файле:

Отменить изменения

В Git есть много способов отменить изменения. Как и коммиты, отмена изменения состоит из низкоуровневой части (отдельный файл или сегмент в промежуточной области) и высокоуровневой части (как именно было отменено изменение). Наше приложение в основном связано с последним.

Есть два основных способа отменить изменения:

  • git reset
  • git вернуться.

Далее, давайте объясним один за другим:

git reset

git reset отменяет изменения, откатывая запись ветки на несколько записей фиксации. Вы можете думать об этом как о «переписывании истории». git reset перемещает ветку вверх, а запись фиксации, на которую указывает, такая же, как никогда не зафиксированная.

Хотя удобно использовать git reset в вашей локальной ветке, этот метод «перезаписи истории» недействителен для удаленных веток, которые все используют вместе!

воплощать в жизньgit reset master^, конкретный эффект показан на следующем gif-файле:

git revert

Чтобы отменить изменения и поделиться ими с другими, нам нужно использовать git revert.

воплощать в жизньgit revert master^, конкретный эффект показан на следующем gif-файле:

странность! Существует новая фиксация после записи фиксации, которую мы хотим отозвать! Это связано с тем, что новый коммит C2 внес изменения, которые использовались для отмены коммита C2. Другими словами, состояние C2' такое же, как у C1.

После возврата вы можете отправить свои изменения в удаленный репозиторий, чтобы поделиться ими с другими.

Я считаю, что все в основном освоили продвинутые статьи о git, поэтому вы можете попробовать его в своей собственной среде git~

Публичный аккаунт WeChat:На мечеПожалуйста, обратите внимание на мою личную технологию общедоступного аккаунта WeChat, подпишитесь на дополнительный контент