解 説

ブランチの作成

ブランチの作成コマンドの説明です。
**注意 ブランチを作成しただけではブランチを変更したわけではないことに注意してください。

*ブランチの作成

*ブランチの一覧表示

-aオプションをつけるとリモートリポジトリのブランチも表示してくれます。

*ブランチの詳細

*ブランチ切り替え

ブランチ操作でよく使うコマンド

*ブランチを新規作成して切り替える場合

マージについて

マージには3つの種類があります。

  1. Fast Forward:早送りになるマージ〜枝分かれしても親が一つです。
    もし、ブランチが枝分かれしてなかった場合はブランチのポイントを前に進めるだけです。
  2. Auto Merge:基本的なマージ〜枝分かれして親が複数あるものです。
    基本的なマージ、枝分かれして開発していた場合、マージコミットという新しいコミットを作ります。
  3. コンフリクト:同じ場所を修正したりすると起こります。なんらか手動での対応が必要です。

*ローカルリポジトリのブランチをマージ

*リモートリポジトリのブランチとマージ

コンフリクト

同じファイルに異なる編集を行ったら起こります。
コンフリクトについてはこちらを参考にしてください。

コンフリクト関連の事故を減らすルール

  • 複数人で同じファイルを変更しない決め事をしておく事
  • pullやmaergeする前に変更中の状態を無くしておく(commitしておく)事
  • pullするときは、pullするブランチに移動してからpullする事

*ブランチ名の変更

*ブランチ名の削除

Pull request

開発用のbranchを例えばtask1とするなら、そのタスクが完了して、リモートリポジトリのorigin masterに取り込ませたい場合、Pull requestを送ります。

手順

  1. リモートリポジトリになるorigin task1にpushします。
  2. pull requestsタブから表示されるリクエスト欄にリクエストします。
  3. レビューアーがレビューします。
  4. レビューに問題ありとなった場合、再度問題修正して再度pushして再びPull requestします。
  5. 問題がなくなったら、レビュアーはmergedボタンでmasterとマージします。
  6. masterをpullでローカルに取り込みます。
  7. task1を削除します。

リベース

リベースは概ねマージと同じことをします。つまり枝分かれしたブランチを取り込むのですが、大きく異なる点としてリベースは枝分かれをなくして一本の履歴にしてしまいます。マージは枝分かれの履歴をそのまま残すものです。

用途としてはマージは枝分かれの履歴を残したいときに使い、リベースは枝分かれの履歴が不要で綺麗な一本の履歴にしたいときに使います。

具体的な方法
目的はマスターに統合したいとします。

  1. まず、ブランチした方からマスターをリベースします。
  2. 次に、マスターに戻りマージします。

一時避難

stageingした作業やその前の変更を一時避難することができる。
そして別のブランチなどに移動できる。

stashしたものを確認

避難した作業を復元

ステージの状況を復元する場合

git stash listで確認した特定の作業を復元する方法


git stash apply stash@{1}

コミットの取り消し

「git reset」はコミット履歴を遡り無かったことにします。
注意:無かったことにした後にそれを戻すことはできません。

*ステージングから外す方法

このコマンドはステージングエリアに追加したファイルをステージングエリアから削除します。「git add」の取り消しと考えると良いでしょう。
ただし、ファイルへの変更はそのままの状態です。あくまでもステージングエリアから外しただけです。

*ステージングから外し、ファイル変更も元に戻すコマンド。

このコマンドはステージングエリアに追加したファイルをステージングエリアから削除し、尚且つファイルの変更も元に戻します。

*指定したコミットの状態まで戻す。

現在のブランチの位置を指定したまで戻します。
ただし、ワーキングエリア内の変更はそのまま保持されます。
これは無駄に付けたコミットをまとめるときに便利です。
さらに、コミット内容を変更したい場合

*指定したコミットの状態まで戻し、ファイル変更も元に戻す。

現在のブランチの位置を指定したまで戻します。
尚且つ、ワーキングエリア内の状態もその段階まで戻します。

Gitのブランチなどの履歴をグラフィカルに表示

Gitのブランチなどの履歴をグラフィカルに表示してくれます。
SourceTreeのような枝分かれの表示が直感的にわかりやすい。

これはあらかじめ$HOME/.gitconfig に次の記述を追加します。

コマンドは次の通りです。

Gitの使い方 コマンド編(1)〜環境設定から基本操作まで