web-dev-qa-db-fra.com

Comment combiner deux commits en un seul?

J'ai une branche 'premier projet' avec 2 commits. Je veux me débarrasser de ces commits et les faire apparaître comme un seul commet.

La commande git merge --squash semble prometteur, mais quand j’exécute git merge --squash mon terminal n'indique que des options pour la commande. Quelle est la commande correcte?

Commit 1:
Added 'homepage.html'
Added 'contacts.html'

Commit 2:
Added 'homepage.php'
Added 'homepage.php'
Deleted 'homepage.html'
Deleted 'contacts.html'
66
Don P

Tu veux git rebase -i pour effectuer un rebase interactive .

Si vous êtes actuellement sur votre "commit 1" et que le commit que vous souhaitez fusionner, "commit 2", est le commit précédent, vous pouvez courir git rebase -i HEAD~2 et changez le premier mot de la deuxième ligne de "pick" à "squash". Ensuite, écrivez votre fichier et quittez. Git écrasera votre premier commit dans votre avant-dernier commit.

Notez que ce processus réécrit l’historique de votre branche. Si vous poussez votre code quelque part, vous devrez git Push -f et toute personne partageant votre code devra sauter des étapes pour extraire vos modifications.

Notez que si les deux validations en question ne sont pas les deux dernières validations sur la branche, le processus sera légèrement différent.

109
meagar

Version simple paresseux pour oublieux comme moi:

git rebase -i HEAD~3 ou quel que soit le nombre de commits au lieu de 3.

Tourner cette

pick YourCommitMessageWhatever
pick YouGetThePoint
pick IdkManItsACommitMessage

dans cette

pick YourCommitMessageWhatever
s YouGetThePoint
s IdkManItsACommitMessage

et faites une action où vous appuyez sur esc puis enter pour enregistrer les modifications. [1]

Lorsque l'écran suivant apparaît, supprimez ces lignes # 2 [2] et créez un nouveau message de validation, ou quelque chose du même genre, et faites la même action escapeenter. [1]

Wowee, vous avez moins de commits. Ou tu as tout cassé.


[1] - ou tout ce qui fonctionne avec votre configuration git. Ceci est juste une séquence qui est efficace compte tenu de ma configuration.

[2] - vous verrez des choses comme # this is your n'th commit _ quelques fois, avec vos commits originaux juste en dessous de ces messages. Vous souhaitez supprimer ces lignes et créer un message de validation reflétant les intentions des n validations que vous combinez en 1.

46
Stachu
  1. Consultez votre succursale et comptez la quantité de tous vos commits.
  2. Ouvrez git bash et écrivez: git rebase -i HEAD~<quantity of your commits> (c'est à dire. git rebase -i HEAD~5)
  3. Dans le fichier txt ouvert, changez le fichier pick en squash pour tous les commits, à l'exception du premier, qui est en haut. Pour le premier choix, changez-le en reword (ce qui signifie que vous allez fournir un nouveau commentaire pour ce commit à la prochaine étape) et cliquez sur SAVE! Si vous êtes dans vim, appuyez sur esc, puis enregistrez en saisissant wq! et appuyez sur Entrée.
  4. Fournir un commentaire.
  5. Ouvrez Git et faites "Extraire tout" pour voir les nouvelles modifications.

Terminé

13
user5820972