J'ai effectué plusieurs validations sur différents fichiers, mais jusqu'à présent, je voudrais pousser vers mon référentiel distant uniquement une validation spécifique.
Est-ce possible?
J'ai effectué plusieurs validations sur différents fichiers, mais jusqu'à présent, je voudrais pousser vers mon référentiel distant uniquement une validation spécifique.
Est-ce possible?
Réponses:
Pour remonter un commit donné, vous pouvez écrire:
git push <remotename> <commit SHA>:<remotebranchname>
fourni <remotebranchname>
existe déjà sur la télécommande. (Si ce n'est pas le cas, vous pouvez l'utiliser git push <remotename> <commit SHA>:refs/heads/<remotebranchname>
pour le créer automatiquement.)
Si vous voulez pousser un commit sans pousser les commits précédents, vous devez d'abord utiliser git rebase -i
pour réorganiser les commits.
git push <remotename> <commit SHA>:<remotebranchname>
travaux. l'astuce consiste à le combiner avec git rebase -i
pour déplacer le commit que vous voulez en tant que premier commit, et à spécifier que commit-sha
git push <remotename> <commit SHA>:refs/heads/<new remote branch name>
. Après cela, appuyez sur comme décrit dans la réponse.
git push origin HEAD~1:master
.
-f
drapeau.
Les autres réponses manquent sur les descriptions de réorganisation.
git push <remotename> <commit SHA>:<remotebranchname>
poussera un seul commit, mais ce commit doit être le plus ancien de vos commits locaux, non poussés, à ne pas confondre avec le top, first ou tip commit, qui sont toutes des descriptions ambiguës à mon avis. Le commit doit être le plus ancien de vos commit, c'est-à-dire le plus éloigné de votre commit le plus récent. Si ce n'est pas la plus ancienne validation, toutes les validations de votre SHA local, non poussé le plus ancien vers le SHA spécifié seront poussées. Pour réorganiser les validations, utilisez:
git rebase -i HEAD~xxx
Après avoir réorganisé la validation, vous pouvez la pousser en toute sécurité vers le référentiel distant.
Pour résumer, j'ai utilisé
git rebase -i HEAD~<number of commits to SHA>
git push origin <post-rebase SHA>:master
pour pousser un seul commit sur ma branche maître distante.
Références:
Voir également:
Je suggère d'utiliser git rebase -i
; déplacez le commit que vous souhaitez pousser vers le haut des commits que vous avez effectués. Ensuite, utilisez git log
pour obtenir le SHA du commit rebasé, vérifiez-le et poussez-le. Le rebase aura fait en sorte que tous vos autres validations soient désormais des enfants de celui que vous avez poussé, donc les futures poussées fonctionneront bien aussi.
git log
étape?
Cherry-pick fonctionne mieux que toutes les autres méthodes tout en poussant un commit spécifique.
La façon de le faire est:
Créer une nouvelle branche -
git branch <new-branch>
Mettez à jour votre nouvelle succursale avec votre succursale d'origine -
git fetch
git rebase
Ces actions vous assureront que vous avez exactement les mêmes éléments que votre origine.
Choisissez le sha id
que vous voulez faire pousser -
git cherry-pick <sha id of the commit>
Vous pouvez l'obtenir sha id
en exécutant
git log
Poussez-le à votre origine -
git push
Courez gitk
pour voir que tout ressemble à ce que vous vouliez.
git rebase -i
sera la solution idéale comme suggéré dans les solutions ci-dessus. Cherry pick ne doit être utilisé que lorsque vous souhaitez dupliquer la validation.
Je crois que vous devriez "git revenir" à cet engagement, puis le pousser. Ou vous pouvez effectuer cherry-pick
une validation dans une nouvelle branche et la transmettre à la branche du référentiel distant. Quelque chose comme:
git branch onecommit
git checkout onecommit
git cherry-pick 7300a6130d9447e18a931e898b64eefedea19544 # From the other branch
git push origin {branch}
cherry-pick
valider.
Vous pouvez également, dans un autre répertoire: