2013-09-21 3 views
3

Scénario:Git: fusionner les modifications derrière

  • ordinateurs A et B ont chacun cloné un dépôt git de Github.
  • Sur l'ordinateur A, j'apporte des modifications à un référentiel, les valide et les envoie à Github.
  • Sur l'ordinateur B, j'apporte des modifications à d'autres fichiers non liés et à la validation.
  • Sur l'ordinateur B, j'essaie de pousser, mais je ne peux pas parce que j'ai oublié de tirer mes modifications en premier.
  • Sur l'ordinateur B, je tire des modifications, et git crée un "maître de branche de fusion" de github.com:user/repo "commit.
  • Sur l'ordinateur B, j'appuie sur les modifications de Github, mais j'ai un commit "Fusionner" ennuyeux et inutile dans l'historique des validations.

Comment puis-je utiliser git merge pour placer la fusion commit avant tous mes commits qui n'ont pas été poussé? Ce n'est pas grave si cela gâche les SHA des commits non poussés. J'ai besoin de git rebase Quelque chose?

Répondre

3

Simplest façon d'éviter « ennuyeux » commit de fusion:

git pull --rebase 

Cela automatiquement rebasage vos modifications sur l'ordinateur B telle que l'histoire semble être linéaire. Pour plus d'informations sur rebase, regardez this answer.

Si vous avez déjà poussé votre commit de fusion de l'ordinateur B vers github, alors il est trop tard: ce commit de fusion restera là pour toujours. Sinon, vous pouvez toujours rebaser. Mais il est plus facile de l'éviter dans le futur.

1

Si vous voulez git pull a un comportement de rebasage par défaut, vous pouvez aussi mettre dans votre configuration:

git config --global branch.autosetuprebase always 

Cette option dans la configuration définit le comportement de rebasage lorsque vous tirez pour chaque branche. Si vous voulez faire un pull avec une fusion après avoir réglé ceci, vous pouvez le faire avec l'option --no-rebase.

git pull --no-rebase 
Questions connexes