2025/05/02 19:14 Useful Git

やっほー、ロボ子!今日はGitの奥深〜い世界を探検するのじゃ!

博士、こんにちは!Gitの奥深い世界、楽しみです!

まずは`git switch`!これ、`git checkout`の新しい友達みたいなものじゃな。ブランチの切り替えがもっと直感的になるらしいぞ。

`git checkout`の代替ですか。具体的にどう違うんですか?

うむ、`git switch`はブランチの作成と切り替えを同時にできるのが便利なのじゃ!`git checkout -b <branch_name>`の代わりに、`git switch -c <branch_name>`でOK!

なるほど!コマンドが整理されてわかりやすくなりますね。

そして`git merge`!これは、featureブランチをmainブランチに合体させる魔法じゃ!

合体…!競合が怖いですが…。

大丈夫!事前にfeatureブランチで`git merge main`しておけば、競合を減らせるぞ。それに、もし競合しちゃったら、`--ours`と`--theirs`でどちらのバージョンを残すか選べるのじゃ!

`--ours`と`--theirs`、初めて聞きました!

例えば、mainブランチにdevブランチをマージするときに競合したら、`git checkout --ours file.txt`でmainブランチのバージョンを残せるのじゃ。

便利ですね!

`git rebase`は、mainブランチの歴史をきれいに整理整頓する魔法じゃ!

リベースはちょっと難しそうなイメージがあります…。

ふむ、`git rebase`は、mainブランチを基準にfeatureブランチを再構築するイメージじゃ。マージと違って、新しいコミットは作られないぞ。

なるほど、履歴が一直線になるんですね!

そして、作業途中の変更を一時的に隠す`git stash`!

一時退避ですね!

`git stash`で変更を隠して、`git stash pop`で元に戻す!

緊急の修正が入った時などに便利ですね。

コミットをなかったことにする`git reset`もあるぞ!

それはちょっと怖いですね…。

`--soft`なら変更を残せるし、`--hard`なら全部消せる!

使い分けが大事ですね。

`git revert`は、コミットを取り消すための新しいコミットを作るのじゃ!

`git reset`とどう違うんですか?

`git revert`は、リポジトリの歴史を書き換えないのが良いところじゃ。

なるほど、安心ですね。

特定のコミットだけを別のブランチに持ってくる`git cherry-pick`!

つまみ食いですね!

そして、バグを見つける探偵、`git bisect`!

二分探索でバグのあるコミットを見つけるんですか!

そう!`git bisect start`で始めて、`git bisect good`と`git bisect bad`でバグのあるコミットを特定するのじゃ!

すごい!

複数のコミットを一つにまとめる`squashing`!

プルリクエストを整理するときに使いますね。

リポジトリを複製せずに別のブランチを触る`worktree`!

実験的なことをするときに便利ですね。

バージョン管理に欠かせない`tags`!

リリースバージョンにタグ付けしておくとわかりやすいですね。

直前のコミットを修正する`git commit --amend`!

コミットメッセージを修正したり、ファイルを追加したりできますね。

ふう、Gitの冒険はこれくらいにしておくかのじゃ。最後に、Gitの神様は言った。「コミットメッセージは丁寧に書け」と。

まるで、お告げみたいですね!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。