2016-04-05 16 views
2

Ich habe zu vielen Open Source-Projekten beigetragen. Typischerweise als extern Mitwirkende sie zu tragen haben keinen Schreibzugriff auf das Repository haben, ist der Arbeitsablauf wie folgt:Git Merge mit Remote Master

  1. Fork die Repo- und clone eine private Kopie
  2. git checkout -b feature-branch auf dem gegabelten Repo
  3. Drücken verpflichtet sich, diesen Zweig
  4. eine Pull-Anforderung Öffnen zu fusionieren local:feature-branch in remote:master

Das alles ist in Ordnung, aber ich Ich bin kürzlich auf ein Problem gestoßen, als ein Merge-Konflikt zwingt, master in meinen Feature-Zweig zu verschmelzen, damit die Pull-Anfrage akzeptiert werden kann.

würde der Befehl typischerweise:

git checkout master 
git pull origin master 
git checkout feature-branch 
git merge master 

Aber wenn ich durch diese Schritte gehen, git zeigt Already up-to-date., was Sinn macht. Da ich eine gegabelte Version des Repos habe, kann meine Kopie die letzten remote Änderungen nie auf master erhalten.

So sieht es aus, weil ich an einer gegabelten Kopie arbeite, die nicht zusammengeführt werden kann, mein PR ist für immer un-mergable.

Wie kann ich sein Problem beheben?

Vielen Dank für Ihre Hilfe!

+0

Ist [diese] (http://stackoverflow.com/questions/3903817/pull-new-updates-from-original-github-repository-into-forked-github-repository), was Sie suchen ? – intboolstring

+0

Vielleicht, aber ich habe das Gefühl, dass dieser Workflow so üblich ist, dass es andere Schritte geben sollte. –

Antwort

1

Der Befehl würde typischerweise:

git checkout master 
git pull origin master 
git checkout feature-branch 
git merge master 

Nun, wäre das Problem in der 2. Zeile da sein.

git pull origin master 

Die Fernbedienung origin ist auf Ihre Gabel eingestellt. Wenn Sie laufen so etwas wie

git remote show origin 

so etwas wie

* remote origin 
    Fetch URL: https://github.com/YOUR-NAME/repo.git 
    Push URL: https://github.com/YOUR-NAME/repo.git 
    HEAD branch: master 

wird sich zeigen.

Das gesagt, müssen Sie von der gegabelten Fernbedienung ziehen. Führen Sie

git remote show 

, die alle Fernbedienungen zeigen wird.

Kasse zu Ihrem Master-Zweig und dann

git pull <the-remote-that-isnt-origin> master 

laufen, wo <the-remote-that-isnt-origin> die Fernbedienung, die das zeigt sich nicht origin wenn Sie git remote show laufen.

Nun, die meisten Open-Source-Projekte mögen keine Merge-Commits, also schlage ich rebasing vor.

git checkout your-branch 
git rebase master 
1

Was würden Sie tun müssen, ist master der Remote-Repo geht in Ihre feature-branch so Ihre Niederlassung ist up-to-date mit der Remote-master, nicht Ihrem eigenen origin Meister.

git checkout feature-branch 
git pull remote master 
+0

Ja, das habe ich mir gedacht. Was schlecht ist, weil ich das Remote Repo nicht kontrolliere. Und schlimmer noch, die Eigentümer des Repos besitzen meine Gabel nicht. Die Zusammenführung kann also niemals passieren. –

+0

Die Tatsache, dass Sie es überhaupt forken können, bedeutet, dass Sie mindestens Lesezugriff darauf haben, was bedeutet, dass Sie von ihrem Master ziehen können. 'git remote addieren sie ihre [email protected]: ihre/repo.git' ' git ziehen ihre Meister' –

Verwandte Themen