Comment puis-je trouver le lieu d'origine/maître dans git, et comment puis-je le changer?

je suis un bizut. J'ai récemment transféré un projet rail de Subversion à git. J'ai suivi le tutoriel ici: http://www.simplisticcomplexity.com/2008/03/05/cleanly-migrate-your-subversion-repository-to-a-git-repository/

j'utilise aussi unfuddle.com pour stocker mon code. Je fais des changements sur mon ordinateur portable Mac dans le train de/vers le travail et puis les pousser à se déployer lorsque j'ai une connexion réseau en utilisant la commande suivante:

git push unfuddle master

J'utilise Capistrano pour les déploiements et je tire le code du dépôt unfuddle en utilisant la branche principale.

dernièrement, J'ai remarqué le message suivant lorsque j'ai lancé" 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 ne comprends pas pourquoi. Je pensais que mon portable était l'origine... mais je ne sais pas si c'est le fait que J'ai initialement tiré de Subversion ou push to Unfuddle qui fait apparaître le message jusqu'. Comment puis-je:

  1. trouver où git pense que' origine / maître ' est?
  2. si c'est ailleurs, comment transformer mon ordinateur portable en "Origine/maître"?
  3. faites disparaître ce message. Ça me fait penser que Git n'est pas content de quelque chose.

mon mac utilise la version 1.6.0.1 de Git.


quand j'exécute git remote show origin comme suggéré par le dbr, J'obtiens ce qui suit:

~/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 cours git remote -v comme suggéré par Aristote Pagaltzis, je reçois le suivant:

~/Projects/GeekFor/geekfor 10:33 AM $ git remote -v
origin  /Users/brian/Projects/GeekFor/gf/.git
unfuddle    git@spilth.unfuddle.com:spilth/geekfor.git

maintenant, fait intéressant, je travaille sur mon projet dans le répertoire geekfor mais il est dit que mon origine est ma machine locale dans le répertoire gf . Je crois que gf était le répertoire temporaire que j'ai utilisé lors de la conversion de mon projet de Subversion en Git et probablement d'où j'ai poussé à me défaire. Alors je crois que j'ai vérifié une nouvelle copie de unfuddle au répertoire geekfor .

on dirait que je devrais suivre les conseils de dbr et faire:

git remote rm origin
git remote add origin git@spilth.unfuddle.com:spilth/geekfor.git
219
demandé sur jubobs 2008-11-10 07:50:26

13 réponses

1. trouvez où Git pense que 'origine / maître' utilise git-remote

git remote show origin

..qui rapportera quelque chose comme..

* remote origin
  URL: me@remote.example.com:~/something.git
  Remote branch merged with 'git pull' while on branch master
    master
  Tracked remote branch
    master

une télécommande est essentiellement un lien vers un dépôt distant. Lorsque vous le faites..

git remote add unfuddle me@unfuddle.com/myrepo.git
git push unfuddle

..git poussera les changements à cette adresse que vous avez ajoutée. C'est comme un signet, pour les dépôts distants.

quand vous lancez git status , il vérifie si la télécommande manque des propagations (par rapport à votre dépôt local), et si oui, par combien de propagations. Si vous poussez toutes vos modifications sur "origine", les deux seront synchronisées, donc vous n'obtiendrez pas ce message.

2. si c'est ailleurs, comment transformer mon ordinateur portable en "Origine/maître"?

cela ne sert à rien. Dire "origine" est renommé pour "ordinateur portable" - vous ne voulez jamais à faire git push laptop à partir de votre ordinateur portable.

si vous voulez supprimer la télécommande d'origine, vous le faites..

git remote rm origin

