comment réordonner les commits en Git de manière non interactive

Quelle(s) commande (s) non interactive (s) de git permet (NT) de passer d'avant à après?

avant:

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

après:

A---C'---B'---D'
31
demandé sur John Vandenberg 2011-02-13 01:34:21

3 réponses

dans votre cas, vous pouvez rebase interactive: git rebase -i HEAD~4 alors vous pouvez tout simplement réordonner vos choix

par exemple permet d'ajouter trois fichiers supplémentaires à notre branche:

git add A
git commit -m "A"

git add B
git commit -m "B"

git add C
git commit -m "C"

votre shortlog sera:

$ git shortlog
 (3):
      A
      B
      C

si vous voulez réordonner B avec C:

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

il suffit de re-commander à:

pick 33f41be C
pick 1f9133d B

après que vous avez fini d'écrire, voir le shortlog:

$ git shortlog
 (3):
      A
      C
      B

vous pouvez faire la même chose avec tous les commits en ré-ordonnant. C'est comme ce que vous voyez est ce que vous obtenez, ce qui est plutôt cool :)

38
répondu Mohamed Mansour 2017-05-31 17:14:04

essayez ceci:

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

il y a peut-être un moyen avec git rebase , mais je ne l'ai pas vraiment compris.

23
répondu Paŭlo Ebermann 2014-10-24 20:22:14

Voir Comment puis-je exécuter git rebase --interactive non interactif? pour utiliser git rebase --interactif de manière non interactive.

alors, si vous avez des critères formels pour réordonner des commits, vous pouvez script que, voir par exemple vraiment aplatir une fusion git pour réordonner des commits par la date de commit originale.

5
répondu pfalcon 2017-05-23 11:47:27