見出し画像

【Git】とってもシンプルに使える新機能たち

先日Gitがバージョンアップし、新たなコマンドが同時に2個も追加された!
どちらも今までよりも直感的に操作可能な良いコマンド。

新たなコマンドの機能自体は新機能というわけではなく、今までのコマンドの機能を分離させたものなる。新コマンドは以下の2つ。

1. git restore:ファイルの状態を元に戻す。
2. git switch:作業ブランチを移動する。

今までは、上記の作業を git checkout コマンドで行っていた。このコマンドやれることが多く、使いづらいなとは感じていた。あとは何よりも何となく作業内容とコマンド名がうまく結びつかないような気がしていた...これは自分だけかな....

でそんな中、2つの新コマンドが出てきて、便利になったかな?と思い、ちょっと使ってみた。そしたら、今までのコマンド(git checkout)を用いるよりも直感的に扱うことが可能で、とても好感触だったのでちょっとどっかに書いておこうと思い立ちnoteにでもまとめておこうかなと。

git restore

git restore はファイルの状態を変更するコマンド。例えば以下のように利用する。

# file.txt を対象として実行
$ git restore file.txt

# カレントディレクトリのファイルすべてを対象として実行
$ git restore .

これらは、コミット後に変更したファイルを元に戻すことができる。例えば、編集したはいいけど、その変更分がいらなくなり捨ててしまいたい場合などに用いることができる。
ちょっとテスト用にコードを改造して、満足したら元に戻すなんて使い方が便利かも?

ただ、変更したといっても、git add でステージングエリアに移行したファイルは元に戻らない。それを元に戻したい場合は以下のコマンドを実行した後に実行すればよい。

$ git restore --staged file.txt

このコマンドは、ステージングエリアにある対象のファイルをワーキングディレクトリーに戻すことができる。簡単に言うと、 git add したファイルをadd 前に戻すことができる。今までは、git reset を用いて行っていた操作になる。

あとは、好きなコミットに含まれるファイルを取り出し、取得することができる。

$ git restore --source=other-branch^ hello.txt

上記は、「other-branch」ブランチの最新コミットの一つ前のコミットの「hello.txt」ファイルを取得するコマンド。
これを用いることで、好きなタイミングのファイルに変更することができる。それでもこれはあまり使うことはないのかな..?

git switch

git switch はブランチの変更や作成を行うコマンド。例えば以下のように使用する。

$ git switch other-branch

これは、シンプルにブランチを移動することができる。

作成しながら移動したいなら、以下のように実行しよう。

$ git switch -c new-branch

# ひとつ前のコミットから派生させたブランチを作成
$ git switch -c new-branch HEAD^

単純にオプションとして「-c」をつければよいだけ。「-c」はcreateのcとなっている。

また、特定のコミットからブランチを派生させたい場合は、2個目のコマンドのように、後ろに分岐点のコミットをつけてあげればよい。とってもシンプル。

おわりに

新しい2つのコマンドをざっとまとめてみた。
自分としては、git checkoutコマンドが苦手だったので、わかりやすく機能が分離してくれて結構うれしい。

まだまだ2つのコマンドには、オプションなどがいっぱいあるのでヘルプとかを読んでみると面白いと思う。

ただ、注意事項がある。今回の2つのコマンドは実験的なものなので、この先仕様が変更される可能性があるのでそれだけ注意が必要。

おまけ

ちょっと驚いたこと。

$ git switch -

で、一つ前にいたブランチに戻ることができる。
cd - と同じ感覚で使えるとは...!とちょっと驚いてた。
この機能は前からあったのかなと思って git checkout を確認したら、なんとあった...

全然知らなかったなぁって話。


見出し画像のロゴ : Git Logo by Jason Long. 

この記事が気に入ったらサポートをしてみませんか?