.gitconfig を使って untracked files のみを退避させる
- git
概要
- 自分で運用しているブログサイトは
git
を用いて管理しています。新しい記事を作成する際に、untracked files
のみをgit stash
して、退避させたいことがありました。しかし、git
にはデフォルトでuntracked files
のみを退避させるコマンドは無いそうです。そこで、今回は.gitconfig
を使用して工夫したことについての記録を残したいと思います。
背景と目的
新しい記事を作成するために
hugo new
コマンドで記事の雛形を作成します。過去に書いた記事を参考にしつつ新しい記事を書いていると、過去の記事にタイポを見つけて修正したくなることや、言い回しを変えたくなる時があります。その内容を修正しつつ、一通り満足の行く新しい記事を書き終えると、hugo
コマンドで修正したり作成したファイルをbuild
を行った後にpush
する必要があります。しかし、修正した過去の記事と新規作成した記事のbuild
を別々に行った後にpush
してコミットを分けたいと考えています。そのため、このようなケースでは一旦新規作成した記事を退避させてbuild
を行い、push
します。そして、その後にgit stash pop
で退避させた新規作成した記事を元に戻してからbuild
を行い、push
するようにします。こうして
untracked files
のみを退避させたいのですが、このコマンドは毎回調べているイメージがありました。その調べている時間が無駄でもったいないと感じていました。そこで、今回はその無駄な手順を省くために.gitconfig
を使用し、untracked files
のみを退避させるエイリアスを設定しました。また、.bashrc
に記述していたgit
コマンドのエイリアスも.gitconfig
に移して、設定ファイルの整理も行いました。
方法
untracked files
のみを退避させる方法は How to git stash only untracked files? を参考にさせて頂きました。加えて、普段からよく使うようなgit
コマンドもエイリアスに追加しました。
[alias]
s = status
d = diff
co = commit
p = push origin HEAD
pu = pull
ch = checkout
r = reset
st = stash
stp = stash pop
stu = stash -u
stash-untracked = "!f() { \
git stash; \
git stash -u; \
git stash pop stash@{1}; \
}; f"
git stash-untracked
コマンドを実行した際のstash list
の状況は以下のようになると推測できます。こうしてuntracked files
のみを退避させているようです。
git コマンド (実行後) | stash list の状況 |
---|---|
git stash | {0}: 修正ファイル |
git stash -u | {0}: untracked files |
{1}: 修正ファイル | |
git stash pop stash@{1}; | {0}: untracked files |
- また、もともと
.bashrc
には、以下のようにgit
コマンドのエイリアスを書いていました。これらを上述のようにエイリアスを.gitconfig
に移行しました。
alias gs='git status'
感想
- 今回は、
.gitconfig
を使用してuntracked files
のみを退避させるgit stash-untracked
を設定しました。新しく知った.gitconfig
を使ってエイリアスを設定できて良かったです。また、.bashrc
に書いていたgit
コマンドのエイリアスを.gitconfig
に移行し、git
コマンド周りの設定を整理できて良かったです。