5

リポジトリに単一の追跡されていないファイルを含むディレクトリ アプリがあり、実行するとgit clean -fメッセージが表示 されます。

しかし、同じディレクトリ内に追加の追跡ファイルがあり、まったく同じコマンドを実行すると、追跡されていないファイルが正常に削除されます。

私の質問は、追跡されていないファイルから削除した後にディレクトリが空になる場合、Git がディレクトリを削除しようとするのはなぜですか?

以下は、動作を再現するスクリプトです。前もって感謝します。

#!/bin/bash

# Create new empty repo
mkdir myrepo && cd myrepo
git init

# Create app directory with main.c
mkdir app
touch app/main.c

# Try to delete main.c with git clean -> Not working
git clean -f

# Add helper.c to app directory and add to index
touch app/helper.c
git add app/helper.c

# Try to delete main.c with git clean -> Now it's working
git clean -f
4

2 に答える 2

6

追跡されていないディレクトリを削除するには、-dオプションを渡す必要があります。git clean

于 2013-09-01T16:40:30.190 に答える
2

git はディレクトリを追跡しません。空のディレクトリを git にコミットすることはできません。

(空のディレクトリを作成し、それを git に追加してみてください - git ステータスに変化は見られません)

追跡されていないディレクトリにいくつかのファイルを追加しても、git はすべてのファイルを表示するわけではなくgit status、ディレクトリのみを表示します。

git がディレクトリをバージョン管理しない理由の詳細については、この質問を確認してください。

@Hasturkunが彼の回答で指摘したように、追跡されてい ないディレクトリを削除する-dにはに渡す必要がありますgit clean

于 2013-09-01T16:50:41.540 に答える