👥

git clean -ffdx

2021/06/29に公開

-f が2つ?

偶然見かけて疑問に思ったので調べてみました。
git clean を実行する際、オプションは -fdx にすることが多いと思います。

https://git-scm.com/docs/git-clean#Documentation/git-clean.txt--f

Git will refuse to modify untracked nested git repositories (directories with a .git subdirectory) unless a second -f is given.

Git は通常 untracked なネストされた Git リポジトリ(.git サブディレクトリを含むディレクトリ)を変更しませんが、2つ目の -f を渡すと消してくれるようです。

git clean -ffdx

各オプションの説明

-f, --force

Git 設定で clean.requireForcefalse になっていない場合、git clean-f または -i が与えられないとファイルやディレクトリを削除しません。

先に述べた通り2つ目の -f を与えるとネストされた Git リポジトリも削除対象にします。

-d

再帰的にディレクトリを削除します。(ただし -f で触れたネストされた Git リポジトリを除く)

-x

.gitignore$GIT_DIR/info/exclude などの gitignore 設定に含まれているファイルやディレクトリも削除対象にします。

Discussion