Gitの使い方(2)コマンド編〜ブランチ、マージ、リベースなど

lecture
スポンサーリンク

ブランチの作成

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

*ブランチの作成

git branch <ブランチ名>

*ブランチの一覧表示

git branch

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

*ブランチの詳細

git log --oneline --decorate

*ブランチ切り替え

git checkout<既存ブランチ名>

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

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

git checkout -b <ブランチ名>

全てのブランチをpushする

ローカルリポジトリで管理していたブランチを全てまとめてpushする方法です。

git push --all origin

マージについて

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

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

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

git merge <ブランチ名>

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

git merge <リモート名/ブランチ名>

コンフリクト

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

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

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

*ブランチ名の変更

git branch -m <ブランチ名>

*ブランチ名の削除

git branch -d <ブランチ名>

#強制削除

git branch -D <ブランチ名>

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を削除します。
git branch -d task1

リベース

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

git rebase <ブランチ名>

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

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

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

一時避難

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

git stash

stashしたものを確認

git stash list

避難した作業を復元

git stash apply

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

git stash apply --index

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

“`
git stash apply stash@{1}
“`

コミットの取り消し

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

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

git reset <file>

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

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

git reset --hard

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

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

git reset <commit ID>

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

直前のコミットを修正

さらに、コミット内容を変更したい場合は「git commit –amend」を使います。

git commit -m "修正内容"

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

git reset --hard <commit ID>

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

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

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

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

[Tex]
[alias]
graph = log –graph –date-order -C -M –pretty=format:\”<%h> %ad [%an] %Cgreen%d%Creset %s\” –all –date=short
[/Tex]

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

git graph

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

タイトルとURLをコピーしました