ブランチ作成
git branch ブランチ名
:作成git branch
:使用中ブランチの確認。(git status
でも可)git checkout ブランチ名
:チェックアウトgit diff master
:masterとの差分表示git checkout -b ブランチ名
:ブランチ作成と同時にチェックアウト
git branch firstBranch
xxx.xxを編集しgit add xxx.xx
git commit xxx.xx
git diff master
プッシュ
git push origin ブランチ名
GitHubでのプルリクエストの作成
GitHub⇒Compare & pull request
マージ先、マージ元、reviewerを選択する。
reviewerはGitHub⇒Settingsタブ⇒Collaborators、で追加されたアカウントのみ指定可能。
Collaboratorsにはpushする権限が与えられる。
※forkしてリポジトリを作成した場合は、マージ先がデフォルトでfork元になっているので注意
GitHubのレビュー機能
GitHubのレビュー機能では、行にコメントをつけるとStart a reviewボタンが表示される。
2件目以降はAdd review commentに変わる。
入力したコメントはFinish your reviewやReview changesをクリックするまでは公開されないので注意。
Review changesクリック後、承認であればApproveを選択する。
Commentは承認せずにコメントを付けるだけ、Request changesは承認せずに修正依頼する場合に選択する。
マージ(GitHub上)
GitHubのプルリクエスト画面でmerge pull requestをクリックするだけ。
3種類のマージ方法があるが、通常はCreate a merge commitを選択する。
- Create a merge commit
トピックブランチに加えたコミットが全てベースブランチにマージされ、さらにマージコミットという新たなコミットも作成される。
操作の履歴がそっくりそのまま残る。 - Squash and merge
トピックブランチで追加したコミットを1つのコミットにまとめてからマージする。 - Rebase and merge
ベースブランチをリベースしてからマージする。 マージする前にベースブランチに追加されたコミットがある場合、そのコミットの後にトピックブランチを作成したかのように履歴が書き換わる。 まるで、枝分かれしていないかのごとく、コミット履歴が一直線になる。
プルとフェッチ
git pull origin ブランチ名
git fetch origin
プルとフェッチの違いは、ワークツリーの内容が変更されるかどうか。
プルはワークツリーが変更される。
(プル=フェッチ+ワークツリーへのマージ)
フェッチはローカルリポジトリへの取得のみ。
リモートにしか存在しないブランチの取得
リモートにしかないブランチを取得したい場合は、フェッチをしてからチェックアウトするとローカルにブランチが作成される。git fetch origin
git checkout ブランチ名
ブランチ作成とチェックアウトを同時に行うコマンド
git checkout 元のブランチ名
(GitHub flowの場合はmaster)git checkout -b ブランチ名
全てをgit add
git add -A
マージ(コマンド)
git checkout ブランチ名
git merge master
ステージングへの追加と同時にコミット
git commit -a
対象となるのはGit管理下に置かれているファイルのみ。 一度もgit add
していないファイルはコミットされないので注意。
ブランチの削除
- ローカルリポジトリ
git branch --delete ブランチ名
- リモートリポジトリ
git push --delete origin ブランチ名
まだマージしていないローカルリポジトリを削除する場合は git branch -D ブランチ名
とする必要があるが、基本的にはマージしたブランチを削除するべき。
コンフリクトの対処
- ファイルを修正して
git add xxx.xx
またはgit add -A
git commit
git push origin ブランチ名
2つのトピックブランチを作成し、masterへマージする例
git checkout master
git checkout -b branch-a
// ファイルを編集
git add -A
git commit -m "modify branch-a"
git push origin branch-a
git checkout master
git checkout -b branch-b
// ファイルを編集
git add -A
git commit -m "modify branch-b"
git push origin branch-b
// 例えば、この後branch-bを先にプルリクエスト⇒マージし、branch-aではさらに修正作業が必要な場合
git checkout master
git pull origin master
git checkout branch-a
git merge master