Git Push ne fera rien (tout à jour)

J’essaie de mettre à jour un repository Git sur GitHub. J’ai fait un tas de changements, je les ai ajoutés, je me suis engagé puis j’ai essayé de faire une 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 auquel je m’attends.

Pourquoi Git me dit-il que le référentiel est à jour lorsque des commits locaux ne sont pas visibles sur le référentiel?

  [searchgraph] git status # On branch develop # Untracked files: # (use "git add ..." 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 ..." 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) 

    git push ne git push pas toutes vos twigs locales: comment pourrait-il savoir à quelles twigs distantes les pousser? Il ne fait que pousser les twigs locales qui ont été configurées pour pousser vers une twig distante particulière.

    Sur ma version de Git (1.6.5.3), lorsque j’exécute git remote show origin il git remote show origin en fait les twigs 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 pourrais pousser pour master sans me soucier de tout ça!

    Lorsque vous git clone , il configure par défaut votre twig master locale pour pousser vers la twig master la télécommande (appelée localement origin/master ). Ainsi, si vous ne vous engagez que sur master , une simple git push .

    Cependant, à partir de l’extrait de sortie que vous avez publié, vous êtes sur une twig appelée develop , que je suppose que rien n’a été mis en place pour y parvenir. Donc, git push sans arguments ne poussera pas les commits sur cette twig.

    Quand il est dit “Tout à jour”, cela signifie “toutes les twigs que vous m’avez dit comment pousser sont à jour”.

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

    Si ce que vous voulez faire, c’est d’amener vos modifications à l’ origin/master , alors vous devriez probablement les fusionner dans votre master local, puis les pousser:

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

    Si ce que vous voulez, c’est créer une twig de develop sur la télécommande, séparée de master , fournissez alors des arguments à git push :

     git push origin develop 

    Cela va: créer une nouvelle twig sur la télécommande appelée develop ; et mettre cette twig à jour avec votre agence locale de develop ; et mis en develop pour pousser à l’ origin/develop afin qu’à l’avenir, git push sans arguments poussera automatiquement à se develop .

    Si vous voulez pousser votre develop local vers une twig distante appelée autre chose que develop , vous pouvez dire:

     git push origin develop:something-else 

    Cependant, cette forme ne se develop pour pousser toujours vers l’ origin/something-else à l’avenir; c’est une opération unique.

    Cela m’est arrivé lorsque mon application SourceTree est tombée en panne pendant le transfert. Et sur la ligne de commande, il semblait que le précédent git add avait été corrompu. Si tel est le cas, essayez:

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

    Lors de la dernière commande, vous devrez peut-être définir la twig.

     git push --all origin master 

    Gardez à l’esprit que cela suffit si vous n’avez pas effectué de twigment ou de ce type. Dans ce cas, assurez-vous de pousser vers la bonne twig, comme git push origin develop .

    Essayer:

     git push --all origin 

    S’il vous plaît essayer d’aller à la dernière validation et ensuite faire git push origin HEAD:master .

    En ce moment, il apparaît comme vous êtes sur la twig de développement. Avez-vous une twig de développement sur votre origine? Sinon, essayez de git push origin develop . git push fonctionnera une fois qu’il connaît une twig de développement sur votre origine.

    En lisant plus avant, j’examinerais les pages de manuel de git-push , en particulier la section des exemples.

    Pour être précis, si vous souhaitez fusionner quelque chose à maîsortingser, 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 d’extraction de créer une nouvelle twig locale, puis de pousser cette twig vers la télécommande. Pour cela, vous devez mentionner où vous voulez pousser vos modifications à distance. Vous pouvez le faire en mentionnant à distance au moment de pousser.

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

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

     git push origin develop:some-other-name 

    Assurez-vous également que vous appuyez sur la bonne twig.

    Cela m’est arrivé quand je suis au milieu d’une git push vers GitHub. GitHub n’a toutefois pas montré que les modifications avaient été apscopes.

    Pour y remédier, j’ai modifié mon arbre de travail, puis je l’ai réengagé. Cela fonctionnait parfaitement bien.

    Pour mon cas, aucune des autres solutions n’a fonctionné. J’ai dû faire une sauvegarde des nouveaux fichiers modifiés (affichés avec le 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 

    Fait le tour J’espère que cela aide quelqu’un, en tant que solution de “dernière chance”.

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

     git init 

    Ensuite, vous pouvez valider et transmettre les mises à jour au maître

    Au lieu de cela, vous pouvez essayer ce qui suit. Vous n’avez pas à aller au master ; vous pouvez directement forcer les modifications depuis votre twig.

    Comme expliqué ci-dessus, lorsque vous effectuez un rebase, vous modifiez l’historique de votre twig. Par conséquent, si vous essayez de faire un Git git push normal après un rebase, Git le rejettera car il n’y a pas de chemin direct entre le commit sur le serveur et le commit sur votre twig. 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 forcez des poussées, il est fortement recommandé de définir votre push.default configuration push.default sur simple, ce 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 tirage. Il devrait être mis à jour!

    Allez en bas de la page Comment recomposer une demande de tirage pour plus de détails.

    Cela m’est arrivé Je viens de réengager les changements, puis il a poussé.

     git push origin master