Comment puis-je trouver l'emplacement de l'origine et de la maîtrise de git, et comment puis-je le changer?
Je suis un Git débutant. J'ai récemment déménagé de Rails de projet de Subversion vers Git. J'ai suivi le tuto ici: http://www.simplisticcomplexity.com/2008/03/05/cleanly-migrate-your-subversion-repository-to-a-git-repository/
Je suis également en utilisant unfuddle.com pour stocker mon code. - Je faire des modifications sur mon Mac portable dans le train pour/de travail, puis de la pousser à unfuddle quand j'ai une connexion réseau à l'aide de la commande suivante:
git push unfuddle master
- Je utiliser Capistrano pour les déploiements et tirez le code de la unfuddle référentiel à l'aide de la branche master.
Dernièrement, j'ai remarqué le message suivant quand je lance "git status" sur mon ordinateur portable:
# On branch master
# Your branch is ahead of 'origin/master' by 11 commits.
#
nothing to commit (working directory clean)
Et je suis confus quant à pourquoi. Je pensais que mon portable était à l'origine... mais ne sais pas si le fait que j'ai tiré de Subversion ou de pousser à Unfuddle est ce qui provoque le message à afficher. Comment puis-je:
- Savoir où Git pense 'origin/master' est?
- Si il est ailleurs, comment puis-je allumer mon portable dans le 'origin/master'?
- Obtenez ce message de s'en aller. Il me fait penser à Git n'est pas satisfait de quelque chose.
Mon mac est en cours d'exécution de version Git 1.6.0.1.
Quand je lance git remote show origin
comme suggéré par dbr, je reçois le texte suivant:
~/Projects/GeekFor/geekfor 10:47 AM $ git remote show origin
fatal: '/Users/brian/Projects/GeekFor/gf/.git': unable to chdir or not a git archive
fatal: The remote end hung up unexpectedly
Quand je lance git remote -v
comme suggéré par Aristote Pagaltzis, je reçois le texte suivant:
~/Projects/GeekFor/geekfor 10:33 AM $ git remote -v
origin /Users/brian/Projects/GeekFor/gf/.git
unfuddle [email protected]:spilth/geekfor.git
Maintenant, il est intéressant, je suis en train de travailler sur mon projet dans le geekfor
répertoire, mais il me dit que mon origine est ma machine locale dans le gf
répertoire. Je crois gf
a été le répertoire temporaire que j'ai utilisé lors de la conversion de mon projet de Subversion vers Git et probablement où j'ai poussé à unfuddle de. Alors je crois que j'ai vérifié une nouvelle copie de unfuddle à la geekfor
répertoire.
Donc il semble que je devrais suivre dbr, les conseils et le faire:
git remote rm origin
git remote add origin [email protected]:spilth/geekfor.git
Vous devez vous connecter pour publier un commentaire.
..qui vous permettra de revenir à quelque chose comme..
À distance est en fait un lien vers un dépôt distant. Quand vous faites..
..git va pousser des modifications à cette adresse que vous avez ajouté. C'est comme un signet, pour les dépôts distants.
Lorsque vous exécutez
git status
, il vérifie si la distance est manquant s'engage (par rapport à votre dépôt local), et si oui, en combien de livraisons. Si vous poussez de toutes vos modifications de "l'origine", les deux seront synchronisés, de sorte que vous ne obtenez ce message.Il n'y a pas de raison de faire cela. Dire "origine" est renommé "ordinateur portable" - vous ne voulez jamais faire
git push laptop
à partir de votre ordinateur portable.Si vous souhaitez supprimer l'origine à distance, de faire..
Cette habitude de supprimer quoi que ce soit (en termes de fichier-content/révision-histoire). Cela va arrêter le "votre branche est en avance par.." le message, puisqu'il n'aura plus comparez votre dépôt avec la distance (car il est parti!)
Une chose à retenir est qu'il n'y a rien de spécial à propos de
origin
, c'est juste un nom par défaut, git utilise.Git utilise
origin
par défaut lorsque vous faites des choses commegit push
ougit pull
. Donc, si vous avez une télécommande que vous utilisez beaucoup (Unfuddle, dans votre cas), je vous recommande l'ajout de unfuddle comme "origine":ou le faire à la ci-dessus en une seule commande à l'aide de set-url:
Alors vous pouvez simplement faire
git push
ougit pull
de mettre à jour, au lieu degit push unfuddle master
origin
référentiel (même si il n'est pas au courant de comment cela fonctionne dans git conditions) – suppression de la distance ne serait pas une chose utile à faire pour lui.git remote -v
comme suggéré par Aristote ci-dessous est une meilleure et plus économique de répondre à "qu'est-ce que l'emplacement d'origine/maître?", parce quegit remote show origin
nécessite une connexion internet alors quegit remote -v
ne l'est pas.J'en suis venu à cette question, la recherche d'une explication sur ce que le message "votre branche est en avance par...", dans le régime général de git. Il n'y a pas de réponse ici, mais depuis que cette question actuellement à l'affiche jusqu'au sommet de Google lors de la recherche de l'expression "Votre branche est en avance de 'origin/master'", et depuis, j'ai compris la véritable signification du message, je pensais que je poste l'info ici.
Donc, en étant un git newbie, je peux voir que la réponse dont j'avais besoin était nettement newbie réponse. Plus précisément, ce que le "votre branche est en avance par..." phrase signifie qu'il y a des fichiers que vous avez ajoutés et engagée à votre dépôt local, mais n'ont jamais poussé à l'origine. Le but de ce message est encore obscurci par le fait que "git diff", au moins pour moi, n'ont montré aucune différence. Il n'était pas jusqu'à ce que j'ai couru "git diff origin/master" qui m'a été dit qu'il y avait des différences entre mon dépôt local, et le maître.
Donc, pour être clair:
"votre branche est en avance par..." => Vous avez besoin de pousser pour le maître. Exécuter "git diff origin/master" pour voir quelles sont les différences entre votre dépôt local et le distant référentiel maître.
Espère que cela aide d'autres débutants.
(Aussi, je reconnais qu'il y a de la configuration des subtilités qui peuvent invalider partiellement cette solution, comme le fait que le maître ne peut pas réellement être "à distance", et que "l'origine" est un reconfigurable nom utilisé par convention, etc. Mais les débutants ne se soucient pas de ce genre de chose. Nous voulons simples, des réponses simples. Nous pouvons lire sur les subtilités plus tard, une fois que nous avons résolu le problème pressant.)
Earl
git diff --cached origin/master
être mieux instruction ici que ce qui serait le résultat de la prochaine pousser? La commande mise en surbrillance, vous avez ci-dessus montre également non validées & unstaged fichiers (je pense, je suis un git débutant aussi)git fetch
si vous obtenez ce message d'erreur après ungit pull remote branch
. Votre refs pourrait être obsolète.git fetch
des correctifs.origin/master
partie moyennemaster
branche dansorigin
repo?# On branch master
# Your branch is ahead of 'origin/master' by 3 commits.
Mais git diff origin/master montre rien, (et l' --option mises en cache ne change rien à cela). Et, git fetch ne change rien à cela, la commande git pull ne change pas cela, git reset --hard ne pas en changer. Pour changer cela, j'avais besoin: git reset --hard origin/master Et j'ai choisi la route parce que d'autres personnes travaillent avec moi dans ce référentiel et je n'ai pas envie d'invalider leurs tests, et parce que je ne pouvais pas savoir ce que ces révisions sont.git reset --hard HEAD
toujours la voie à suivre pour un hard resetgit checkout master
je reçois le message, ce qui signifie que je devraisgit pull origin master
avant de le travailler. mais je trouve qu'il est très déroutant parce que le libellé du message laisse croire le contrairegit fetch
est certainement votre ami. Je le fais assez bien avant chaque tirage ou de fusion, juste pour éviter les tracas d'avoir git se plaindre, et puis d'avoir à le faire de toute façon.J'ai eu un problème similaire où mon répertoire de travail a été
ahead of origin by X commits
mais lagit pull
résultant desEverything up-to-date
. J'ai réussi à le résoudre en suivant ce conseil. Je poste ici au cas où il permet à quelqu'un d'autre avec un problème similaire.La base fix est comme suit:
Où les mots entre crochets doit être remplacé par votre nom, votre succursale locale de nom et de votre télécommande nom de la branche. par exemple,
git diff
à ne pas montrer quoi que ce soit, et après avoir fait ce que vous avez décrit, je n'ai plus obtenir cette confusion et message ennuyeux.parfois il y a une différence entre la version locale dans le cache d'origine de maître (origin/master) et l'origine véritable maître.
Si vous exécutez
git remote update
ce sera resynch origine de maître avec origin/mastervoir la accepté de répondre à cette question
Les différences entre la commande git pull origin master & git pull origin/master
C'est un peu absurde:
origin
se réfère à la distance par défaut référentiel – le fetch/tirer les changements d'autres personnes de.git remote -v
va vous montrer ce qu'origin
est;origin/master
est votre “signet” pour le dernier état connu de lamaster
direction générale de laorigin
dépôt, et votre propremaster
est un le suivi de la branche pourorigin/master
. C'est tout ce qu'il devrait l'être.Vous n'avez pas. Au moins, il n'a pas de sens pour un dépôt par défaut dépôt distant pour lui-même.
Il ne l'est pas. Il s'agit simplement de vous dire que vous avez fait tant et si beaucoup s'engage localement qui ne sont pas dans le dépôt distant (selon le dernier état connu de ce référentiel).
origin
pointant vers l'ordinateur portable localement, comme étant hors connexion ou des réseaux de commutation est un cas très commun pour les appareils portables tels que les ordinateurs portables. De cette façon, vous pouvez utilisergit push
etgit pull
tout moment, pas besoin de penser si vous êtes connecté au bon réseau. Ce localorigin
peuvent être synchronisés avec le réel télécommandes automatiquement lorsqu'une connexion réseau est disponible, selon le statut d'itinérance. La problématique, c'est quand à courir de synchronisation par rapport à l'GIT partie est assez facile.origin
à l'autre dépôt sur votre ordinateur portable a le sens parfait, c'est sûr. Le pointage de l'origin
du référentiel vers n'a cependant pas: il ne ferait aucune différence que ce soit, si vous exécutezgit push
ougit pull
, depuis un référentiel est toujours exactement synchronisé avec elle-même de toute façon. Il est dans l'erreur, genre de tautologique.[ Solution ]
^ cela a résolu pour moi.
Ce qu'il a fait, il est synchronisé mon maître (sur un portable) avec "origine" qui est sur le serveur distant.
Je suis aux prises avec ce problème et aucune des réponses précédentes s'attaquer à la question que je le vois. J'ai dépouillé le problème du retour vers sa base pour voir si je peux faire mon problème clairement.
- Je créer un nouveau référentiel (rep1), mettre un fichier et de le valider.
- Je créer un clone de rep1 et de l'appeler rep2. Je regarde à l'intérieur de rep2 et voir le fichier est correct.
Dans rep1-je faire une seule modification dans le fichier et de le valider. Puis dans rep1-je créer une distance du point de rep2 et pousser les modifications.
Maintenant, quand je vais dans rep2 et faire un "git status" je reçois dit que je suis en avance d'origine.
README dans rep2 est comme il a été à l'origine, avant que le second s'engager. Les seules modifications que j'ai faites sont à rep1 et tout ce que je voulais faire était de les pousser à rep2. Qu'est-ce que je ne suis pas saisir?
Il vous attend pour vous "poussez". Essayez:
$ git push
J'ai eu ce problème récemment et j'ai pensé que c'était parce que j'avais supprimé certains fichiers que je n'ai pas besoin de plus. Le problème est que git ne sait pas que les fichiers ont été supprimés et il voit que le serveur a encore cela. (server = origine)
Alors, j'ai couru
Puis a couru un commit et push.
Qui a résolu le problème.
Je suis un git débutant ainsi. J'ai eu le même problème avec les " votre branche est en avance sur origin/master par N engage messages. Faire l'a suggéré "git diff origin/master' a montrer quelques différences que je n'ai pas de soins pour le garder. Alors ...
Depuis mon git clone a été pour l'hébergement, et je voulais une copie exacte du maître repo, et n'a pas soin de garder tout changement local, j'ai décidé de sauvegarde de la totalité de mon repo, et en créer un nouveau:
(sur la machine qui héberge)
Pour l'opportunité, je l'ai utilisé pour apporter des modifications à la copie sur ma machine qui héberge. Pas plus. Je vais faire ces changements pour le maître, git commit-il, et de faire un git pull. J'espère que, cela devrait garder mon git clone sur la machine qui héberge, en totale synchronisation.
/Nara
Je me demandais la même chose sur mon repo. Dans mon cas, j'ai eu une vieille distance que je n'étais pas à repousser à plus et j'ai besoin de l'enlever.
Obtenir la liste des télécommandes:
Supprimer celui que vous n'avez pas besoin
Il est possible de réinitialiser à un commit avant de votre propre s'engage lieu.
Utilisation
git log
pour trouver ce livraison la livraison que vous aviez avant les variations locales a eu lieu.Prendre note des modifications locales, et de réinitialiser directement à la précédente livraison:
J'ai eu le problème "Votre branche est en avance de 'origin/master' par nn s'engage." quand j'ai poussé à un dépôt distant avec:
Quand j'ai découvert que ma télécommande à l'adresse était dans le fichier .git/FETCH_HEAD et utilisés:
le problème a disparu.