2012-03-20 4 views
0

Nous avons demandé aux étudiants de notre classe d'utiliser github pour conserver tout leur code de projet. Chaque étudiant a créé son repo. (Je suppose que j'aurais dû créer le repo et créer des équipes et c'était mon erreur). J'ai ensuite bifurqué chacun de ces repos sous mon organisation.Extraction des mises à jour du dépôt original

Je pensais que je pourrais facilement tirer les changements au fur et à mesure que les élèves mettent à jour leur repo original. Je pense que ma compréhension de la façon dont la traction fonctionne est mauvaise.

Dans l'image suivante, je peux voir que l'étudiant a mis à jour son rapport avec de nouveaux documents, mais est-il possible de simplement mettre à jour le repo que j'ai fourchu?

enter image description here

+0

double possible de [? Comment mettre à jour référentiel fourchue GitHub] (http://stackoverflow.com/questions/7244321/how-to-update- github-forked-repository) – Nate

Répondre

9

En supposant que vous avez un dépôt central, vous devez mettre à jour votre repo fourchue, simplement add the source repository as a remote puis utiliser un git pull standard. Vous pouvez ensuite appliquer ces modifications à votre repo fourchu.

Il y a deux options pour mettre à jour facilement votre fourche:

Option 1

Fusionnez le repo en amont dans votre propre ...

# Add the remote, call it "upstream": 

git remote add upstream git://github.com/whoever/whatever.git 

# Make sure that you're on your master branch: 

git checkout master 

# Merge the upstream master branch to your master branch 

git pull upstream master 

# Now push your changes to your forked repository on github 

git push origin master 

Option 2:

Alternativement, vous pouvez utiliser rebase pour mettre à jour votre fourche ...

# Add the remote, call it "upstream": 

git remote add upstream git://github.com/whoever/whatever.git 

# Fetch all the branches of that remote into remote-tracking branches, 
# such as upstream/master: 

git fetch upstream 

# Make sure that you're on your master branch: 

git checkout master 

# Rewrite your master branch so that any commits of yours that 
# aren't already in upstream/master are replayed on top of that 
# other branch: 

git rebase upstream/master 

# Now push your changes to your forked repo on github... 

git push origin master 

Github a détaillé la documentation sur le travail avec les référentiels fourchues: Github: Fork a Repo

+0

Cela semble bien, même si certaines étapes et le texte peuvent être inutiles. Une source 'git pull' devrait suffire, l'extraction serait automatique. Un 'git push' devrait être poussé vers votre dépôt (en supposant qu'il a été extrait normalement ou configuré avec 'suivi' activé) – harningt

+0

Vous décrivez l'option 1 ... Si vous avez fait des changements sur votre fourche, vous devriez utiliser l'option 2 pour ne pas perdre vos commits – klaustopher

+0

@klaustopher, l'option 1 ne remplacera pas vos commits à moins qu'un travail entrant ne l'ait changé. (Dans ce cas, vous devrez résoudre certains conflits) Cela dépend simplement de ce que vous voulez faire. Les deux options sont sécurisées, mais si vous souhaitez que vos validations soient appliquées en plus des validations entrantes, vous devez utiliser rebase. Une discussion plus approfondie (Q/A) sur ce sujet: http://stackoverflow.com/questions/457927/git-workflow-and-rebase-vs-merge-questions –

Questions connexes