2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Git の操作をセマンティックに整理する

2
Posted at

はじめに

Git では、やりたいことに対して様々な方法をとることができますが、checkoutswitchrestore に分けられるように、意味的により分かりやすいコマンドがあるはずです。
この記事では、個人的によく使っていた操作を意味的に分かりやすいコマンドに整理してみます。

branch の切り替え

現在の branch から、異なる branch へと切り替える際のコマンドです。

操作 Before After
branch の切り替え git checkout <branch> git switch <branch>
branch の新規作成・切り替え git checkout -b <branch> git switch -c <branch>

switch を使うことで、切り替えるという意図を明確にします。

変更の取り消し

作業中の変更の取り消し

作業中のファイルの変更を取り消す際のコマンドです。

操作 Before After
ファイルの変更取り消し git checkout -- <file> git restore <file>
ディレクトリ内の変更取り消し git checkout -- <directory> git restore <directory>
全ファイルの変更取り消し git checkout -- . git restore .

restore を使うことで、復元するという意図を明確にします。

作業中の変更の取り消し の方のコマンドをより明示的にするなら、-W or --worktree を付けることもできます (これはデフォルトの動作です)

ステージした変更の取り消し

ステージした変更を取り消す際のコマンドです。

操作 Before After
ファイルの変更取り消し git reset HEAD <file> git restore -S <file>
ディレクトリ内の変更取り消し git reset HEAD <directory> git restore -S <directory>
全ファイルの変更取り消し git reset git restore -S .

-S--staged のエイリアスです。
reset も復元という感じなのですが、ステージングエリアから戻すという意図が -S によって明確になります。

未追跡な変更の取り消し

新規作成などの追跡されていないファイルの変更を取り消す際のコマンドです。

操作 Before After
ファイルの削除 rm <file> git clean -f <file>
ディレクトリの削除 rm -rf <directory> git clean -f <directory>
全ての未追跡ファイルの削除 - git clean -df

これは Git の機能を使うことで、OS レベルの操作ではなく、Git 管理というスコープにおいて掃除を行うことを明確にしています。

全ての変更の取り消し

追跡されているか否かに関わらず、全てのファイルの変更を取り消す際のコマンドです。

操作 Before After
全ファイルの変更取り消し git stash -u
git stash drop
git restore .
git clean -df

stash では退避ということになってしまうので、単に取り消しを行う場合は、こちらの方が良さそうです。

おわりに

Git のコマンドは大量にあり、やりたいことを実現するコマンドを手に馴染ませるまで時間がかかりますが、意味を意識してコマンドを使っていくと、より早く馴染むのではないかなと思います。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?