2016-04-29 7 views
0

TLDR: Kann ich möglicherweise die Zweige eines gegabelten Repositorys auschecken, das ein Git-Submodul ist? Im Moment scheint es nur die Zweige des Eltern-Repos auszuprobieren, obwohl es HEAD mit den letzten Commits meines gespaltenen Repos ist.Submodul gegabeltes Repository Abzweigungen des übergeordneten Repositorys abrufen


Es war ein Open-Source-Bibliothek, die ich nicht gelingt TheLibrary genannt, die ich als git Submodul hinzugefügt. Dann musste ich die Bibliothek ändern und sie als ein git Submodul verwenden, also gab ich sie auf github ab, fügte einen neuen Zweig modifications hinzu und legte meine Änderungen dort hin. Dann ist mein Projekt aktualisiert ich .gitmodules Datei meine gegabelt Bibliothek URL enthalten, etwa so:

[submodule "libs/TheLibrary"] 
    path = libs/TheLibrary 
    url = https://github.com/myUsername/TheLibrary.git 
    branch = modifications 

Dann habe ich git submodule sync in Terminal, das dieses Ergebnis gab:

Synchronizing submodule url for 'libs/TheLibrary' 

Dann ging ich in die libs/TheLibrary Verzeichnis auf dem Terminal, und wenn ich gemacht habe git fetch gab es mir die Zweige aus dem übergeordneten Repo (Master, Feature/FeatureA). Allerdings sollte mein gegabeltes Repository nur diese Zweige haben: (Master, Modifikationen).

Als ich git remote -v tat, gab es dieses Ergebnis:

origin https://github.com/myUsername/TheLibrary.git (fetch) 
origin https://github.com/myUsername/TheLibrary.git (push) 

Wenn ich git branch tun, hat es dies:

* (HEAD detached at a1b2c3def) 
feature/featureA 
master 

jedoch Merkmal/featureA ist nur ein Pull-Request ich tat das übergeordnete Repository Mein gegabeltes Repository sollte den Zweig modifications enthalten, den ich hinzugefügt habe.

Wenn ich tun git log, zeigt es alle jüngsten Commits aus der modifications Zweig.

Wie überprüfe ich den Zweig modifications, damit ich fortfahren kann, Änderungen an der gegabelten Bibliothek hinzuzufügen und sie zum Remote-Repo zu schieben? Der Zweck ist, dass ich immer noch in der Lage sein soll, Updates aus dem übergeordneten Repo in unsere eigenen Änderungen einzufügen. Ist das überhaupt möglich? Vielen Dank!

Antwort

0

TLDR: Ich konnte das vorhandene Modul nicht aktualisieren, damit es funktioniert. Ich hatte diesen Befehl mit der -b Flagge laufen und es funktionierte: git submodule add -b modifications https://github.com/myUsername/TheLibrary.git

So Ändern eine vorhandene Modul manuell nicht zu funktionieren schien, auch wenn ich die gesamte Bibliothek Ordner (libs/TheLibrary) gelöscht und wieder abgerufen git submodule init und git submodule update (die es erneut klont).

Aber wenn ich tat dies:

git submodule add -b modifications https://github.com/myUsername/TheLibrary.git

Er legte es im aktuellen Ordner versehentlich (Ich glaube, ich hätte den richtigen Pfad als letzten Parameter gesetzt), aber als ich es in zu sehen, ob es den richtigen Zweig ausgecheckt (I git status tat) gesagt:

On branch modifications 
Your branch is up-to-date with 'origin/modifications'. 
nothing to commit, working directory clean 

das heißt, es hat funktioniert! Für eine gute Maßnahme, habe ich git branch zu sehen, ob es die richtigen Zweige hatte:

master 
* modifications 

und tat es! Also ich denke, dass es immer so gemacht werden muss, mit dem Befehl mit dem -b Flag, nicht die Art, wie ich versuchte, das Submodul manuell zu aktualisieren.


Hinweis: Auch nach dem es funktionierte, es hat dieses Bild in .gitmodules:

[submodule "TheLibrary"] 
     path = TheLibrary 
     url = https://github.com/TheLibrary/TheLibrary.git 
     branch = modifications 

Auch wenn es genau das gleiche wie das, was ich vor (anders als die anderen Pfad) eingetreten war, Es hat vorher nicht funktioniert. Wenn Sie den Befehl ausführen, können andere Dinge passieren, die hinter den Kulissen liegen, und ich denke, dass das manuelle Ändern dieser wenigen Dateien nicht ausreicht.


Anmerkung 2: Als ich endlich den richtigen Ordner bekam ich diese git Fehler bekam:

A git directory for 'libs/TheLibrary' is found locally with remote(s): 
    origin https://github.com/myUsername/TheLibrary.git 
If you want to reuse this local git directory instead of cloning again from 
    https://github.com/myUsername/TheLibrary.git 
use the '--force' option. If the local git directory is not the correct repo 
or you are unsure what this means choose another name with the '--name' option. 

Also lief ich diesen Befehl mit der --force Option und überprüft, dass es funktionierte:

git submodule add --force -b modifications https://github.com/myUsername/TheLibrary.git

Verwandte Themen