web-dev-qa-db-fra.com

Git tirant une branche d'un autre dépôt?

J'ai un dépôt git local qui est un clone d'un dépôt sur github. Quelqu'un a créé le référentiel et effectué des modifications dans une nouvelle branche d'un nouveau référentiel. Je souhaite déplacer cette nouvelle branche dans mon référentiel (localement, pour travailler dessus avant de fusionner avec le maître).

J'ai essayé de créer une nouvelle branche, puis de l'extraire du référentiel forké, mais le système se plaint car la nouvelle branche est une copie de la branche principale ainsi que des modifications du fichier local.

error: Your local changes to the following files would be overwritten by merge.

Alors, comment puis-je extraire la branche de l'autre référentiel vers une nouvelle branche de mon référentiel local?

J'espère que cela à du sens. Si ce n'est pas le cas, c'est mon référentiel: https://github.com/MatthewLM/cbitcoin

Comme vous pouvez le voir, quelqu'un a créé un nouveau référentiel avec la branche "linuxBuild": https://github.com/austonst/cbitcoin/tree/linuxBuild

Je veux cette branche sur mon référentiel local pour MatthewLM/cbitcoin.

Comment puis-je faire ceci?

67
Matthew Mitchell

Vous devez vous assurer que git status montre qu'il n'y a aucune modification non mise en scène dans votre référentiel local.
Vous pouvez le faire en stockant d'abord vos modifications locales et en tirant cette branche. Ensuite, vous pouvez appliquer votre cachette.


Si vous souhaitez recréer la structure de branche du fork dans votre référentiel local, vous pouvez procéder comme suit:

git remote add fork <url of fork>
git fetch fork
git checkout -b fork_branch fork/<branch>

Cela créera la branche locale fork_branch avec la même histoire que <branch> dans la fourchette, c'est-à-dire fork_branch va se détacher de votre master<branch> fait à la fourche. En outre, votre branche locale suivra désormais cette branche dans le fork, ce qui vous permettra d’obtenir facilement les nouvelles modifications validées dans le fork.

Je pense que vous devez toujours vous assurer au préalable que votre copie de travail ne contient aucune modification.

132
Daniel Hilgarth

Méthode sans ajout de télécommande.

git checkout --Orphan fork_branch
git reset --hard
git pull <url of fork> <branch>
16
Alex78191