2017-03-10 2 views
0

Ich habe noch nie mit Git gearbeitet, bevor ich mit diesem Projekt loslegen wollte, also bitte, bitte.Wie verzweige ich ein Github-Projekt zu einem Git Repo außerhalb Github?

Grundsätzlich beginnt mein Team ein neues Projekt in unserem eigenen Git Repository, das andere GitHub Projekte als Abhängigkeiten haben wird. Wir erwarten, dass wir Änderungen an den Abhängigkeiten vornehmen müssen, die wir in unser eigenes Repo zurückbringen wollen, damit alle im Team sie synchronisieren können. Wir möchten auch die Abhängigkeiten vom ursprünglichen GitHub Repo aktualisieren, da wir die Änderungen in unserem Repo auf GitHub zurückdrängen möchten. Macht das bisher Sinn?

Ok, also die Art und Weise wollte ich unser Projekt legen, etwas ist wie folgt:

root 
|- src     <- Our code goes here 
|- upstream    <- GitHub dependencies go under here 
    |- GitHub project A 
    |- GitHub project B 

Also dachte ich, die Art und Weise geht man dies zu tun ist, um für jede Abhängigkeit GitHub, git clone die GitHub Repo das gewünschte Verzeichnis, und dann git remote set-url origin <our repo url> und dann git remote add upstream <original github url>. Ich dachte, dann wäre ich in der Lage, Änderungen vorzunehmen, hinzuzufügen, zu committen und schließlich zu unserem Repo zu schieben. Und wenn gewünscht, ziehen Sie von der Upstream-Fernbedienung, um die Dinge auf dem neuesten Stand zu halten.

Leider hat dies nicht ganz geklappt, nachdem ich git add . von root tat, würde git status -s nicht die Dateien in den GitHub-Verzeichnissen wie hinzugefügt zeigen. Ein Commit und Push zu machen, Dinge in einen halb gebackenen Zustand zu bringen, und dann begann ich mich zu stressen, weil ich keine Ahnung habe, was ich mache.

Also wenn jemand etwas Hilfe teilen kann, würde ich es sehr schätzen, aber bitte sprechen Sie mit mir, als ob ich fünf Jahre alt wäre.

Antwort

1

Ihre Strategie würde funktionieren, aber nur wenn Sie tatsächlich über Schreibrechte verfügen, die Sie offensichtlich nicht haben. Da nur die Abhängigkeiten gegabelt werden müssen, und wenn die Repos in Github und nicht ein externes System beibehalten werden sollen, würde ich vorschlagen, dies zu tun. Dies ist davon auszugehen, dass der von Ihnen erwähnte Stammordner selbst kein git-Repo ist. Wenn ja, lesen Sie weiter, sonst springen Sie zum nächsten Absatz.

In diesem Fall können Sie den Upstream zu Ihrem gegabelten Repo in Github festlegen und dann einen PR von dort zum ursprünglichen Repo öffnen, während Sie Ihren eigenen (privaten?) Repo als origin Remote behalten. Sie müssen außerdem eine weitere Upstream-Remote im Repo hinzufügen, um Änderungen aus dem ursprünglichen GitHub-Repo zu ziehen.

Wenn der Stammordner ein Git Repo ist, dann ist die beste Option, jeden Ordner innerhalb des Upstream auf git submodule zu setzen. Auf diese Weise müssen Sie nicht drei verschiedene Versionen Ihres Repos verwalten (Original, Fork und in Ihrem Upstream-Ordner). Stattdessen können Sie die Repos in Github forken und dann auf die Forks im Upstream-Ordner verweisen. Änderungen daran können direkt zum Fork hinzugefügt werden. Sie können dann eine Pull-Anforderung für die ursprünglichen Repos von der Verzweigung über Github selbst öffnen.

Ich würde auch vorschlagen, den Upstream-Ordner in Ihrem Stamm zu etwas anderes umbenennen, da es ziemlich verwirrend sein kann, was Sie beziehen sich auf.

1

Sie möchten also für Ihr Projekt upstream bearbeiten/ziehen, um nicht selbst zum Upstream beizutragen. Auf diese Weise können Sie diesen Github Repo forkieren, Änderungen vornehmen und sie zur Gabelung schieben. Und ziehen Sie das Update aus dem Github Repo. Detailschritte wie folgt:

1.Fork das gewünschte Repo. Öffnen Sie das Github Repo -> klicken Sie auf Fork-Schaltfläche -> kopieren Sie die Fork-Repo-URL.

2.Arbeiten Sie mit Ihrem Repo wie folgt:

git clone <your repo URL> 
cd <your repo name> 
git submodule add <fork repo URL> upstream 
cd upstream 
git remote add real <URL of the github repo> 
# edit commit changes for the dependence 
git push origin branchname # push changes to the fork repo 
git pull real branchname  # pull the update of branchname from the github repo 
git push origin branchname # push changes to the fork repo 
cd .. 
git commit 
git push      #push changes to your repo 
Verwandte Themen