web-dev-qa-db-fra.com

Git Push ne fera rien (tout est à jour)

J'essaie de mettre à jour un référentiel Git sur GitHub. J'ai fait un tas de modifications, les ai ajoutées, validées puis 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 référentiel je m'attendais.

Pourquoi Git me dit-il que le référentiel est à jour alors que des validations locales ne sont pas visibles sur le référentiel?

  [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)
87
Jamie Wong

git Push ne pousse pas toutes vos branches locales: comment pourrait-il savoir à quelles branches distantes les pousser? Il ne pousse que les branches locales configurées pour pousser vers une branche distante donnée.

Sur ma version de Git (1.6.5.3), lorsque je lance git remote show Origin, les branches configurées pour le Push sont affichées:

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

Q. Mais je pourrais pousser à master sans me soucier de tout ça!

Lorsque vous git clone, il configure par défaut votre branche master locale sur Push vers la branche master de la télécommande (appelée localement Origin/master). Ainsi, si vous ne validez que sur master, un simple git Push restitue toujours vos modifications.

Cependant, à partir de l'extrait de sortie que vous avez posté, vous êtes sur une branche appelée develop, qui, je suppose, n'a pas été configurée pour pousser à rien. Donc, git Push sans arguments ne sera pas valide sur cette branche.

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

Q. Alors, comment puis-je pousser mes commits?

Si ce que vous voulez faire est de mettre vos modifications de develop dans Origin/master, alors vous devriez probablement les fusionner dans votre master locale puis appuyez sur:

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

Si vous voulez créer une branche develop sur la télécommande, distincte de master, fournissez les arguments pour git Push:

git Push Origin develop

Cela va: créer une nouvelle branche sur la télécommande appelée develop; et mettez cette branche à jour avec votre branche develop locale; et définissez develop sur Push to Origin/develop pour qu'à l'avenir, git Push sans arguments sera Push develop automatiquement.

Si vous voulez envoyer votre develop locale à une branche distante appelée quelque chose autre quedevelop, vous pouvez dire:

git Push Origin develop:something-else

Cependant, ce formulaire (non) permet à develop de toujours utiliser Push to Origin/something-else à l'avenir; c'est une opération ponctuelle.

129
Sam Stokes

Cela m'est arrivé lorsque mon application SourceTree est tombée en panne lors de la mise en place. Et sur la ligne de commande, il semblait que l'ancien 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 devrez peut-être définir la branche.

git Push --all Origin master

N'oubliez pas que cela suffit si vous n'avez pas effectué de branche ou de ce genre. Dans ce cas, assurez-vous que vous appuyez sur la branche appropriée, telle que git Push Origin develop.

21
Vik

Essayer:

git Push --all Origin
13
asandroq

S'il vous plaît essayez d'aller au dernier commit et faites ensuite git Push Origin HEAD:master.

8
uruapanmexicansong

En ce moment, il semble que vous soyez sur la branche develop. Avez-vous une branche de développement sur votre origine? Sinon, essayez git Push Origin develop. git Push fonctionnera dès qu’il aura connaissance d’une branche de développement sur votre origine.

Pour en savoir plus, je regarderais les pages de manuel git-Push , en particulier, la section exemples.

4
theIV

Pour être précis, si vous souhaitez 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 demande d'extraction de créer dans une nouvelle branche locale, puis de pousser cette branche vers distante. Pour cela, vous devez indiquer où vous souhaitez appliquer vos modifications à distance ... .. Vous pouvez le faire en mentionnant distant au moment de l'envoi.

git Push Origin develop // It will create a remote branch with name "develop".

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

git Push Origin develop:some-other-name
2
Manu

J'ai essayé de nombreuses méthodes, y compris celles définies ici . Ce que j'ai obtenu est, 

  • Assurez-vous que le nom du référentiel est valide. Le meilleur moyen est de copier le lien depuis le site du référentiel et de le coller dans git bash.

  • Assurez-vous que vous avez validé les fichiers sélectionnés.

    git commit -m "Your commit here"
    
  • Si les deux étapes ne fonctionnent pas, essayez

    git Push -u -f Origin master

1
Developer Here

Assurez-vous également que vous appuyez sur la branche appropriée.

1
Brian

Pour mon cas, aucune des autres solutions n'a fonctionné. Je devais faire une sauvegarde des nouveaux fichiers modifiés (avec git status) et exécuter un git reset --hard. Cela m'a permis de réaligner avec le serveur distant. Ajout de nouveaux fichiers modifiés et exécution

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

A fait le tour. J'espère que cela aide quelqu'un, en tant que solution de "dernière chance".

1
Andrea

Cela m'est arrivé lorsque j'ai ^C au milieu d'un git Push envoyé à GitHub. GitHub n'a toutefois pas montré que les modifications avaient été apportées.

Pour résoudre ce problème, j'ai apporté une modification à mon arbre de travail, j'ai validé, puis de nouveau activé. Cela a fonctionné parfaitement bien.

1
helsont

Cela m'est arrivé Je viens de ré-engager les changements, puis ça a poussé.

0
user742102

Merci à Sam Stokes. Selon sa réponse, vous pouvez résoudre le problème de différentes manières (j'ai utilisé cette méthode). Après avoir mis à jour votre répertoire de développement, vous devez le réinitialiser.

git init

Ensuite, vous pouvez commettre et pousser les mises à jour à maîtriser

0
Nadir Hajiyev

Au lieu de cela, vous pouvez essayer ce qui suit. Vous n'êtes pas obligé d'aller à master; vous pouvez forcer directement les modifications de votre branche elle-même.

Comme expliqué ci-dessus, lorsque vous créez une base, vous modifiez l'historique de votre branche. En conséquence, si vous essayez de faire un git Push normal après une base, Git la rejettera car il n’existe pas de chemin direct entre la validation sur le serveur et la validation sur votre branche. Au lieu de cela, vous devrez utiliser le drapeau -f ou --force pour dire à Git que oui, vous savez vraiment ce que vous faites. Lorsque vous effectuez des pressions forcées, il est vivement recommandé de définir votre paramètre Push.default config sur simple, qui est la valeur par défaut dans Git 2.0. Pour vous assurer que votre configuration est correcte, exécutez:

$ git config --global Push.default simple

Une fois que c'est correct, vous pouvez simplement lancer:

$ git Push -f

Et vérifiez votre demande de traction. Il devrait être mis à jour!

Aller au bas de Comment redéfinir une demande d'extraction pour plus de détails.

0
JumpMan