2017-07-06 5 views
0

Ich verzweigte ein Repo auf GitHub, dann habe ich git checkout X und machte einige Änderungen an Zweig X. Nachdem ich fertig war, machte ich eine Pull-Anfrage von der Verzweigung X des gegabelten Repos zum Zweig X des ursprünglichen Repos.
Meine Änderungen wurden mit dem Zweig X des ursprünglichen Repos zusammengeführt, dann habe ich weitere Änderungen vorgenommen und eine weitere Pull-Anforderung von meinem Zweig X an den Zweig des ursprünglichen Repos X vorgenommen. Allerdings zeigt dies immer noch meine zuvor verpflichtet, wie unter fusionierte, enter image description hereGit: Neue Pull-Request aus dem gleichen Zweig zeigt immer noch vorherige commits

Hier haben bis Jul 05, 2017 gemacht Commits bereits verschmolzen X des ursprünglichen Repo verzweigen. Ich brauche nur die Commits auf Jul 06, um auf diese Pull-Anfrage zu zeigen. Nach längerem Versuch kann ich keine Lösung finden. Hier ist, was ich habe, basierend auf this Post,

  • Setup neue Upstream wie so -
    git remote add upstream https://path/to/original/repo.git
  • Änderungen holt meine gegabelt Repo zu aktualisieren - git fetch upstream
  • rebase auf Zweig X - git rebase X
  • Doch jetzt Ich sehe eine noch größere Liste von Commits für die Pull-Anforderung. Ich bin mir sicher, dass ich nicht ganz verstehe, wie Pull-Anfragen funktionieren, aber ich nehme an, dass dies daran liegt, dass mein gegabeltes Repository nicht weiß, dass vorherige Commits bereits zusammengeführt wurden.
    Ich weiß, der übliche Workflow sollte sein, den Repo zu verzweigen, einen neuen Zweig für jede Änderung zu machen, eine Pull-Anfrage zu machen, den Zweig zu löschen, sobald Änderungen zusammengeführt wurden. Ich war mir dessen nicht bewusst und stolperte über dieses Problem. Wie schließe ich nur die neuen (nicht zusammengeführten) Commits in die Pull-Anforderung ein und nicht alle vorherigen?

    Danke für die Hilfe.

    Antwort

    1

    Eine Möglichkeit ist, cherry-pick Commits von einem frischen neuen Zweig von stromaufwärts:

    git fetch upstream X:X_new 
    git checkout X_new 
    git cherry-pick 92495c5 
    git cherry-pick ... 
    

    können Sie dann öffnen Sie eine neue Pull-Anforderung. Wenn Sie die gleiche Pull-Anfrage halten wollen, müssen Sie es auf den alten Namen benennen, und zwingen Push Ihre Repo:

    git checkout X 
    git checkout -b X_backup 
    git branch -D X 
    git checkout X_new 
    git checkout -b X 
    git push origin X -f 
    

    und dann, wenn es um Ihren Bedarf passt, können Sie die anderen Zweige löschen :

    git branch -D X_backup 
    git branch -D X_new 
    
    Verwandte Themen