2017-07-02 4 views
0

Je tente de réécrire mon histoire dans un dépôt git avec un succès modéré jusqu'à présent. J'ai essayé d'utiliser le rebasing pour me débarrasser de l'énorme fichier dans tous les commits et j'ai dû faire quelque chose de mal parce que je me suis retrouvé avec cette histoire de forme bizarre.Git réécrire l'histoire (rebase ancienne branche?)

* 0758bb3 - (HEAD -> master, origin/master, origin/HEAD) 
|\ 
| * 1ff4a51 
| * f33555f 
(... a bunch of commits in the right-hand-size branch only) 
| * af4b7bf 
| * a9bf8d0 
| * f22fae8 
* | 68bd9eb 
* | 2e29133 
|/ 
* fbef4bf 

Je voudrais le transformer en:

* 0758bb3 - (HEAD -> master, origin/master, origin/HEAD) 
* 1ff4a51 
* f33555f 
(...) 
* af4b7bf 
* a9bf8d0 
* f22fae8 
* 68bd9eb 
* 2e29133 
* fbef4bf 

J'imagine que la façon de faire devrait ressembler un peu comme

git checkout f22fae8 
git rebase 68bd9eb 
??? 
git push --force origin master 

Mais compte tenu du peu que je comprends de « rebasage "En ce moment, je n'étais pas capable de saisir l'information existante pour le faire. Je m'excuse si la question a déjà été répondue quelque part, je ne l'ai pas trouvée (probablement parce que je ne vois pas quels mots devraient être utilisés pour décrire ce scénario: /). Un grand merci à tous ceux qui pourraient m'aider :) :)

+0

est-ce acceptable pour réécrire la branche publique (comme commit changement de hachage)? si oui, alors rebase, si non, vous pouvez simplement faire la fusion des branches. – chenrui

Répondre

0

Je n'ai aucune idée de ce que vous essayez de faire ci-dessus. Si vous fusionnez la branche et que cela ressemble à ce qui précède, vous avez déjà ce que vous cherchez. Mais si vous voulez que le résultat soit différent en utilisant rebase, vous aurez des commits entièrement différents. Si vous êtes en train de rebaser, vous créez essentiellement de nouveaux commits qui sont identiques aux commits qui existaient auparavant. Alors alors commettre l'histoire ne sera pas la même chose. Voici un exemple qui convertirait la structure ci-dessus à ce que vous cherchez - mais avec de nouveaux commits.

// First set up another branch where you can safely rebase 

git checkout fbef4bf 
git checkout -b rebase-point 

// now switch to the place you want to rebase from: 

git checkout master 
git rebase rebase-point  

// if satisfied, set the master branch to point to the 0758bb3 commit equivalent (remember we are rebasing so it won't be the same commit). 

git reset --hard rebase-point