131 votes

git - Votre branche est en avance sur 'origin/master' de 1 commit

Je suis novice en matière de git et je travaille sur git.

J'ai ajouté quelques fichiers dans git :

git add <file1>
git add <file2>

puis j'ai voulu pousser cette révision, mais j'ai fait une erreur.

git commit

Ainsi, les fichiers que j'ai modifiés ne seront pas examinés.
Maintenant, si j'entre la commande :

git status

il dit

# On branch master
# Your branch is ahead of 'origin/master' by 1 commit.
#
nothing to commit (working directory clean)

Je veux revenir sur cette livraison et je veux pousser ces fichiers pour révision plutôt que pour livraison. Quelqu'un peut-il me dire comment je peux faire cela ?

0 votes

Si vous souhaitez annuler votre livraison - jetez un coup d'oeil à la page question similaire .

1 votes

Je ne sais pas ce que vous utilisez pour les revues de code. La réponse simple à la question simple de savoir comment annuler un engagement est la suivante git reset HEAD^

0 votes

J'ai réinitialisé HEAD. Mais quand j'ai essayé de pousser, il m'a dit D file1.py quand j'ai essayé de pousser, il m'a dit que votre branche est en avance sur origin/master de 1 commit.

146voto

tdammers Points 14202

Vous ne pouvez pas pousser quelque chose qui n'a pas encore été engagé. L'ordre des opérations est le suivant :

  1. Faites votre monnaie.
  2. git add - cela met en scène vos changements pour les commettre
  3. git commit - ceci commet vos changements localement
  4. git push - cela pousse les changements que vous avez effectués vers un site distant

Si vous poussez sans vous engager, rien ne sera poussé. Si vous commitez sans ajouter, rien n'est commis. Si vous ajoutez sans commiter, rien du tout ne se passe, git se souvient simplement que les changements que vous avez ajoutés doivent être pris en compte pour le prochain commit.

Le message que vous voyez (votre branche est en avance de 1 commit) signifie que votre dépôt local a un commit qui n'a pas encore été poussé.

En d'autres termes : add y commit sont des opérations locales, push , pull y fetch sont des opérations qui interagissent avec une télécommande.

Puisqu'il semble y avoir un flux de travail de contrôle de source officiel en place là où vous travaillez, vous devriez demander en interne comment cela devrait être traité.

6 votes

Aha ok. donc ça veut dire qu'après le commit, je dois le pousser

4 votes

Bonne explication - la personne qui pose la question ne veut probablement pas vraiment revenir en arrière sur le commit, mais plutôt faire en sorte que des personnes révisent le commit avant de le pousser vers la page d'accueil. origin dépôt. Je vous recommande également de lire quelques-uns des tutoriels/intros à git sur git-scm.com/documentation

2 votes

Lorsque mon statut git indique "Votre branche est en avance sur 'origin/develop' de 1 commit.", comment puis-je voir que les fichiers ont été modifiés ? git diff ne semble pas faire grand chose.

83voto

juanitofatas Points 1651

git reset HEAD^ --soft (Sauvegarder vos modifications, retour au dernier commit)

git reset HEAD^ --hard (Suppression des modifications, retour au dernier commit)

5 votes

Quelle est la signification de l'HEAD avec une carotte '^' ? J'ai vu qu'il était aussi écrit sans carotte.

0 votes

Je pense que la carotte renverse d'un commit (donc si vous devez sauvegarder 3 commits, alors vous pourriez exécuter la commande 3 fois). De même, vous pourriez exécuter git reset HEAD~ --hard pour rétablir tous les commits vers le HEAD

34voto

Shep Points 2086

Si vous voulez juste jeter les changements et revenir au dernier commit (celui que vous vouliez partager) :

git reset --hard HEAD~

Vous pouvez vérifier pour être absolument sûr que vous voulez ceci ( git log ), car vous perdrez tous les changements.

Une alternative plus sûre est d'exécuter

git reset --soft HEAD~ # reset to the last commit
git stash              # stash all the changes in the working tree 
git push               # push changes 
git stash pop          # get your changes back

23voto

karlingen Points 975

J'ai résolu le problème en lançant un simple :

git pull

Rien de plus. Maintenant ça se voit :

# On branch master
nothing to commit, working directory clean

0 votes

Cela peut poser un problème s'il y a plus d'une branche créée, ce qui n'est pas nécessaire.

1 votes

Vous êtes retourné à votre état distant et avez perdu votre dernier travail :D

4voto

Bnjmn Points 1384
git reset HEAD <file1> <file2> ...

supprime les fichiers spécifiés de la prochaine livraison

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X