「いちばんやさしいGit&GitHubの教本」の感想・備忘録2

スポンサーリンク
「いちばんやさしいGit&GitHubの教本」の感想・忘備録1の続き

ブランチ作成

  • 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 ブランチ名とする必要があるが、基本的にはマージしたブランチを削除するべき。

コンフリクトの対処

  1. ファイルを修正してgit add xxx.xxまたはgit add -A
  2. git commit
  3. 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

コメント