Von Zeit zu Zeit stoße ich auf dieses Problem.
Nehmen wir an, ich habe Folgendes getan, um den Quellcode von Rails zu lesen, da ich auf einige Probleme stoße.
git clone git://github.com/rails/rails.git
Während der Recherche habe ich etwas getestet und jetzt habe ich eine Lösung, die ich mir im Rails-Kernteam ansehen möchte. Wie schiebe ich meine Änderungen auf eine gespaltene Version von Schienen.
Denken Sie daran, dass ich beim Klonen keine gegabelte Version geklont habe, sondern eine schreibgeschützte Version.
Es ist nicht so, dass ich gegen das Gabeln bin. Es ist nur so, dass ich manchmal denke, ich werde nur stöbern, dann möchte ich etwas hinzufügen.
git
github
git-push
git-remote
Nick Vanderbilt
quelle
quelle
Antworten:
Wenn Sie ein Repo klonen, wird automatisch eine Fernbedienung namens aufgerufen,
origin
die sich auf das von Ihnen geklonte Repo bezieht. Dies zeigt jetzt auf das Upstream-Rails-Projekt. Sie müssen jedoch eine eigene Gabel erstellen, auf die Sie drücken können, und dann eine Fernbedienung einrichten, die dort zeigt, damit Sie darauf drücken können.Der erste Schritt besteht darin, auf der vorgelagerten GitHub-Projektseite auf die Schaltfläche "Gabel" zu klicken (Bild aus den GitHub-Anweisungen zum Gabeln ):
Sobald Sie dies getan haben, suchen und kopieren Sie die URL für dieses Repo. Stellen Sie sicher, dass Sie die SSH-URL verwenden, die Lese- und Schreibzugriff hat. Es sollte ungefähr so sein
[email protected]:nadal/rails.git
, vorausgesetzt, Ihr Benutzername istnadal
.Jetzt können Sie die Fernbedienung erstellen, mit der Git je nach Zugriff auf ein Remote-Repository den Überblick behalten, von diesem abrufen oder darauf zugreifen kann. Sie können entweder durch
origin
diejenige ersetzen, auf die Sie pushen (dh wie viele Personen haben sie eingerichtet), oderorigin
auf den Upstream zeigen und stattdessen eine neue Fernbedienung erstellen. Ich werde zeigen, wie das erste Setup durchgeführt wird. Der zweite sollte leicht herauszufinden sein.Um zu ändern
origin
, um auf Ihre Gabelung auf GitHub zu verweisen, möchten Sie wahrscheinlich den Upstream-Zweig irgendwo behalten, also benennen Sie ihn um inupstream
:Erstellen Sie nun eine neue Fernbedienung, die auf Ihre Gabel zeigt:
Und jetzt sollten Sie in der Lage sein, auf Ihre neue Gabel zu schieben:
Sobald Sie mit den Änderungen, die Sie an GitHub vorgenommen haben, zufrieden sind und möchten, dass sich jemand aus dem Rails-Team diese ansieht, haben Sie zwei Möglichkeiten. Eine besteht darin , eine Pull-Anfrage mit GitHub zu senden . Informationen dazu finden Sie in den dortigen Dokumenten. Wenn Sie jedoch nur einen oder mehrere kleine Patches haben, würde das Rails-Team es vorziehen, dass Sie ein Lighthouse-Ticket erstellen und Ihren Patch anhängen. Weitere Informationen finden Sie in den Anweisungen zum Beitrag zu Rails .
Bearbeiten Hier ist ein Diagramm, um anzuzeigen, was los ist. Was Sie getan haben, ist einfach das Upstream-Rails-Repo zu klonen. so jetzt können Sie Ihre eigene Repo auf Ihrem eigenen Rechner haben, die sich bezieht ,
git://github.com/rails/rails.git
wieorigin
:Folgendes erhalten Sie, wenn Sie Ihre Gabel gegabelt und dann geklont haben:
Wenn Sie meinen Anweisungen folgen, erhalten Sie Folgendes:
Dies entspricht genau der Version, die Sie durch Forking erhalten, mit der Ausnahme, dass es auch eine
upstream
Fernbedienung gibt, mit der Sie offizielle Änderungen verfolgen und in Ihren Code einfügen können (wenn Sie die gegabelte Version erstellt haben, möchten Sie dieupstream
Fernbedienung wahrscheinlich als hinzufügen Gut).quelle
Eine sehr einfache Möglichkeit, vom geklonten in den gegabelten Modus zu wechseln, ist die Verwendung des
hub
Wrappers von http://hub.github.com/ .Wenn dies installiert ist, führen Sie es einfach aus
aus Ihrem schreibgeschützten Klon heraus.
quelle
Es sollte keine Rolle spielen. Wenn Sie möchten, können Sie eine weitere Fernbedienung hinzufügen und Ihr nicht gegabeltes Repo angeben. Schieben Sie Ihre Änderungen darauf.
quelle
Wenn Sie nicht verzweigen möchten und abhängig vom Wartungsteam, können Sie einen Patch erstellen und an diese senden. Im Allgemeinen würden Sie Ihr Repo jedoch entweder auf Github verfügbar machen, wie in anderen Kommentaren erläutert, oder auf Ihrem eigenen Git-Repo, und den Betreuern des ursprünglichen Repos die Informationen für Ihr Repo und Ihren Zweig zur Verfügung stellen, in die sie zusammengeführt werden sollen.
quelle