2016-10-13 4 views
1

Ich weiß, das ist keine neue Frage, aber ich habe versucht, viele Lösung hier zur Verfügung gestellt und nichts scheint für mich zu arbeiten.Erstelle separate Pull-Anfrage für jedes Commit

Ich habe ein Projekt gegabelt, um dazu beizutragen. Ich habe mehrere Commits gemacht und sie alle wurden nur unter einer Pull-Anfrage eingeschlossen.

Ich möchte neue Pull-Request für jeden Commit erstellen, ich habe versucht, einen neuen Zweig und fröhliche Kommissionierung besondere commit jedoch scheint es nicht zu funktionieren.

  1. Ich habe einen Master-Zweig, der 4 Commits vor dem Remote-Zweig ist. https://github.com/Gaurang033/Selenium2Library
  2. Wenn ich einen neuen Zweig von meinem Master erstellen, werden alle diese Änderungen auch kopiert. und so hilft auch die Schaffung einer Filiale nicht. https://github.com/Gaurang033/Selenium2Library/tree/click_elements

Hier einige Ausgabe von git log --all --oneline --graph --decorate:

* 340fb9e (origin/click_elements) Feature Request - Click Elements #585 
* 8a8f485 (HEAD -> master, origin/new_locator, origin/master, origin/HEAD) Merge remote-tracking branch 'upstream/master' 
|\ 
| * 2466942 (upstream/master) Libdoc updates - link to project and fix 404 (#668) 
* | e66862f Added method to find element by class name #673 
* | f8ec2ed Feature Request - Click Elements #585 
* | 264e38c Added following keywords and their acceptance test cases to fix the issue #463 table_cell_should_not_contain table_column_should_not_contain table_footer_should_not_contain table_header_should_not_contain table_row_should_not_contain table_should_not_contain 
| * [truncated: more commits on master in original repo...] 
|/ 
* ef5d24d Merge pull request #539 from ReadmeCritic/master 

Jemand bitte lassen Sie mich wissen, wie dieses Problem zu lösen?

Antwort

1

Wenn Sie eine PR auf GitHub einreichen, ist es normalerweise am besten, die PR atomar zu halten und sie mit dem offiziellen master auf dem neuesten Stand zu halten. Das heißt, jeder Zweig, den Sie für eine PR verwenden, sollte direkt von upstream/master kommen und nur die für diesen PR erforderlichen Commits enthalten.

Ihr Problem zu beheben, zuerst zurückgesetzt master mit upstream synchron zu sein:

git checkout master 
git reset --hard upstream/master 

Nun, für jede PR Sie einreichen möchten, erstellen Sie die entsprechende begehen eine Niederlassung und Kirsche-Pick. ZB:

git checkout -b branch1 
git cherry-pick f8ec2ed 
git push --set-upstream origin branch1 

Nachdem Sie fertig sind, können Sie Ihre ursprüngliche click_elements Zweig löschen:

git branch -D click_elements 
git push :click_elements 

Oder, wenn Sie diesen Zweig wollen nur enthalten die erste commit (so dass Sie die bestehende wiederzuverwenden PR), tun:

git checkout click_elements 
git reset --hard 264e38c 
git push --force-with-lease 

dieses Problem in Zukunft zu vermeiden, begehen nie direkt zu master. Stattdessen gehen Sie wie folgt vor:

  1. Aktualisieren Sie Ihre Repo, falls erforderlich:

    git checkout master 
    git pull upstream master 
    
  2. Erstellen Sie einen neuen Zweig (git checkout -b mybranch).

  3. Nehmen Sie Änderungen vor, die für diese PR auf diesem Zweig erforderlich sind, wie üblich.
  4. Unmittelbar vor Ihrer PR-Vorlage, die Feature-Zweig rebase.

    git checkout master 
    git pull upstream master 
    git checkout mybranch 
    git rebase master 
    

    (je nach Projekt können Sie in der Lage sein, selbst re, nachdem der PR geöffnet wurde jedoch oft werden Sie nicht brauchen zu, vor allem, wenn Sie dies direkt vor dem Öffnen des PR getan haben.)

  5. Öffnen Sie die PR.


Obligatorische Warnung: Da ein Fütterungsmaterial (sowie reset --hard) Geschichte neu schreibt, kann dies für jeden gefährlich/störend sein sonst auf diesem Zweig arbeiten. Stellen Sie sicher, dass Sie klar kommunizieren, was Sie mit jemandem, mit dem Sie zusammenarbeiten, getan haben.

+1

Das ist es. Der wichtige Punkt ist, dass jedes Commit oder jede Serie von Commits, die in einem einzelnen PR enthalten sein sollen, den Ursprung/Master als seinen übergeordneten Commit haben muss. –

Verwandte Themen