ceci ne supprimera rien (en termes de contenu de fichier/révisions-historique). Cela empêchera le " votre branche est en avant par.."message, car il ne comparera plus votre dépôt avec la télécommande (parce qu'il est parti!)

Une chose à retenir est qu'il n'y a rien de spécial origin , c'est juste un nom par défaut que git utilise.

Git utilise origin par défaut lorsque vous faites des choses comme git push ou git pull . Donc, si vous avez une télécommande que vous utilisez beaucoup( Unfuddle, dans votre cas), je vous recommande d'ajouter unfuddle comme "origin":

git remote rm origin
git remote add origin git@subdomain.unfuddle.com:subdomain/abbreviation.git

ou faites le ci-dessus dans une commande en utilisant set-url:

git remote set-url origin git@subdomain.unfuddle.com:subdomain/abbreviation.git

alors vous pouvez simplement faire git push ou git pull pour mettre à jour, à la place de git push unfuddle master

186
répondu dbr 2012-04-04 10:26:29

je suis venu à cette question à la recherche d'une explication sur ce que le message" votre branche est en avance..."s'entend, dans le régime général de l'IGS. Il n'y avait pas de réponse à cela ici, mais puisque cette question apparaît actuellement en haut de Google lorsque vous recherchez la phrase "votre branche est en avance sur 'Origine/maître'", et j'ai depuis compris ce que le message signifie vraiment, j'ai pensé que je voudrais poster l'information ici.

donc, étant un bizut git, je peux voir que la réponse je nécessaire était une réponse distinctement novice. En particulier, ce que la " votre branche est en avance par..."phrase signifie qu'il y a des fichiers que vous avez ajoutés et engagés dans votre dépôt local, mais que vous n'avez jamais poussés à l'origine. L'intention de ce message est encore obscurcie par le fait que "git diff", du moins pour moi, n'a montré aucune différence. Ce n'est que lorsque j'ai lancé "git diff origin/master" qu'on m'a dit qu'il y avait des différences entre mon dépôt local et le Master distant.

Donc, pour être clair:


"votre branche est en avance..." = > vous devez pousser jusqu'au maître distant. Lancez " git diff origin/master " pour voir quelles sont les différences entre votre dépôt local et le dépôt maître distant.


Espérons que cela aide d'autres débutants.

(aussi, je reconnais qu'il y a une configuration subtilités qui peuvent partiellement invalider cette solution, comme le fait que le maître peut ne pas être réellement "distant", et que "origine" est un nom reconfigurable utilisé par convention, etc. Mais les débutants ne se soucient pas de ce genre de chose. Nous voulons des réponses simples et directes. Nous pourrons en savoir plus sur les subtilités plus tard, une fois que nous aurons résolu le problème pressant.)

Earl

284
répondu Earl Jenkins 2010-04-06 17:00:57

j'ai eu un problème similaire où mon répertoire de travail était ahead of origin by X commits mais le git pull a été traduit par Everything up-to-date . J'ai réussi à le corriger en suivant ce conseil . Je poste ça au cas où ça aiderait quelqu'un d'autre avec un problème similaire.

la fixation de base est la suivante:

$ git push {remote} {localbranch}:{remotebranch}

où les mots entre parenthèses doivent être remplacés par votre nom distant, le nom de votre succursale locale et le nom de votre succursale distante. par exemple

$ git push origin master:master
38
répondu Mims H. Wright 2011-03-30 01:02:42

il y a parfois une différence entre la version locale du maître d'origine (Origine/maître) et le vrai maître d'origine.

Si vous l'exécutez git remote update ce sera resynch origine de maître avec origin/master

voir la réponse acceptée à cette question

les Différences entre la commande git pull origin master & git pull origin/master

24
répondu chim 2017-05-23 12:09:55

je pensais que mon portable était l'origine ...

C'est un peu absurde: origin se réfère au dépôt distant par défaut – celui dont vous récupérez/retirez les changements des autres.

Comment puis-je:

  1. git remote -v vous montrera ce que origin est; origin/master est votre "marque-page" pour le dernier état connu de la master est une branche du référentiel origin pour origin/master . C'est tout comme .

  2. vous ne le faites pas. Au moins, cela n'a aucun sens qu'un dépôt soit le dépôt distant par défaut pour lui-même.

  3. ce n'est pas le cas. C'est simplement vous dire que vous avez fait un tel-et-tant de commit localement qui ne sont pas dans le dépôt distant (selon le dernier état connu de ce dépôt).

9
répondu Aristotle Pagaltzis 2008-11-10 05:15:24

[Solution]

$ git push origin

^ cela l'a résolu pour moi. Ce qu'il a fait, il a synchronisé mon master (sur ordinateur portable) avec "origin" qui est sur le serveur distant.

3
répondu Chris 2011-06-01 19:28:24

je suis aux prises avec ce problème et aucune des réponses précédentes n'aborde la question telle que je la vois. J'ai ramené le problème à l'essentiel pour voir si je peux clarifier mon problème.

je crée un nouveau dépôt (rep1), y mets un fichier et le commute.

mkdir rep1
cd rep1
git init
echo "Line1" > README
git add README
git commit -m "Commit 1"

je crée un clone de rep1 et je l'appelle rep2. Je regarde dans rep2 et je vois que le fichier est correct.

cd ~
git clone ~/rep1 rep2
cat ~/rep2/README

Dans rep1-je faire un seul modifier le fichier et de le valider. Puis dans rep1 je crée une télécommande pour pointer vers rep2 et pousser les changements.

cd ~/rep1
<change file and commit>
git remote add rep2 ~/rep2
git push rep2 master

maintenant quand je vais dans rep2 et que je fais un 'statut git', on me dit que je suis en avance sur l'origine.

# On branch master
# Your branch is ahead of 'origin/master' by 1 commit.
#
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#   modified:   README
#

README dans rep2 est comme il a été à l'origine, avant que le second s'engager. Les seules modifications que j'ai faites concernent rep1 et tout ce que je voulais, c'était les pousser vers rep2. Qu'est-ce que je ne suis pas saisir?

1
répondu Steve Hindmarch 2010-07-29 18:21:01

il attend que vous"poussiez". Essayez:

$ git push

1
répondu Vino 2011-04-20 03:03:51

j'ai eu ce problème récemment et j'ai pensé que c'était parce que j'avais supprimé certains fichiers dont je n'avais plus besoin. Le problème est que git ne sait pas que les fichiers ont été supprimés et il voit que le serveur a encore. (server = origine)

Alors j'ai couru

git rm $(git ls-files --deleted)

et a ensuite lancé un commit and push.

Qui a résolu le problème.

1
répondu looneydoodle 2011-07-25 22:22:19

je suis aussi un bizut. J'ai eu le même problème avec les " votre branche est en avance sur origin/master par N engage messages. Faire le 'git diff origin/master' suggéré a montré quelques diffs que je ne me souciais pas de garder. Si. ..

étant donné que mon clone git était pour l'hébergement, et que je voulais une copie exacte du master repo, et que je ne me souciais pas de garder les changements locaux, j'ai décidé d'économiser tout mon repo, et d'en créer un nouveau:

(sur la machine d'accueil)

mv myrepo myrepo
git clone USER@MASTER_HOST:/REPO_DIR myrepo

pour plus de commodité, j'ai utilisé pour faire des changements au clone sur ma machine d'accueil. Pas plus. Je vais faire ces changements au maître, git commit là, et faire une git pull. Avec un peu de chance, cela devrait garder mon clone git sur la machine d'hébergement en parfaite synchronisation.

/ Nara

1
répondu Nara Narasimhan 2012-01-04 02:51:18

je me demandais la même chose à propos de ma pension. Dans mon cas, j'avais une vieille télécommande que je ne poussais plus alors j'ai dû l'enlever.

Obtenir la liste des télécommandes:

git remote

supprimer celui dont vous n'avez pas besoin

git remote rm {insert remote to remove}
0
répondu Jason Rikard 2011-06-10 00:07:17

il est possible de réinitialiser à un commit spécifique avant que votre propre commits ait lieu.

$ git status
# On branch master
# Your branch is ahead of 'origin/master' by 2 commits.
#
nothing to commit (working directory clean)

utilisez git log pour trouver ce que commit était le commit que vous aviez avant les changements locaux ont eu lieu.

$ git log
commit 3368e1c5b8a47135a34169c885e8dd5ba01af5bb
...
commit baf8d5e7da9e41fcd37d63ae9483ee0b10bfac8e
...

prendre note de la propagation locale et réinitialiser directement à la propagation précédente:

git reset --hard baf8d5e7da9e41fcd37d63ae9483ee0b10bfac8e
0
répondu RobLoach 2011-08-23 15:24:19

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:

git push ssh://git@xxx.repositryhosting.com/yyy/zzz.git

quand j'ai trouvé que mon adresse distante était dans le fichier .git / FETCH_HEAD et utilisé:

git push

le problème a disparu.

-1
répondu noob 2012-01-17 11:54:04