Comment synchroniser avec un référentiel Git distant?

94

J'ai forké un projet sur github, apporté quelques modifications, jusqu'ici tout va bien.

En attendant, le référentiel à partir duquel je me suis dérivé a changé et j'aimerais obtenir ces modifications dans mon référentiel. Comment je fais ça ?

George Profenza
la source

Réponses:

77

Généralement, git pullc'est suffisant, mais je ne suis pas sûr de la mise en page que vous avez choisie (ou que github a choisi pour vous).

Šimon Tóth
la source
4
git pull ne fonctionnera que si vous avez configuré la télécommande à récupérer et la branche vers laquelle fusionner.
Abizern
Je suppose que cela a été fait pendant la phase de "fabrication d'une fourchette". À moins que cette information ne soit jetée, elle devrait toujours être là.
Šimon Tóth
utiliser git pull avec https ne fonctionnait pas, mais avec http ça fonctionnait ... maintenant je suis à jour, merci!
George Profenza
@GeorgeProfenza Ce n'est pas sûr. Pensez à utiliserssh
JVE999
66

En supposant que leurs mises à jour se trouvent sur le maître et que vous êtes sur la branche dans laquelle vous souhaitez fusionner les modifications.

git remote add origin https://github.com/<github-username>/<repo-name>.git
git pull origin master

Notez également que vous souhaiterez ensuite repousser la fusion vers votre copie du référentiel:

git push origin master
Mark Hibberd
la source
l'ajout a fonctionné, l'extraction n'a pas fait :(, j'ai eu une erreur liée à https: erreur: protocole https non pris en charge ou désactivé dans libcurl lors de l'accès à github.com/mrdoob/three.js.git/info/refs fatal: la requête HTTP a échoué Des
indices
Quelle plateforme? On dirait qu'une des dépendances de git n'est pas complète.
Mark Hibberd
Pour contourner le problème, vous pouvez également utiliser le protocole git plutôt que https, par exemple git remote set-url git: //github.com/mrdoob/three.js.git - puis essayez le git pull.
Mark Hibberd
fonctionnant sur osx. J'ai réussi à l'obtenir en utilisant git pull github.com/mrdoob/three.js.git master
George Profenza
3
faute de frappe dans les commandes, je pense, vous commencez par original, puis passez àorigin
Benjol
46

Vous devez ajouter le dépôt d'origine en amont.

Tout est bien décrit ici: https://help.github.com/articles/fork-a-repo

git remote add upstream https://github.com/octocat/Spoon-Knife.git
git fetch upstream
git merge upstream/master
git push origin master
Alex
la source
5

Vous devez ajouter le référentiel d'origine (celui que vous avez créé) en tant que distant.

git remote add github (clone url pour le référentiel orignal)

Ensuite, vous devez apporter les modifications à votre référentiel local

git chercher github

Vous aurez maintenant toutes les branches du référentiel d'origine dans votre référentiel local. Par exemple, la branche principale sera github/master. Avec ces branches, vous pouvez faire ce que vous voulez. Fusionnez-les dans vos succursales, etc.

Abizern
la source
1
Je suggère le nom upstreamde la télécommande.
vidstige
@vidstige Ce qui n'est pas vraiment assez descriptif si vous avez plusieurs télécommandes pour un référentiel. Par exemple, j'ai souvent une télécommande sur Github et une télécommande sur Dropbox.
Abizern
eh bien, alors c'est bien sûr logique. C'est pourquoi il est formidable de pouvoir les nommer vous-même. Réalisez que votre configuration est probablement moins courante que d'avoir une origine appelée distante qui est votre propre fork et que vous avez ensuite l'original, qui est généralement nommé "en amont".
vidstige
-8

Pour Linux:

git add * 
git commit -a --message "Initial Push All"
git push -u origin --all
Client
la source
3
C'est le contraire de ce que recherchait OP.
Ryan