Как переупорядочить совершение в Git не интерактивно

Какие неинтерактивные команды git достигают изменения от Before to After?

До:

A---B---C---D

После:

A---C'---B'---D'

Ответ 1

В вашем случае вы можете перезагрузить интерактивный интерфейс: git rebase -i HEAD~4 Затем вы можете просто изменить порядок своих выборов

Например, добавим еще три файла в нашу ветку:

git add A
git commit -m "A"

git add B
git commit -m "B"

git add C
git commit -m "C"

Ваш короткий заголовок будет:

$ git shortlog
 (3):
      A
      B
      C

Если вы хотите изменить порядок B с помощью C:

$ git rebase -i HEAD~2
pick 1f9133d B
pick 33f41be C

Вы просто переупорядочиваете их как:

pick 33f41be C
pick 1f9133d B

После того, как вы закончите писать, см. краткое сообщение:

$ git shortlog
 (3):
      A
      C
      B

Вы можете сделать то же самое со всеми коммитами путем переупорядочения. Это похоже на то, что вы видите, что вы получаете, что довольно круто:)

Ответ 2

Попробуйте следующее:

git reset --hard A
git cherry-pick C
git cherry-pick B
git cherry-pick D

Возможно, существует способ с git rebase, но я этого не понимал.

Ответ 3

См. Как запустить git rebase -interactive в неинтерактивном режиме? для использования git rebase -interactive в неинтерактивном режиме.

Затем, если у вас есть формальные критерии для переупорядочения, вы можете script, что, например, Действительно сгладить слияние git, чтобы переупорядочить фиксацию оригинальная дата фиксации.