2011-10-31 3 views
1

J'ai coupé l'histoire de ma branche master dans une branche old_stuff, via les conseils de ce Q & A: How do I remove the old history from a git repository?. Pour vous éviter un clic, le processus consiste à greffer la dernière validation de master à la validation racine, sans lui donner de parent, puis à utiliser git filter-branch pour rendre ce changement permanent. Mon dépôt local est maintenant comment il devrait être, avec une courte branche master et une longue branche de l'histoire.Git pousser les modifications apportées par branche de filtre

Mais si je git clone le référentiel, ce commit qui ne devrait pas avoir de parent a le même parent qu'avant. Quand je fais git push -f origin master, je finis avec une branche master avec le commit nouvellement créé à sa tête, mais avec un parent de la validation préalable à master. Donc maintenant j'ai une longue branche old_stuff et une branche master qui est aussi longue qu'une validation. Si c'est pertinent, la télécommande est sur Github.

Comment puis-je dire au référentiel distant et aux autres copies de réviser le parent pour la nouvelle validation? PS: J'ai lu les avertissements sur la façon dont la modification de l'historique d'un référentiel partagé brise les copies d'autres personnes. Je connais les noms des personnes impliquées et je peux leur demander d'accommoder, alors je suis à l'aise pour réviser l'historique de la succursale dans le cas présent.

Répondre

0

Comment puis-je dire au référentiel distant et aux autres copies de réviser le parent pour la nouvelle validation?

Vous .... ne pouvez pas faire cela. Si vous changez le parent d'un commit, vous changez ce commit, avec tout ce qui va avec (new sha1, etc). Il pourrait être plus utile de considérer le «parent» comme un «enfant», en termes de pointage des pointeurs.

Il semble que vous essayiez de réduire votre historique à un commit. Si c'est le cas, passez la commande (heh) git checkout --orphan. Une fois que vous avez fait cela, il s'agit de pointer votre maître (git reset --hard <new orphan branch> sur le maître) et une poussée forcée vers l'origine.

Tout le travail que vos compatriotes ont fait devra être rejoué sur ce nouveau maître; cherry-pick aidera ici.

+0

Merci, cela a fonctionné pour ma situation, et avec beaucoup moins d'agitation que la méthode de greffe et de filtrage. –

Questions connexes