J'ai un projet hébergé sur GitHub que quelqu'un a bifurqué. Sur leur fork, ils ont créé une nouvelle branche "foo" et ont fait quelques changements. Comment puis-je tirer leur "foo" dans une nouvelle branche également appelée "foo" dans mon repo?
Je comprends qu'ils pourraient me soumettre une demande de retrait, mais j'aimerais lancer ce processus moi-même.
Supposons ce qui suit:
- Parce qu'ils ont bifurqué mon projet, nos deux repos partagent la même 'histoire'
- Bien que GitHub montre que leur projet est issu du mien, mon référentiel local n'a aucune référence au projet de cette personne. Dois-je ajouter le leur en tant que télécommande?
- Je n'ai pas encore de branche appelée "foo" - je ne sais pas si je dois d'abord la créer manuellement.
- Je veux vraiment que cela soit tiré dans une branche distincte et non mon maître.
la source
git://
URL de la page du référentiel GitHub de l'autre personne à la place de//path/to/coworkers/repo.git
. (Décrivant ce qui a rendu ma réponse trop lente;))Non, vous n'avez pas besoin de les ajouter en tant que télécommande. Ce serait lourd et pénible à faire à chaque fois.
Saisir leurs engagements:
Cela crée une branche locale nommée
ournameforbranch
qui est exactement la même que celle quitheirbranch
était pour eux. Pour l'exemple de question, le dernier argument seraitfoo:foo
.Notez
:ournameforbranch
qu'une partie peut être laissée de côté si trouver 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éeFETCH_HEAD
est disponible. Vous pouvezgit log FETCH_HEAD
voir leurs commits puis faire des choses commecherry-picked
choisir leurs commits.Le repousser à eux:
Souvent, vous voulez réparer quelque chose à eux et le repousser immédiatement. C'est possible aussi:
Si travailler dans un état détaché vous inquiète, créez certainement une branche en utilisant
:ournameforbranch
et remplacezFETCH_HEAD
etHEAD
au - dessus parournameforbranch
.la source
master
branche par défaut )git branch -m newbranch
dans cet état détaché, git perdra la raison et commencera à dire que votre dépôt n'est plus valide.git init
semble le réparer et vous remettre plus ou moins dans l'état où vous étiez avant, avec la branche nommée "newbranch".Si la réponse d'Antak:
vous donne:
Ensuite (suivant les conseils de Przemek D), utilisez
la source
Ce qui suit est une bonne solution pratique qui fonctionne avec GitHub pour extraire la branche PR à partir d'un fork d'un autre utilisateur. Vous devez connaître l'ID de demande d'extraction (que GitHub affiche avec le titre PR).
Exemple:
Corriger votre code non sécurisé # 8
Alice veut fusionner 1 commit dans
your_repo:master
fromher_repo:branch
Remplacez votre télécommande si différente de
origin
.Remplacez
8
par l'ID de demande d'extraction correct.la source
GitHub a une nouvelle option par rapport aux réponses précédentes, il suffit de copier / coller les lignes de commande du PR:
Merge
ouSquash and merge
boutonview command line instructions
la source
Si le dépôt fourchu est protégé de sorte que vous ne pouvez pas y pousser directement, et que votre objectif est d'apporter des modifications à leur foo, alors vous devez placer leur branche foo dans votre référentiel comme ceci:
Vous avez maintenant une copie locale de foo sans amont associé. Vous pouvez y apporter des modifications (ou non), puis pousser votre foo vers votre propre référentiel distant.
Maintenant, foo est dans votre référentiel sur GitHub et votre foo local le suit. S'ils continuent d'apporter des modifications à foo, vous pouvez les récupérer et les fusionner dans votre foo.
la source