Jam*_*ber 32 git git-rewrite-history
什么非交互式git命令实现从Before到After的变化?
之前:
A---B---C---D
Run Code Online (Sandbox Code Playgroud)
后:
A---C'---B'---D'
Run Code Online (Sandbox Code Playgroud)
Moh*_*our 38
在您的情况下,您可以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"
Run Code Online (Sandbox Code Playgroud)
你的短信将是:
$ git shortlog
(3):
A
B
C
Run Code Online (Sandbox Code Playgroud)
如果你想用C重新排序B:
$ git rebase -i HEAD~2
pick 1f9133d B
pick 33f41be C
Run Code Online (Sandbox Code Playgroud)
您只需将它们重新排序为:
pick 33f41be C
pick 1f9133d B
Run Code Online (Sandbox Code Playgroud)
完成写作后,请参阅短信:
$ git shortlog
(3):
A
C
B
Run Code Online (Sandbox Code Playgroud)
您可以通过重新排序对所有提交执行相同的操作.这就像你所看到的就是你得到的,这很酷:)
Paŭ*_*ann 23
试试这个:
git reset --hard A
git cherry-pick C
git cherry-pick B
git cherry-pick D
Run Code Online (Sandbox Code Playgroud)
可能有办法git rebase,但我真的不明白.
请参阅如何以非交互方式运行git rebase --interactive?以非交互方式使用git rebase --interactive.
然后,如果您有重新排序提交的正式标准,您可以编写脚本,例如参见确实压平git merge以按原始提交日期重新排序提交.