Git push ne fera rien (tout est à jour))

j'essaie de mettre à jour un dépôt Git sur GitHub. J'ai fait un tas de modifications, ajouté, commis alors tenté de faire un git push . La réponse me dit que tout est à jour, mais ce n'est clairement pas le cas.

git remote show origin

répond avec le dépôt que j'attendais.

pourquoi Git me dit-il que le dépôt est à jour alors qu'il y a des propagations locales 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)
85
demandé sur Peter Mortensen 2010-05-30 01:27:41

13 réponses

git push ne pousse pas toutes les branches locales: comment pourrait-il savoir vers quelles branches éloignées les pousser? Il ne pousse que les branches locales qui ont été configurées pour pousser vers une branche distante particulière.

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

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

Q. Mais je pouvais pousser à master sans me soucier de tout ce!

quand vous git clone , par défaut il configure votre branche locale master pour pousser vers la branche master de la télécommande (localement appelée origin/master ), donc si vous ne commettez que 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é mis en place pour pousser à quoi que ce soit. Si git push sans arguments ne poussera pas les commits sur cette branche.

quand il dit "tout à jour", cela signifie "Toutes les branches que vous m'avez dit comment pousser sont à jour".

Q. Alors comment puis-je pousser mes propagations?

si ce que vous voulez faire est de mettre vos changements de develop dans origin/master , alors vous devriez probablement les fusionner dans votre local master puis pousser que:

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

si ce que vous voulez est de créer une develop branche sur la télécommande, séparée de master , puis fournir des arguments à git push :

git push origin develop

qui va: créer une nouvelle branche sur la télécommande appelée develop ; et mettre cette branche à jour avec votre local develop branche; et ensemble develop pour pousser à origin/develop de sorte que dans l'avenir, git push sans arguments sera push develop automatiquement.

Si vous voulez pousser votre local develop à une branche distante appelée autre que develop , alors vous pouvez dire:

git push origin develop:something-else

cependant, ce formulaire ne sera pas mettre en place develop pour toujours pousser à origin/something-else à l'avenir; il s'agit d'une opération à un coup.

124
répondu Sam Stokes 2018-08-17 17:52:37

cela m'est arrivé quand mon application SourceTree s'est écrasée pendant la mise en scène. Et sur la ligne de commande, il semblait que le précédent git add avait été corrompu. Si c'est le cas, essayez:

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

sur la dernière commande, vous pourriez avoir besoin de mettre la branche.

git push --all origin master

gardez à l'esprit que c'est suffisant si vous n'avez pas fait de branchement ou tout autre de ce genre. Dans ce cas, assurez-vous de pousser vers la bonne direction comme git push origin develop .

19
répondu Vik 2018-08-17 17:56:36

, Essayez:

git push --all origin
13
répondu asandroq 2010-05-29 21:30:03

s'il vous plaît essayer d'aller à la dernière commit et puis faire git push origin HEAD:master .

7
répondu uruapanmexicansong 2018-08-17 18:00:31

en ce moment, il apparaît que vous êtes sur la branche de développement. Avez-vous une branche de développement sur votre origine? Sinon, essayez git push origin develop . git push fonctionnera une fois qu'il connaîtra une branche de développement sur votre origine.

comme autre lecture, je voudrais avoir un regard sur le git-push man pages , en particulier, la section Exemples.

4
répondu theIV 2010-05-29 22:00:42

pour être précis, si vous voulez fusionner quelque chose à maîtriser, vous pouvez suivre les étapes ci-dessous.

git add --all // If you want to stage all changes other options also available
git commit -m "Your commit message"
git push // By default when it clone is sets your origin to master or you would have set sometime with git push -u origin master.

c'est une pratique courante dans le modèle de requête pull créer une nouvelle branche locale et ensuite la pousser à distance. Pour cela, vous devez mentionner où vous voulez pousser vos changements à distance. Vous pouvez le faire en mentionnant à distance au moment de la poussée.

git push origin develop // It will create a remote branch with name "develop".

Si vous souhaitez créer une succursale autre que votre succursale locale nom vous pouvez le faire avec la commande suivante.

git push origin develop:some-other-name
2
répondu Manu 2018-08-17 18:05:18

assurez-vous également que vous poussez à la bonne branche.

1
répondu Brian 2018-08-17 17:54:36

cela m'est arrivé quand je ^C au milieu d'un git push à GitHub. GitHub n'a toutefois pas démontré que les changements avaient été apportés.

pour le réparer, j'ai fait un changement à mon arbre de travail, engagé, puis poussé à nouveau. Cela a fonctionné parfaitement bien.

1
répondu helsont 2018-08-17 17:57:45

dans mon cas, aucune autre solution n'a fonctionné. J'ai dû faire une sauvegarde de nouveaux fichiers modifiés (affichés avec git status ), et lancer un git reset --hard . Cela m'a permis de renouer avec le serveur distant. Ajouter de nouveaux fichiers modifiés, et exécuter

git add .
git commit -am "my comment"
git push

a fait l'affaire. J'espère que cela aidera quelqu'un, comme solution de "dernière chance".

1
répondu Andrea Romagnoli 2018-08-18 22:09:14

merci à Sam Stokes. Selon sa réponse, vous pouvez résoudre le problème de manière différente (j'ai utilisé de cette façon). Après avoir mis à jour votre répertoire develop, vous devriez le réinitialiser

git init

Alors que vous pouvez vous engager et de pousser les mises à jour de maître

0
répondu Nadir Hajiyev 2014-04-07 12:47:56

à la place, vous pouvez essayer ce qui suit. Vous ne devez pas aller à master ; vous pouvez directement forcer les changements de votre branche elle-même.

comme expliqué ci-dessus, lorsque vous faites un rebase, vous changez l'historique de votre branche. En conséquence, si vous essayez de faire un git push normal après un rebase, Git le rejettera parce qu'il n'y a pas de chemin direct entre la propagation sur le serveur et la propagation sur votre branche. Au lieu de cela, vous aurez besoin d'utiliser le -f ou --force drapeau pour dire à Git que oui, vous savez vraiment ce que vous faites. Lorsque vous faites des pushs de force, il est fortement recommandé de configurer votre configuration push.default à simple, ce qui est la valeur par défaut dans Git 2.0. Pour vous assurer que votre configuration est correcte, Lancez:

$ git config --global push.default simple

une fois que c'est correct, vous pouvez simplement exécuter:

$ git push -f

et vérifiez votre demande de pull. Il doit être mis à jour!

aller au bas de comment reformuler une demande de Pull pour plus de détails.

0
répondu JumpMan 2018-08-17 18:00:10

ça m'est arrivé. J'ai juste réengagé les changements, et puis ça a poussé.

0
répondu user742102 2018-08-17 18:01:23
git push origin master
-5
répondu ivans 2010-05-29 21:30:24