Comment tirer branche distante de quelqu'un d'autre repo

j'ai un projet hébergé sur GitHub que quelqu'un a bifurqué. Sur leur fourche, ils ont créé une nouvelle branche "foo" et ont fait quelques changements. Comment puis-je tirer leur "foo" dans une nouvelle branche aussi appelée "foo" dans ma pension?

je comprends qu'ils pourraient me soumettre une demande d'appel, mais je voudrais initier ce processus moi-même.

supposons ce qui suit:

  1. même "histoire
  2. bien que GitHub montre que leur projet était bifurqué de la mine, mon dépôt local n'a aucune référence au projet de cette personne. Dois-je ajouter les leurs comme télécommande?
  3. Je n'ai pas encore de branche appelée" foo " - Je ne sais pas si je dois créer manuellement cette première ou quoi.
  4. je veux absolument que ce soit une branche séparée et pas mon maître.

j'espère que certaines sens.

189
demandé sur Colin O'Dell 2011-05-04 18:14:56
la source

3 ответов

git remote add coworker git://path/to/coworkers/repo.git
git fetch coworker
git checkout --track coworker/foo

cela va configurer une branche locale foo , en traçant la branche distante coworker/foo . Ainsi, lorsque votre collègue a fait quelques changements, vous pouvez facilement tirer:

git checkout foo
git pull

réponse aux commentaires:

Cool :) Et si je voudrais faire mon propre changements à cette branche, devrais-je créer une deuxième branche locale "barre" de "foo" et y travailler au lieu de directement sur mon "toto"?

vous n'avez pas besoin de créer une nouvelle branche, même si je la recommande. Vous pourriez aussi bien vous engager directement à foo et demander à votre collègue de retirer votre branche. Mais cette branche existe déjà et votre branche foo doit être configurée comme une branche amont de celle-ci:

git branch --set-upstream foo colin/foo

en supposant que colin est votre dépôt (un dépôt à distance de vos collègues) défini de la même manière:

git remote add colin git://path/to/colins/repo.git
258
répondu ralphtheninja 2017-08-10 04:03:37
la source

Non, vous n'avez pas besoin de les ajouter comme une télécommande. Qui serait clumbersome et une douleur à faire à chaque fois.

Grabping their commits:

git fetch [email protected]:theirusername/reponame.git theirbranch:ournameforbranch

cela crée une branche locale appelée ournameforbranch qui est exactement la même que ce que theirbranch était pour eux. Pour l'exemple de question, le dernier argument serait foo:foo .

Note :ournameforbranch une autre partie peut être laissée de côté si penser à un nom qui n'entre pas en conflit avec l'une de vos propres branches est gênant. Dans ce cas, une référence appelée FETCH_HEAD est disponible. Vous pouvez git log FETCH_HEAD pour voir leurs commits puis faire des choses comme cherry-picked pour choisir leurs commits.

repousser vers eux:

souvent, vous voulez fixer quelque chose à eux et le repousser. C'est possible aussi:

git fetch [email protected]:theirusername/reponame.git theirbranch
git checkout FETCH_HEAD

# fix fix fix

git push [email protected]:theirusername/reponame.git HEAD:theirbranch

si vous travaillez dans état détaché vous inquiète, par tous les moyens créer une branche en utilisant :ournameforbranch et remplacer FETCH_HEAD et HEAD ci-dessus par ournameforbranch .

61
répondu antak 2017-03-10 13:40:17
la source

si la réponse d'antak:

git fetch [email protected]:<THEIR USERNAME>/<REPO>.git <THEIR BRANCH>:<OUR NAME FOR BRANCH> 

vous donne:

Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

puis (suivant les conseils de Przemek d) utiliser

git fetch https://github.com/<THEIR USERNAME>/<REPO>.git <THEIR BRANCH>:<OUR NAME FOR BRANCH>
5
répondu Peter 2017-09-04 11:05:08
la source

Autres questions sur git github git-branch git-remote git-pull