2016-10-13 24 views
1

私はこれが新しい質問ではないことを知っていますが、ここでは多くの解決策を試してみましたが、何も私にとってうまくいかないようです。コミットごとに別々のプルリクエストを作成する

私はそれに貢献するプロジェクトをフォークしました。私は複数のコミットを行い、それらはすべて1つのプルリクエストにのみ含まれています。

コミットごとに新しいプルリクエストを作成したいのですが、新しいブランチを作成しようとしましたが、特定のコミットを賢明に選択しても動作しないようです。

  1. 私はリモートブランチより4つ先にコミットするマスターブランチを持っています。 https://github.com/Gaurang033/Selenium2Library
  2. マスターから新しいブランチを作成すると、これらの変更もすべてコピーされます。ブランチを作成することも役に立ちません。ここで https://github.com/Gaurang033/Selenium2Library/tree/click_elements

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 

誰かに私はこの問題を解決する方法を教えてください?

答えて

1

GitHubでPRを提出する場合は、通常、PRをアトミックに保ち、公式masterで最新の状態にすることが最善です。つまり、PR用に使用しているブランチは、upstream/masterから直接取得し、そのPR用に必要なコミットのみを含める必要があります。

upstreamと同期するために masterをリセットし、最初に、あなたの問題を解決するには、次の

git checkout master 
git reset --hard upstream/master 

さて、それぞれあなたは、提出する新しいブランチを作成し、適切なコミットをチェリーピックしたいPRのために。例えば:あなたが完了したら

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

、あなたの元click_elementsブランチを削除することができます。

git branch -D click_elements 
git push :click_elements 

それとも、あなただけにそのブランチをしたい場合は、最初の既存を再利用できるようにするため、(コミット含まPR)、ん:

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

を直接コミット、将来的にこの問題を決して避けないためにmaster。代わりに、次の操作を行います。

  1. 更新あなたのレポを、必要に応じて:

    git checkout master 
    git pull upstream master 
    
  2. は新しいブランチ(git checkout -b mybranch)を作成します。

  3. に必要な変更を加えて、このブランチのPRを通常どおりにコミットします。
  4. すぐにあなたのPRを提出する前に、あなたの機能ブランチをリベース:

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

    (プロジェクトによっては、あなたがPRが開かれた後でさえしかし、多くの場合、あなたが必要としませんリベースすることができるかもしれません。特に、あなたがPRを開く前にそうしたのであれば)。

  5. PRを開きます。


必須警告:リベース(だけでなく、reset --hard)以来の歴史を書き換え、これはこのブランチに取り組んで他の誰のための破壊的/危険なことができます。コラボレーションしている相手と行ったことを明確に伝えてください。

+1

これはそれです。重要な点は、単一のPRに含まれる各コミットまたは一連のコミットが、親コミットとしてorigin/masterを持たなければならないことです。 –

関連する問題