🗝️

Gitコマンド入門::restore(branch,checkout)「第十回」

2021/02/12に公開

<tree> = 木

前回は、commitを繰り返し、Repogitory に履歴が残っていくなかで、特定のコミットから、ファイルをrestoreするところまで体験してみました。また、helpの中には、<tree>という単語が、ところどころ出てきますが、これらのイメージは、commitを繰り返しながら、分岐していくことも可能であり、枝分かれをイメージ出来るところから、<tree>木と名づけられたのでしょう。今日は、その分岐コマンド、git branch を試しながら枝分かれに挑戦! 下に、そのイメージ画像を貼り付けてみました~(笑)

ちなみに前回の記事は、こちらです!

https://zenn.dev/shiozumi/articles/c770c2435b00ab

git branch コマンド!

前回から、git resotre --source=<tree> その流れで、<tree> に設定できる値を、深堀してきました。今回は、ブランチ! main から分岐させて、そこからのファイルリストアーを、試していきましょう! また、このブランチ機能が、git のひとつの特徴であり、多用することになると思いますので、是非、しっかり理解したいところです。

それでは、ブランチを作成、表示、削除まで!

一覧表示からの作成[subブランチ][1]

// 初期状態では、ブランチの一覧表示、main のみですね!
$ git branch
* main

// では、ブランチ名 sub を作成
$ git checkout -b sub
Switched to a new branch 'sub'

// sub が追加されていますね。さらに、sub に切り替わっています。
$ git branch
  main
* sub
// * マークは、現在の選択しているブランチとなります。

切り替えてからの削除[subブランチ][2]

// では、再び元のmainにブランチを切り替えます。
$ git checkout main
Switched to branch 'main'
Your branch is ahead of 'origin/main' by 1 commit.
  (use "git push" to publish your local commits)

// 現在のブランチ一覧と、選択も、mainに切り替わりました。
$ git branch
* main
  sub

// 作成した、sub ブランチを、削除!
$ git branch --delete sub
Deleted branch sub (was b8c6432).

// これで、初期状態に戻りましたね!
$ git branch
* main

さあ、コマンドを数回繰り返して入力してみましょう!(笑)
いきなりですが、branchの他、checkout の二種類を扱います。ちょっと頭が混乱してしまいそうになりますけど、ブランチの一覧表示と削除が、branchコマンド、ブランチの作成と選択切替は、checkout となりますね。

そして、毎度の作図をどうぞ!

$ git checkout main
Switched to branch 'main'
// 以下、省略

$ git log
commit b8c6432555dcffd05d0973179add7bbb19d39d5d (HEAD -> main, sub)
Date:   Wed Feb 10 22:59:21 2021 +0900

    2nd commit

commit a467fbdd7e989b224f388e048823068a0f122d51 (origin/main)
Date:   Wed Feb 10 15:28:42 2021 +0900

    first commit
$ git checkout sub
Switched to branch 'sub'
$ git log
commit b8c6432555dcffd05d0973179add7bbb19d39d5d (HEAD -> sub, main)
Date:   Wed Feb 10 22:59:21 2021 +0900

    2nd commit

commit a467fbdd7e989b224f388e048823068a0f122d51 (origin/main)
Date:   Wed Feb 10 15:28:42 2021 +0900

    first commit

ブランチsubとmainが同じかどうかの確認!

次は、本当に複製されているのか確認ですね。今回は、diff コマンドを使ってみましょうか? まずは、subブランチのRepogitoryのHEADのREADME.mdと、mainブランチにある、Repogitoryの2ndコミットのREADME.mdの比較ですね。ファイルの中身が同じなら差分表示が出ない筈!

git diff sub main README.md or git diff main sub README.md[3]
2nd commit の次は、first commit を比較してみましょう!
git diff sub^ main^ README.md or git diff main^ sub^ README.md[4]

こちらが、比較コマンドのイメージ図です。

それでは、今回はここまで、お疲れ様でした!

https://zenn.dev/shiozumi/articles/21490ec9e54a28
https://twitter.com/esmile2013

脚注
  1. git checkout -b sub は、現在選択されているmainを元にして、新しいブランチを作成します。Working tree に編集中「コミットされていないファイル」があると、警告文がでます。 ↩︎

  2. git checkout main で、subからmainに選択切替を行わないと、subを削除できません。まあ~自分を選択していて自らを消すって妙な感じですから出来なくて当然。(苦笑) ↩︎

  3. main sub の順番はどちらでも可能です。 ↩︎

  4. ^を付けると、ひとつ前のコミットを選択可能です。尚、二つ前なら、^^ と連続して記載すれば大丈夫です。よって、10個書けば、10個前ですよ~ ^^^^^^^^^^(笑) ↩︎

Discussion