1

私は「devel」ブランチにいて、 git status「作業ディレクトリをクリーンに」と言います。

過去のリリースを見たいので、タグ: をチェックアウトしますgit checkout tags/v1.0.0。この後、「v1.0.0」と現在の「devel」HEAD の間に作成されたいくつかのディレクトリは空のままになりますが、削除されません (ただし、タグが作成されたときには存在しませんでした)。これは、git が空のディレクトリを追跡しないためだと思います。

タグが作成されたときとまったく同じ状態にするために、git clean -fdこれらの残りの空のディレクトリを削除する呼び出しを追加する必要があります。

タグをチェックアウトするとき、そのタグが作成されたときのファイルシステムの正確な状態が必要git clean -fdです。チェックアウト後に常に呼び出す必要がありますか?

4

2 に答える 2

1

はい、ディレクトリは git では追跡されず、ファイルのみが追跡されるため、ディレクトリを手動でクリーンアップする必要があります。

これを 1 つのステップで行うには、シェル関数を git エイリアスとして定義して、これを 1 つのステップで行うことができます。

端末で次のいずれかを実行します。

git config alias.cco "! f(){ git checkout \"\$1\" && git clean -fd; }; f"

またはファイルを編集して、.git/configそこに次のエントリを追加します。

[alias]
    cco = "! f(){ git checkout \"$1\" && git clean -fd; }; f"

これで、次を使用して、これらの両方のコマンドを一度に実行できます。

git cco tag_name
于 2015-01-14T12:24:20.990 に答える
0

あなたの観察は、潜在的にあなたの変化によって説明される可能性があります.gitignore:

現在、「devel」ブランチにいるが、追跡されていない「foo」ディレクトリがあるとします。に「foo」がリストされている場合.gitignoregit status(正しく)クリーンな作業ディレクトリが報告されます。

タグ付けされたバージョンをチェックアウトすると、別のバージョンが含まれている可能性があり.gitignore(「foo」ディレクトリは無視されません)、作業ディレクトリが汚れているように見えます。

タグをチェックアウトするとき、そのタグが作成されたときのファイルシステムの正確な状態が必要です

(リポジトリ内またはグローバルに) を変更でき.gitignore、git が追跡されていないファイルを黙って削除することは決してないという事実を考えると、これは への追加の呼び出しなしでは常に可能とは限りませんgit clean -fd

于 2015-01-14T12:44:36.183 に答える