2017-12-21 16 views
1

Meine Frage ist ähnlich wie folgt: How do I update a GitHub forked repository? Aber es ist ein bisschen kompliziert, weil mein Upstream ist ein sehr großes Projekt, das viele Untermodule haben.Wie aktualisiere ich ein GitHub gegabed Repository mit Submodul

git remote -v 
navi_dev  ssh://[email protected]/navi_development (fetch) 
navi_dev  ssh://[email protected]/navi_development (push) 
origin [email protected]:navi_int_internal.git (fetch) 
origin [email protected]:navi_int_internal.git (push) 

nave_dev ist die Wurzel Upstream ich von bekommen, und die Herkunft ist meine lokale Gabel.

aber in diesem Projekt gibt es viele Sub-Module: wie:

[submodule "ai_osal_common"] 
     path = ai_osal_common 
     url = gitolite:ai_osal_common 
[submodule "ai_osal_darwin"] 
     path = ai_osal_darwin 
     url = gitolite:ai_osal_darwin 

... 

Meine Frage ist, möchte ich auch diese Submodule in meinem lokalen Repo-Gabel. Die Submodule könnten aktualisiert werden, und der Upstream-Stamm könnte ebenfalls aktualisiert werden (Root-Upstream kann seinen Submodul-Hash aktualisieren). Wie kann ich sowohl den Root-Upstream als auch seine Submodule in meinem lokalen Repo synchronisieren?

Antwort

1

Tun Sie das gleiche in jedem Submodul wie der von Ihnen vorgeschlagene Link, aber das führt dazu, dass jedes Submodul das Neueste aus seinem jeweiligen Masterzweig hat, und das ist möglicherweise nicht korrekt.

Also mein Vorschlag ist die folgende:

# Fetch all the branches of navi_dev remote into remote-tracking branches: 

git fetch navi_dev --recurse-submodules 

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

git checkout master --recurse-submodules 

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

git rebase navi_dev/master 

Wenn Sie Änderungen vorgenommen haben, sich in jedem Modul, müssen Sie sie auf ihrem ursprünglichen entfernten Hauptzweig auch rebase.

Verwandte Themen