開発者ブログ
hifive Developer Channelへようこそ! » GitHubでforkしてからPull Requestを出すまでのフロー

GitHubでforkしてからPull Requestを出すまでのフロー

Last modified by kashi on 2016/02/12, 22:26

hifiveなどに外部からソースコードのコミットを行うまでのフローをまとめます。
(以下はEclipseでhifive-ui-libraryへソースコードを追加する場合の例です。)

基本的には、自分のアカウントでプロジェクトをforkし、Pull Requestを出すことで修正を取り込むようにします。

開発のワークフローについては、独立性の高いソースが複数ある場合のワークフローも参照してください

Forkする

  1. GitHubに自分のアカウントでログインします。
  2. 対象のリポジトリ(今回はhifive-ui-library)にアクセスします。
  3. 画面の右上でForkボタンを押します。
    fork.png
    fork後の画面
    after-fork.png

プロジェクトをインポートする

  1. Gitリポジトリを複製する
    clone-repository.png
     
  2. 対象のブランチを選択する
    datagrid-devブランチを選択する場合
    choose-branch.png
     
  3. 修正用のブランチを作成する
    ブランチは修正内容ごと(=Pull Requestの単位ごと)に作成する
    例:datagrid-dev-fixcolumnなど
    create-branch.png

    create-branch-window.png
     
  4. 複製されたリポジトリを右クリック→プロジェクトのインポートする
    import-project.png

コードの修正・コミット

  1. 対象のソースコードを修正する
  2. 編集後、ファイルを右クリック→チーム→コミットでファイルをコミットおよびPushする

Pull Requestを出す

  1. 修正が完了したらPull Requestを出す
    Pull Requestはもとのブランチ(datargird-devなど)のコードに対して行うため、修正内容をこのブランチにマージする
    • datagrid-devブランチに切りかえる
      プロジェクトを右クリック→チーム→切替→その他からもとのブランチ(datagrid-devなど)を選択する
    • datagrid-devブランチにコミットをマージする
      プロジェクトを右クリック→チーム→マージでソースコードを修正したブランチを選択する
      マージ後、マージコミットが作成されるので、pullする
      1*.Pull Requestを作成する
      GitHubのページの自分のhifive-ui-libraryプロジェクトで「New pull request」ボタンを押す
      pull-request.png

レビューした結果、問題がなければhifive本体側にコードをマージします。
レビューで指摘があった場合は、8に戻り修正を行います。
修正が完了した後、再度Pull Requestを出す必要はありません(Pull Requestは対象のブランチの最新のコードをマージ対象とします)。

本体の更新内容を自分のリポジトリに取り込む

自分のソースコードの修正を行っている間、本体側でも開発が進み、差分が出ることがあります。
本体の修正内容をforkしたリポジトリへ取り込むには次の手順を踏みます。

  1. リモートリポジトリとして、オリジナルのリポジトリを設定する
    リモートの作成から新規リモートを選択し、適当な名前をつけて選択します。
    remote-repo.png

    remote-repo-window.png
     
    変更から元となるURIを指定します
    remote-repo-uri.png
     
    その後、保管するとリモート構成が設定されます
     
  2. 作成したリモートリポジトリを選択して、フェッチします
    remote-fetch.png
     
  3. 変更を取得できたら、現在のリポジトリにマージします
    プロジェクトを右クリックで選択してマージ→リモート・トラッキングで元のリポジトリの同じブランチを指定します。
    競合が出た場合は、競合の解消を行い、マージをコミットします。

Copyright (C) 2012-2017 NS Solutions Corporation, All Rights Reserved.