チーム開発で最初につまずいたので備忘録として・・・
フォークとは
他ユーザーの公開リポジトリをコピーして自分のGitHub上に新しくリポジトリを作成する事。
自分のリポジトリなので自由にプッシュ・マージなどが行える、またこのコピーしたリポジトリから親(フォーク元)リポジトリへプルリクエストを送る事ができる為、
- フォークしたリポジトリで作業を行う
- プルリクエストを親リポジトリへ送る
- 親リポジトリにてmasterブランチにマージ
という流れで共同開発ができる。
フォークしたリポジトリを最新に更新する方法
じゃあその更新された親リポジトリをどうやって自分のリポジトリに同期するのか。
今回はターミナル上の操作で更新を行う。
◆作業の流れ
- 親リポジトリの更新を取得
- 取得した更新をローカルブランチに反映
- 更新したローカルブランチをリモートリポジトリにプッシュ
1. git fetch
他のリポジトリからデータを取得するコマンド。
まずはこれで親リポジトリのデータを取得するので、
親リポジトリの名前をgit remoteで確認する。(-v オプションでURLも出せる)
$ git remote
origin
upstream
origin→フォークしたリモートリポジトリ名
upstream→親(フォーク元)のリモートリポジトリ名
フォークした場合親リポジトリ名のデフォルトはupstream
らしい。
git fetch upstream
2. git checkout
現在のブランチを切り替えるコマンド。
フォークしているローカルのブランチをmaster
に切り替える。
$ git checkout master
3. git merge
現在のブランチへ他のブランチの更新を取り込むコマンド。
ローカルのmaster
ブランチに親リポジトリの更新を取り込む。
$ git merge upstream/master
4. git push
ローカルブランチの更新をリモートリポジトリに送るコマンド。
最新の状態にしたローカルブランチをフォークしたリモートリポジトリへ送る。
$ git push origin master
最後に
今回初投稿になりますが、今後も気になった事は備忘録としてまとめていきたいと思います。
ちなみにgit fetch upstream
の中身はローカルブランチのupstream/master
に更新データを保存していて、git merge upstream/master
でそのブランチを指定してmaster
にマージしてるで合ってるはず・・・