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

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

На данный момент мы изучили основы Git, в том числе:

Концепция охватывает 90% функций Git, и этого также достаточно для удовлетворения повседневных потребностей разработчиков.

Однако оставшиеся 10% могут оказаться особенно важными при работе со сложными рабочими процессами (или когда вы застряли).

Следующая тема для обсуждения — «организация коммитов»: разработчики иногда говорят: «我想要把这个提交放到这里,那个提交放到刚才那个提交的后面", и следующее, о чем я собираюсь рассказать, это то, как это реализовано. Это выглядит сложно, но на самом деле это очень простая концепция.

git cherry-pick

Первая командаgit cherry-pick, форма команды:

git cherry-pick <提交号>...

Если вы хотите скопировать некоторые коммиты в текущее местоположение (HEAD), наиболее простым способом является выбор вишни. Лично мне очень нравится выбор вишни, потому что это очень просто.

Давайте посмотрим на это на примере!

Вот репозиторий, мы хотим скопировать работу по боковой ветке в основную ветку, а вы сразу вспоминаете, чему научились раньшеrebaseправильно? Но давайте посмотрим, что может сделать выбор вишни.

git cherry-pick C2 C4

Вот и все! Нам нужно только закоммитить записи C2 и C4, чтобы Git подхватил их и поместил под текущую ветку, вот так просто!

интерактивная перебазировка

Cherry-pick отлично подходит, когда вы знаете, какие коммиты вам нужны (а также знаете хэши этих коммитов), нет более простого способа.

Но что, если вы не знаете хэш нужного коммита?

К счастью, Git понял это для вас, мы можем использовать интерактивную перебазировку, если вы хотите найти нужную запись из серии записей коммитов, это лучший способ

Давайте рассмотрим его подробно:

Интерактивная перебазировка относится к использованию с параметрами--interactiveКоманда rebase, сокращенно-i

Если вы добавите эту опцию после команды, Git откроет интерфейс пользовательского интерфейса и перечислит альтернативные записи фиксации, которые будут скопированы в целевую ветку.Он также отобразит хэш-значение каждой записи фиксации и описание фиксации.Описание фиксации имеет Помогает понять, какие изменения внес этот коммит.

В реальных условиях так называемое окно пользовательского интерфейса обычно открывает файл в текстовом редакторе, таком как Vim.

Когда откроется интерфейс rebase UI, вы можете сделать 3 вещи:

  • Настройте порядок записей коммитов
  • удалить ненужные коммиты
  • фиксация слияния

Затем посмотрите на конкретную команду:

можно увидеть:

  • p, pick = use commit
  • r, reword = use commit, but edit the commit message
  • e, edit = use commit, but stop for amending
  • s, squash = use commit, but meld into previous commit
  • f, fixup = like "squash", but discard this commit's log message
  • x, exec = run command (the rest of the line) using shell
  • d, drop = remove commit

разделить редактирование записи фиксации

Измените выбор вложенной отправки на редактирование, указав, что эту отправку необходимо изменить; затем сбросьте до последней отправки, которую необходимо разделить, но сохраните содержимое рабочей области, а затем в свою очередь зафиксируйте содержимое рабочей области.

слияние фиксации записи сквош

Измените выбор подкоммита на squash, что означает слияние с родительским коммитом текущего коммита.

Пакетное изменение исторической информации об отправке

Измените выбор дополнительной отправки на переформулировку, что означает изменение исторической информации о подаче.

удалить историю

Измените выбор, чтобы удалить, или удалите линию напрямую.

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

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