2010-06-24 3 views
1

J'utilisais un dépôt github d'un développeur précédent. Je suis le seul codeur sur ce projet, donc j'ai bifurqué le projet sur mon propre dépôt github.Comment passer d'un dépôt à un autre

Maintenant, je voudrais m'engager à mon repo. Malheureusement, je me suis rendu compte que je n'avais jamais changé mon .git/config, donc je m'engageais toujours dans l'ancien repo. Je viens de changer à l'URL appropriée, et quand je tape:

$> git status 

Il retourne:

=> Working directory clean. 

Mais je sais que ce ne est pas parce que j'ai plusieurs commits je l'ai fait. Donc, ma boîte locale a un code différent de celui indiqué sur mon dépôt.

Ma question est la suivante. Évidemment, je suis à mi-chemin du processus de faire cela. Ai-je besoin de re-fork pour mettre à jour, et puis je vais bien. Ou y a-t-il une commande spéciale que je dois lancer pour que ma boîte locale sache que sa commande 'git status' cible un nouveau repo auquel se comparer? De même, je manque quelque chose d'autre très important: D?

Merci à tous.

Répondre

3

Vous pouvez utiliser git remote à gérer votre télécommande

  • renommer origine
 
    git remote rename origin old_origin 
  • ajouter une nouvelle origine
 
    git remote add origin git://github.com/my/forked/repo.git 
    git fetch origin # will create all the remote branches references 
        # in your local repo 

Vous pouvez facilement setup a new upstream pour votre branche principale actuelle (git 1.7 et plus):

git branch --set-upstream master origin/master 

Le "nothing to commit (working directory clean)" un message de git status ne vous empêchera pas de pousser.
Après avoir changé l'origine, vous devriez voir:

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

Cela signifie que vous avez des commits pour pousser à votre nouvelle origine.

+0

Wierd. Il renvoie "error: option inconnue' set-upstream '"J'ai écrit ce que vous aviez exactement. – Trip

+0

@Trip: quelle version de git utilisez-vous? 'set-upstream' n'a été introduit que depuis git1.7. – VonC

0

git status affiche uniquement l'état de votre répertoire de travail et non l'intégralité du référentiel. Il semble que vous avez seulement besoin de changer les télécommandes que git push et git pull utilisent par défaut. Ouvrez .git/config et trouvez vos entrées branch.<branch> et modifiez-les, de même que vos entrées remote.<remote>. Par exemple, votre entrée master peut ressembler à ceci:

[branch "master"] 
    remote = origin 
    merge = refs/heads/master 

il suffit de changer remote pour référencer votre (fourchue) à distance.

En outre, votre entrée à distance peut se présenter comme suit:

[remote "myremote"] 
    url = git://github.com/me/repo.git 
    fetch = +refs/heads/*:refs/remotes/origin/* 

Vous pouvez ajouter une entrée push afin que votre branche master est poussé par défaut:

[remote "myremote"] 
    url = git://github.com/me/repo.git 
    fetch = +refs/heads/*:refs/remotes/origin/* 
    push = master 
+0

Ok, j'ai fait tout ça. Mais comment puis-je transférer le nouveau code que j'ai écrit sur mon site local dans mon nouveau référentiel si mon statut actuel de git est propre? – Trip

+0

Votre 'git status' est juste l'état de vos fichiers * de travail *. Vous poussez le repo en utilisant 'git push'. S'il existe des différences entre votre repo local et le repo distant, les modifications seront repoussées. – mipadi

0

En entier, mais je devrais l'inclure dans cette réponse. Est-ce avant que j'ai manuellement modifié mon .git/config pour inclure mon nouvel URL de dépôt. C'est pourquoi je n'ai pas eu à renommer ou à ajouter d'origine comme Von l'a suggéré.

Alors je viens de le deviner et réalisé

$> git fetch origin 

Ce qui est retourné

From [email protected]:gotoAndBliss/hq_channel 
17326ca..043d395 master  -> origin/master 
* [new branch]  panda_streaming -> origin/panda_streaming 
+ 6ec9bf8...becbcc6 testing -> origin/testing (forced update) 

ensuite sur l'état git je suis arrivé

# On branch testing 
# Your branch is ahead of 'origin/testing' by 9 commits. 

Je git poussé les tests d'origine, et je pense que je suis sur la cible maintenant.

+0

à droite, j'avais oublié l'étape 'git fetch'. J'ai modifié ma réponse pour refléter cette étape. – VonC

Questions connexes