Je suis nouveau à git et j'essaie de m'envoyer la tête autour de ses concepts. En conséquence, j'ai des questions de base. S'il vous plaît pardonner ma naïveté. J'ai cherché Internet mais a fini par devenir plus confus. Voici mes questions: -
$ git log -n 10 --oneline 170daa2 (HEAD -> master, origin/master, origin/HEAD) Revert "Undo Pull request from feature branch test" e3f0714 Revert pull request test This reverts commit c6b3b1a c6b3b1a Revert commit b72e92e Undo Pull request from feature branch test 3077d10 (origin/feature/test1, feature/test1) First commit 1ba77e8 Updated test1 8fceee2 Revert Commit 1 ecddd63 Test for remote status 6c5a094 Cherry Pick 1 3b66732 Fixed conflict $ git log -n 6 --oneline feature/test1 3077d10 (origin/feature/test1, feature/test1) First commit 1ba77e8 Updated test1 8fceee2 Revert Commit 1 ecddd63 Test for remote status 6c5a094 Cherry Pick 1 3b66732 Fixed conflict
comme vu d'en haut, lorsque je fais Comment supprimer de commettre une télécommande code> code> forte> branche? - Depuis que je commence à commencer avec Git, il peut être possible que j'ai posé une mauvaise question. De toute façon, veuillez excuser ma naïveté.
Toute aide est appréciée. P> p> Git journal code> tout en étant sur le maître
branche code> (première sortie ci-dessus) Pourquoi cela montre-t-il aussi commet mon
Fonctionnalité Code> Branche (
Feature / Test1 Code>) Avec ceux de mon maître?
Quand j'ai explicitement spécifié le
branche dans le journal git, il montre alors les commits relatifs à cela
branche seulement, non? Est-ce parce que
git code> montrera tous les engagements
(indépendamment de toute branche) combinée ensemble dans l'ordre chronologique
? Quelqu'un peut-il s'il vous plaît expliquer? P> LI>
Supposons que j'ai faite 2 code>
commits code> sur
fonction code> branche et fusionné sur
maître distant code> via une traction
demande.
Maintenant, je me rends compte que ce sont mauvais comme des commits et je veux nettoyer
et retour à l'état où mon maître distant (et le
Les branches maître locales étaient avant l'approbation de la demande de traction. je
sais que je pourrais utiliser:
GIT RESET - HEAD ~ 2 CODE>
Pour vous débarrasser de ces 2 commits sur le maître local code> code>
branche, mais comment puis-je m'en débarrasser de la réinitialiser code> est utilisé pour les engagements locaux tandis que
revenir code> est utilisé pour les engagements distants? Quelle est la différence entre ces 2 commandes? et comment résoudre ma question - p>
réinitialiser code> maître localement, puis "forcer la poussée"
Cet état à la maîtrise distante en exécutant:
git push origine + maître code>? Est-ce une approche correcte?
Ou li>
git revert -m 1
3 Réponses :
git revert -m 1 <commit-hash> git push -u origin master the -m 1 is needed because your commit is actually lives on 2 diffrent branches (master and feature/test1) once you merged it. So you need to tell git what directions to choose when reverting the commit.
Lequel entre git reset --hard
git revert -m 1
git reset --hard code> pour local, non?
N'utilisez pas --force. Juste pas. Git Revert devrait être votre choix
OK pour répondre brièvement à votre question et simplement: P>
Si vous souhaitez corriger une erreur effectuée sur la branche distante, procédez comme suit: P>
Pour vérifier tous vos engagements (je sais que vous savez que) p>
`GIT RESET --HARD P>
Assurez-vous que vous êtes toujours vérifié sur Master et: P>
et voila, vous avez terminé! Cependant, assurez-vous simplement que si certains autres gars retiraient à nouveau de Master, ils doivent GIT Checkout Master CODE> P>
Git journal --Oneeline code> p>
git push --force code> p>
Git Tirez-le --rebase CODE> ou sinon leur
Git Tirez code> échouera si elles étaient déjà sur l'ancien référentiel. P>
Merci pour votre réponse. Pourriez-vous également préciser pourquoi Git Journal CODE> sur la branche principale affiche également les engagements de ma branche de fonctionnalité en plus des commits de la branche principale ??
Tout d'abord, vous devez comprendre quelle branche est. Une succursale est en fait une série de commits, où la tête pointe vers une commission spécifique. Donc, pour répondre à votre question, ils montrent sûrement parce que vous avez vérifié la branche de fonctionnalité de la branche principale.
Ce qui signifie que, si vous avez un maître de succursale composé de trois commits A, B et C et que vous décidez de vérifier une branche de fonctionnalité de la succursale principale en ce moment, votre agence de fonctionnalité aura également les trois commises A, B et C. Donc, en ce moment, ils sont les mêmes.
Une fois que vous avez commencé à vous engager sur la branche Fonction, vous décidez par exemple de faire quelques modifications, puis de vous engager votre comité d, votre branche de fonctionnalité disposera d'une branche B et C. B et C.
C'est donc ce qui s'est passé exactement dans votre cas, vous cédez à partir d'une branche principale vers une succursale et que vous voyez A, B et C dans votre branche de fonctionnalité, car ils viennent de la branche principale.
Vous devez comprendre quelque chose, qu'un commit n'est rien d'autre que des changées, vous ne pouvez pas porter cela, vous ne pouvez pas vous commettre et me le donner et me dire que je vérifie ce que j'ai fait, car je n'ai pas votre histoire précédente à partir de laquelle Ce commit a été créé.
J'aimerais également expliquer quelque chose lorsque vous rebasez, une fois que vous avez rebasé ou modifiez votre historique de validation, vous ne modifiez pas les commits elle-même, vous modifiez uniquement l'historique de validation. Par exemple, vous décidez de votre branche principale pour modifier COMMITE B, par exemple, vous voulez changer le nom que vous avez donné à ce fait, bien dans ce cas, en tant que débutant, vous penserez que vous n'avez changé que le nom, bien ce problème, car En modifiant le nom de validation, vous modifiez également le GIGIT HASH de B, alors il s'agit maintenant de B ', et étant donné que c dépends sur B, alors c ne resterez pas c, il deviendra c'
et le témoin de validation de C changé également, alors la branche principale devient A, B 'et C'
Si vous devez supprimer le commit (Bad Code ou autre), vous revenez simplement à la validation juste avant puis copiez le hachage (SHA-COMMIT): P>
1) 2) 3) Ce message de validation est un exemple libre de la modifier: p>
4) Maintenant, votre dernier commit dans la branche principale est sur le COMMIS, vous choisissez P> GIT RESET --HARD SHA-COMMIT CODE> P>
git reset --soft tête @ {1} code> p>
GIT COMMT -M "revenant à l'état du projet à SHA-COMMIT" CODE> P>
GIT Push Origor Master Code> P>
Je ne pense pas que cela fonctionnera comme prévu, car les mauvais commits ont déjà été poussés au maître distant. Corrigez-moi si j'ai tort, s'il-vous plait
C'est la solution pour le mauvais commit déjà poussé dans le maître
S'il vous plaît pouvez-vous spécifier exactement ce que vous voulez faire? Je veux dire dans l'exemple que vous avez fourni, que voulez-vous atteindre exactement? CZ U a posé une question générale et si vous posez une question générale, vous obtiendrez une réponse générale, et si vous êtes débutant, je ne pense pas que la réponse générale vous aidera. Donc, si vous pouvez particulariser votre question et spécifier votre objectif, ce serait génial.
Voici votre réponse Buddy: Stackoverflow.com/Questtions/7099833/...
@ Alan- Mon maître distant a été fusionné avec de mauvais commits de ma branche de fonctionnalité par une demande de traction. Comment puis-je revenir au Master distant à son état précédent .. Les engagements dans l'exemple sont peu nombreux commits au hasard, j'ai fait des tests.
Si vous souhaitez supprimer commet une branche distante, vous avez répondu à vous-même vous-même, juste
git reset --hard code> et
git push -force code> si vous êtes sur la même branche