2017-07-24 1 views
1

Je crée une nouvelle branche (pj2/new-register-feature) depuis la branche [dev-project2] et j'ai créé une requête pull vers la branche [dev-project2]. (tirer la requête 1). Ensuite, continuons l'action rebase [dev-project2] vers [dev-project1] et poussons force [dev-project2] branche après rebase. Mais quand je revois [pull request 1] comme ci-dessus, il y a eu beaucoup de commit sur [pull request 1] après avoir rebasé la branche [dev-project2] vers [dev-project1].Git et gestion rebase des branches

Alors, pourriez-vous me aider à expliquer et comment mettre à jour [demande de traction 1] pour ne voir commettre des [PJ2/nouveau-registre-fonction] qui créent la demande de traction

+0

Je l'ai résolu. C'est facile à résoudre. Rebase seulement [pj2/new-registry-feature] vers la branche [dev-project2]. Mais pourriez-vous m'aider à l'expliquer via le graphique d'image de la branche pour ce problème. Merci beaucoup – maolddv

Répondre

3

Voici comment je compris votre question (s'il vous plaît laissez-moi savoir si je raté quelque chose):

Vous avez commencé à partir de:

--A--B--C--D--E--F--G--H <- dev-project1 
     \ 
     \-c--d--e--f--g <- dev-project2 
       \ 
       \-p--q--r <- pj2/new-register-feature 

et a créé une demande de traction pour fusionner pj2/new-register-feature en dev-project2.

Ensuite, vous rebaser dev-project2 sur dev-project1.

Avec le rebasage terminé, le graphique ressemble maintenant à:

--A--B--C--D--E--F--G--H <- dev-project1 
     \     \ 
     \-c--d--e-[f]-[g] \-c'--d'--e'--f'--g' <- dev-project2 
       \ 
       \-p--q--r <- pj2/new-register-feature 

Ce que vous observez dans la demande de fusion est:

  • au lieu de voir: p--q--r comme l'histoire de votre branche (WRT dev-project2),
  • vous voyez maintenant c--d--e--p--q--r

Si vous voulez restaurer quelque chose plus proche du graphe initial, vous devez changer la base pj2/new-register-feature au-dessus de e' (qui est: la version rebasées du point fourche d'origine entre pj2/new-register-feature et dev-project2).

0

Je vais essayer de l'expliquer sans image

Après avoir rebasculé projet2 à projet1, vous modifiez tous les commits dans projet2 (au moins leur hachage) comme le rebase les place après les validations dans le projet1. Dans ce cas, vos validations de project2 et de nouveaux-enregistrement-fonctionnalité sont complètement différentes et vous voyez tous ces commits.

Lisez le https://git-scm.com/book/en/v2/Git-Branching-Rebasing pour plus de données, ils expliquent ce qui se passe lorsque vous rebassez.