114 votes

Git push ne fait rien (tout est à jour)

J'essaie de mettre à jour un dépôt Git sur GitHub. J'ai effectué un certain nombre de modifications, je les ai ajoutées, puis j'ai essayé de faire une mise à jour du dépôt Git sur GitHub. git push . La réponse me dit que tout est à jour, mais il est clair que ce n'est pas le cas.

git remote show origin

répond avec le dépôt auquel je m'attends.

Pourquoi Git me dit que le dépôt est à jour alors qu'il y a des commits locaux qui ne sont pas visibles sur le dépôt ?

  [searchgraph]  git status
# On branch develop
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#       Capfile
#       config/deploy.rb
nothing added to commit but untracked files present (use "git add" to track)

  [searchgraph]  git add .

  [searchgraph]  git status
# On branch develop
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#       new file:   Capfile
#       new file:   config/deploy.rb
#

  [searchgraph]  git commit -m "Added Capistrano deployment"
[develop 12e8af7] Added Capistrano deployment
 2 files changed, 26 insertions(+), 0 deletions(-)
 create mode 100644 Capfile
 create mode 100644 config/deploy.rb

  [searchgraph]  git push
Everything up-to-date

  [searchgraph]  git status
# On branch develop
nothing to commit (working directory clean)

0 votes

Assurez-vous également que vous poussez vers la bonne branche.

155voto

Sam Stokes Points 7118

git push ne pousse pas toutes vos branches locales : comment saurait-il vers quelles branches distantes les pousser ? Il ne pousse que les branches locales qui ont été configurées pour être poussées vers une branche distante particulière.

Sur ma version de Git (1.6.5.3), lorsque j'exécute git remote show origin il imprime en fait les branches qui sont configurées pour le push :

Local refs configured for 'git push':
  master pushes to master (up to date)
  quux   pushes to quux   (fast forwardable)

Q. Mais je pourrais pousser jusqu'à master sans se soucier de tout cela !

Quand vous git clone par défaut, il met en place votre master à pousser vers la branche master (appelé localement origin/master ), donc si vous ne commettez que sur master alors un simple git push repoussera toujours vos modifications.

Cependant, d'après l'extrait de sortie que vous avez posté, vous êtes sur une branche appelée develop qui, je suppose, n'a pas été configuré pour pousser vers quoi que ce soit. Donc git push sans arguments ne poussera pas les commits sur cette branche.

Quand il est dit "Tout est à jour", cela signifie "toutes les branches que vous m'avez dit comment pousser sont à jour".

Q. Comment puis-je pousser mes commits ?

Si ce que vous voulez faire est de mettre vos changements de develop en origin/master alors vous devriez probablement les fusionner dans votre fichier local master puis appuyez sur ce bouton :

git checkout master
git merge develop
git push             # will push 'master'

Si ce que vous voulez, c'est créer un develop sur le site distant, séparément de master puis fournir des arguments à git push :

git push origin develop

Cela va : créer une nouvelle branche sur le site distant appelée develop ; y de mettre cette branche à jour avec votre develop branche ; y set develop de pousser à origin/develop pour qu'à l'avenir, git push sans arguments sera pousser develop automatiquement.

Si vous voulez pousser votre develop vers une branche distante appelée quelque chose autre que develop alors vous pouvez dire :

git push origin develop:something-else

Cependant, cette forme ne le fera pas mettre en place develop de toujours pousser à origin/something-else à l'avenir ; c'est une opération ponctuelle.

0 votes

Merci beaucoup, votre git push origin develop:something-else a donné la réponse à la question que je n'ai pas pu obtenir pendant un certain temps.

1 votes

Dans mon cas git push origin x ne configurait toujours pas la branche x pour être poussée dans le futur. Cela était dû à une spécification de poussée spécifique dans le fichier .gitconfig [remote "origin"] qui causait le comportement de git.

0 votes

En utilisant uniquement git push origin J'ai eu ce problème, en utilisant votre exemple git push origin develop et l'adapter à ma branche principale git push origin master le problème a été résolu, merci

34voto

Vik Points 385

C'est ce qui m'est arrivé lorsque mon application SourceTree s'est plantée pendant la mise en scène. Et sur la ligne de commande, il semblait que le précédent git add a été corrompu. Si c'est le cas, essayez :

git init
git add -A
git commit -m 'Fix bad repo'
git push

Pour la dernière commande, vous devrez peut-être définir la branche.

git push --all origin master

Gardez à l'esprit que cela suffit si vous n'avez pas fait de branchement ou autre. Dans ce cas, assurez-vous de pousser dans la bonne branche comme suit git push origin develop .

15voto

asandroq Points 405

Essayez :

git push --all origin

0 votes

Cela pousse les commits vers des branches séparées sur le repo, et non d'une branche vers master.

4voto

theIV Points 12999

Pour l'instant, il semble que vous soyez sur la branche de développement. Avez-vous une branche de développement sur votre origine ? Si non, essayez git push origin develop . git push fonctionnera dès qu'il connaîtra une branche de développement sur votre origine.

En guise de lecture complémentaire, je jetterais un coup d'œil à l'ouvrage suivant Pages de manuel de git-push en particulier, la section des exemples.

0voto

Brian Points 1

Assurez-vous également que vous poussez vers la bonne branche.

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