J'ai un serveur de gitosis distant et un référentiel git local, et chaque fois que je fais un gros changement dans mon code, je vais pousser les changements sur ce serveur aussi.
Mais aujourd'hui, je trouve que même si j'ai des modifications locales et que je m'engage dans le référentiel local, lors de son exécution, git push origin master
il indique `` Tout à jour '', mais lorsque j'utilise git clone
pour extraire des fichiers sur le serveur distant, il ne contient pas les dernières modifications. . Et je n'ai qu'une seule branche nommée "maître" et un serveur distant nommé "origine".
PS: c'est ce que git affiche lors de l'exécution ls-remote
, je ne sais pas si cela aide
$ git ls-remote origin
df80d0c64b8e2c160d3d9b106b30aee9540b6ece HEAD
df80d0c64b8e2c160d3d9b106b30aee9540b6ece refs/heads/master
$ git ls-remote .
49c2cb46b9e798247898afdb079e76e40c9f77ea HEAD
df80d0c64b8e2c160d3d9b106b30aee9540b6ece refs/heads/master
df80d0c64b8e2c160d3d9b106b30aee9540b6ece refs/remotes/origin/master
3a04c3ea9b81252b0626b760f0a7766b81652c0c refs/tags/stage3
commit
laquelle je n'ai pas remarqué et j'ai essayé de pousser le codeRéponses:
Travaillez-vous avec une tête détachée par hasard?
Un péché:
indiquant que votre dernier commit n'est pas un chef de branche.
Attention : ce qui suit fait
git reset --hard
: assurez-vous d'utiliser d'git stash
abord si vous souhaitez enregistrer vos fichiers actuellement modifiés.Comme mentionné dans la
git checkout
page de manuel (soulignement le mien):la source
Step 1: git fetch origin git checkout -b "nodeAPI" "origin/nodeAPI" Step 2. Review the changes locally Step 3. Merge and fix conflicts git fetch origin git checkout "origin/master" git merge --no-ff "nodeAPI" Step 4. Push the result of the merge to GitLab git push origin "master"
je suis bon jusqu'à la dernière étape. Mais maintenant, je ne sais plus comment aller de l'avant.git branch -f myBranch HEAD
:, puis vérifiez ladite succursale et appuyez dessus. Dans votre cas,myBranch
peut-êtremaster
si vous étiez en train de fusionnernodeAPI
.Euh .. Si vous êtes un git noob, êtes-vous sûr que vous l'avez
git commit
déjà faitgit push
? J'ai fait cette erreur la première fois!la source
git commit -a -m "your message goes here"
dans mon casgit add -A
,git diff --staged
, fait défiler les changements Hmm très bon augure,git commit -m 'bam!'
,git push
Vous proposez peut-être une nouvelle succursale locale?
Une nouvelle branche locale doit être poussée explicitement:
Juste une de ces choses à propos de git ... Vous clonez un repo, faites une branche, commettez quelques changements, poussez ... "Tout est à jour". Je comprends pourquoi cela se produit, mais ce flux de travail est extrêmement hostile aux nouveaux arrivants.
la source
Mon problème était que ma branche locale avait un nom différent de la branche distante. J'ai pu pousser en faisant ce qui suit:
$ git push origin local-branch-name:remote-branch-name
(Crédit à https://penandpants.com/2013/02/07/git-pushing-to-a-remote-branch-with-a-different-name/ )
la source
Une autre situation qu'il est important de connaître: Le type d'état par défaut pour git est que vous travaillez dans la branche "master". Et pour beaucoup de situations, vous vous contenterez de rester votre principale branche de travail (bien que certaines personnes aient envie de faire d'autres choses).
Quoi qu'il en soit, ce n'est qu'une branche. Donc, une situation dans laquelle je pourrais entrer est:
Ma branche active n'est en fait PAS la branche principale. ... Mais je fais habituellement la commande:
git push
(et je l'avais déjà faitgit push origin master
, c'est donc un raccourci pour CELA).Donc je pousse habituellement la branche master vers le repo partagé ... ce qui est probablement une bonne chose propre, dans mon cas ...
Mais j'ai oublié que les changements sur lesquels je travaille ne sont pas encore DANS la branche master !!!
Donc donc à chaque fois que j'essaye
git push
, et que je vois "Tout à jour", j'ai envie de crier, mais bien sûr, ce n'est pas la faute de git! C'est à moi.Au lieu de cela, je fusionne ma branche en maître, puis je pousse, et tout est à nouveau heureux.
la source
git push
.Explication
J'ai eu la même erreur et j'ai passé des heures à essayer de le comprendre. Finalement, je l'ai trouvé. Ce que je ne savais pas, c'est que pousser comme ça
git push origin branch-x
va essayer de rechercher branch-x localement puis de pousser vers branch-x distant.Dans mon cas, j'avais deux URL distantes. J'ai effectué une vérification de la branche-x à la branche-y lorsque j'essayais de passer de y localement à x distant. J'ai eu le message que tout est à jour, ce qui est normal car je poussais vers x de la deuxième télécommande.
En bref, pour ne pas tomber dans ce type de piège, vous devez spécifier la référence source et la référence cible:
Mettre à jour:
Si vous devez exécuter cette commande à chaque fois que vous appuyez sur votre branche, vous devrez peut-être définir l'amont entre votre branche locale et distante avec les éléments suivants:
Ou
la source
Voir la réponse de VonC ci-dessus - j'avais besoin d'une étape supplémentaire:
J'ai fait cela, mais quand j'ai ensuite essayé
git push remoterepo master
, il a dit "erreur: n'a pas réussi à pousser certaines références. Pour vous empêcher de perdre l'historique, les mises à jour non rapides ont été rejetées, Fusionnez les modifications à distance (par exemple 'git pull') avant poussant à nouveau. "J'ai donc fait «git pull remoterepo master», et cela a trouvé un conflit. Je l'ai fait à
git reset --hard <commit-id>
nouveau, j'ai copié les fichiers en conflit dans un dossier de sauvegarde, je l'ai fait à nouveau, j'aigit pull remoterepo master
recopié les fichiers en conflit dans mon projetgit commit
, puisgit push remoterepo master
, et cette fois, cela a fonctionné.Git a cessé de dire "tout est à jour" - et a cessé de se plaindre des "avancées rapides".
la source
J'ai fait face à une situation similaire; lorsque j'ai apporté les modifications et essayé
git push origin master
, cela disait que tout était à jour.Je devais
git add
le fichier modifié et puisgit push origin master
. Il a commencé à fonctionner à partir de là.la source
git commit
ce fichier ajouté avant de pousser?De votre statut git, vous avez probablement une situation différente de la mienne.
Mais de toute façon, voici ce qui m'est arrivé .. J'ai rencontré l'erreur suivante:
Le message le plus informatif ici est que la télécommande a raccroché. Il s'est avéré que cela est dû au dépassement de la taille du tampon de publication http. La solution est de l'augmenter avec
git config http.postBuffer 524288000
la source
J'ai eu ce problème aujourd'hui et cela n'a rien à voir avec les autres réponses. Voici ce que j'ai fait et comment je l'ai corrigé:
Un de mes dépôts a récemment déménagé, mais j'avais une copie locale. Je me suis éloigné de ma branche "maître" locale et j'ai apporté quelques modifications - puis je me suis souvenu que le référentiel avait été déplacé. J'avais l'habitude
git remote set-url origin https://<my_new_repository_url>
de définir la nouvelle URL, mais lorsque je poussais, elle disait simplement "Tout à jour" au lieu de pousser ma nouvelle branche vers master.J'ai fini par le résoudre en rebasant
origin/master
puis en poussant avec des noms de branche explicites, comme ceci:J'espère que cela aide toute personne qui a eu mon même problème!
la source
Super rare - mais toujours: Sous Windows, il se pourrait que -refs emballés possède une succursale avec un cas de lettre (c. -à- dev / mybranch), tandis que refs le dossier a un autre cas (c. -à- Dev / mybranch) lorsque core.ignorecase est à true .
La solution consiste à supprimer manuellement la ligne appropriée des références emballées . Je n'ai pas trouvé de solution plus propre.
la source
Je suis tombé dessus moi-même lorsque j'ai fusionné une succursale sur Github et continué à y développer localement. Ma solution était un peu différente des autres qui ont été suggérées.
J'ai d'abord créé une nouvelle branche locale à partir de mon ancienne branche locale (que je ne pouvais pas pousser). Ensuite, j'ai poussé la nouvelle branche locale vers le serveur d'origine (Github). C'est à dire
Cela a fait apparaître les changements sur Github, bien que dans newlocalbranch plutôt que dans oldlocalbranch.
la source
Dans mon cas, j'avais 2 dépôts distants.
Les deux repo étaient identiques. Un seul était un
https
autressh
. Donc, supprimer celui qui n'était pas souhaité (dans mon cas,ssh
car je l'ai utiliséhttps
parce quessh
ne fonctionnait pas!) A résolu le problème pour moi.la source
Mon erreur était différente de tout ce qui a été mentionné jusqu'ici. Si vous ne savez pas pourquoi vous auriez une tête détachée, vous ne l'avez probablement pas. Je travaillais sur le pilote automatique avec
git commit
etgit push
, et je n'avais pas lu la sortie degit commit
. Il s'avère que c'était un message d'erreur car j'ai oublié -am.Corrigé en mettant
-am
où je fais d'habitude:la source
J'ai rencontré le même problème. Comme je n'ai pas ajouté de modifications à la zone de transit. Et j'ai directement essayé de pousser le code vers un dépôt à distance en utilisant la commande:
git push origin master
Et cela montre le message
Everything up-to-date
.pour résoudre ce problème, essayez ces étapes
git add .
git commit -m "Bug Fixed"
git push -u origin master
la source
Vérifiez que vous n'avez pas gâché votre URL distante.
Je voulais juste mentionner également que j'ai rencontré cela après avoir activé Git en tant que CVS dans une configuration de build Jenkins locale. Il semble que Jenkins a vérifié le dernier commit de la branche que je lui ai donnée et a également réinitialisé ma télécommande pour correspondre aux chemins que je lui ai donnés pour le dépôt. J'ai dû reprendre ma branche de fonctionnalité et corriger mon URL distante d'origine avec 'git remote set-url'. N'allez pas pointer un outil de construction vers votre répertoire de travail ou vous passerez un mauvais moment. Ma télécommande a été définie sur un chemin de fichier vers mon répertoire de travail, il a donc naturellement signalé tout à jour lorsque j'ai essayé de pousser les modifications avec la même source et destination.
la source
Une autre possibilité est que vous ayez nommé un répertoire dans votre fichier .gitignore qui a été exclu. Les nouveaux commits ne seraient donc pas poussés. Il m'est arrivé que j'ai nommé un répertoire pour ignorer "recherche", mais c'était aussi un répertoire dans mon arbre source.
la source
Il y a un moyen rapide que j'ai trouvé. Accédez à votre dossier .git, ouvrez le
HEAD
fichier et changez la branche sur laquelle vous vous trouviez pour le master. Par exemple, ref:refs/heads/master
la source
refs/heads/master
cassé mon référentiel. Mais la mise à ce que je pensais être la tête allouent a donné le message suivant:Warning: you are leaving 1 commit behind, not connected to any of your branches
. J'ai pu reprendre le commit dans une nouvelle branche et le fusionner de nouveau au maître.J'ai eu le même problème. Dans mon cas, cela a été dû au fait d'avoir à nommer la même télécommande. Cela a créé l '«origine» standard, mais j'utilise depuis longtemps «github» comme télécommande, donc c'était là aussi. Dès que j'ai retiré la télécommande «origine», l'erreur a disparu.
la source
Je l'ai fait (les commits dans mon journal git n'étaient pas sur GitHub même si git a dit que tout était à jour) et je suis convaincu que le problème était Github. Je n'ai reçu aucun message d'erreur dans git, mais GitHub a eu des erreurs de statut et mes commits étaient là plusieurs heures plus tard.
https://status.github.com/messages
Les messages d'état GitHub étaient:
la source
Une autre erreur très simple mais noobish de ma part: j'ai simplement oublié d'ajouter un
-m
modificateur de message dans mon commit. J'ai donc écrit:Au lieu de corriger:
REMARQUE: il ne génère aucune erreur! Mais vous ne pourrez pas pousser vos commits et toujours obtenir à la
Everything up to date
placela source
ici, ma solution est différente de la précédente. je n'ai pas compris comment ce problème se produit, mais je l'ai résolu. un peu de façon inattendue.
vient maintenant:
la commande qui fonctionne pour moi est
$git push origin HEAD:use_local_cache
(J'espère que vous sortirez de ce problème le plus tôt possible)
la source
Je sais que c'est super ancien, mais dans mon cas, je l'ai réparé assez rapidement.
J'obtenais cette même erreur tout en étant un commit d'avance
master
. Ensuite, j'ai trouvé le message Stack Overflow actuel. Cependant, avant de poursuivre avec les idées suggérées, j'ai juste décidé de faire un nouveau commit et d'essayer à nouveau avec le push to origin et cela a fonctionné en douceur.Je ne sais pas pourquoi, mais c'est peut-être utile pour quelqu'un d'autre.
la source
Une autre possibilité est que vous ayez des commits qui n'affectent pas le répertoire que vous poussez. Donc dans mon cas, j'avais une structure comme
Et je me suis engagé à maîtriser la modification
README.md
, puisgit subtree push --prefix client heroku-client master
j'ai couru et j'ai reçu le messageEverything up-to-date
la source
Je travaillais avec Jupyter-Notebook lorsque j'ai rencontré cette erreur trompeuse.
Je n'ai pas pu résoudre les problèmes ci-dessus car je n'avais ni tête détachée ni noms différents pour mon référentiel local et distant .
Mais ce que je n'ai été ma taille de fichier ont été légèrement supérieure à 1 Mo et le plus grand était presque ~ 2MB . J'ai réduit la taille du fichier à l'aide de Comment puis-je réduire la taille du fichier de mon bloc-notes iPython?technique. Cela a aidé à réduire la taille de mon fichier en effaçant les sorties. J'ai pu pousser le code, désormais car il a apporté ma taille de fichier en Ko.
la source
Nous devons ajouter les fichiers et valider les fichiers déjà modifiés / ajoutés exécuter les commandes ci-dessous
git add. ou git add nameoffile #it ajoutera les fichiers existants dans le projet
git commit -m "first commit" # commit tous les fichiers du projet
git push origin master
la source