2012-12-28 8 views
4

J'utilise git flow, et sans réfléchir, j'ai envoyé du code à la mauvaise branche (fonctionnalité), puis je l'ai publié.Comment annuler les modifications à l'aide de git

Je dois prendre ce code, retirez-le de dire, branche 1, et le déplacer dans la branche correcte, qui est la branche 2.

Tous les fichiers sont stockés dans un dossier qui pourrait rendre les choses beaucoup plus facile, je suis juste incertain sur la façon de s'y prendre.

par ex.

Branch 1 { 
    Commit That contains { 
    ./path/to/files_that_should_be_here 
    ./path/to/files_that_need_to_be_in_branch_2 
    } 
} 

Branch 2 { 
    No Commits. 
} 

Répondre

1

pour déplacer l'engager à y consacrer de branche droite

git cherry-pick commithash 

dans la branche que vous souhaitez déplacer engager.

Et pour enlever la commettras de cette branche utilisation

git reset --hard HEAD~1 
+2

Cela ne résout pas le problème, car la réinitialisation ne se produit que sur le référentiel local. Les fichiers commit et push sont toujours dans le référentiel distant de la branche. – LopSae

+0

vous pouvez toujours pousser les changements à la branche distante en utilisant 'git push origin branchname' – amitchhajer

5

Si vous ne publiez pas votre changement, meilleure façon de le faire est de tuer dernier commit dans branch1 (note: cela va complètement tuer tout ce qui dernier commit a introduit):

git checkout branch1 
git reset --hard HEAD~ 

puis checkout pour corriger la branche et valider votre changement là. Si vous avez publié des modifications, vous pouvez toujours tuer la dernière validation, mais vous devrez alors git push --force, ce que vous n'êtes peut-être pas autorisé à faire, et même si vous l'avez fait, cela peut causer beaucoup de peine pour les autres utilisateurs de ce référentiel.

Au lieu de cela, il vous suffit de revenir mauvais changement:

git revert <bad_commit> 

et refaire dans la branche correcte.

+0

Il est publié, alors que recommanderiez-vous? –

+1

Si vous êtes le seul utilisateur ou que les autres utilisateurs sont peu nombreux et que personne n'a rien fait depuis votre commit, et que vous avez la permission de 'git push --force', alors tuez le dernier commit et appuyez sur --force. Sinon, vous n'avez pas d'autre choix que d'utiliser 'git revert' ou un autre commit qui rétablit les effets de votre mauvais commit. – mvp

+0

cela fonctionnera-t-il en conjonction avec le flux git? –

Questions connexes