1

マスターに構造があるとします。

d - src 
      - main ...
      - resources ...
  - target
      - xyz

ファイル xyz は追跡されるべきではないので、.gitignore target/* に追加し、構造をコミットします

  • git commit -m '初期構造'

2つのブランチを作成します

  • git ブランチ t1
  • git ブランチ t2

そしてt1に切り替えます

  • git チェックアウト t1

私はいくつかの作業を開始し、ターゲットが設定されるようにコンパイルします。変更を t1 にコミットします。

  • git commit -a 't1 固有の変更'

次に、t2に切り替えます

  • git チェックアウト t2

ターゲットを調べたところ、ブランチ t1 がアクティブだったときに作成されたファイルがまだ読み込まれていますが、これらを「クリア」したいと考えています。

git は私が見ているものとは異なる動作をするべきであるという同様の議論を見つけました。ブランチを切り替えると、Git が無視されたファイルを削除する

何が欠けていますか?

フランシス

4

3 に答える 3

2

これは仕様によるものです。Git は、作業フォルダーで追跡していないファイルには触れません。追跡されていないファイルを消去したい場合は、使用できます

git clean -xdf

より一般的には、追跡されていないが無視されていない変更を破棄したいと考えています。これは、いくつかのコードを試していて、新しいクラス ファイルを追加したことが原因である可能性があります。この場合、次を使用します。

git clean -df

これにより、出力ディレクトリはそのままになります。代わりに、開発ツールを使用してこれらのフォルダーをクリーンアップします。

フックを使用することもできますが、チーム全体で共有するのが難しいため、これは良い解決策ではありません。

于 2011-01-20T20:53:10.740 に答える
0

リンクした質問は、あるブランチで追跡され、別のブランチで無視されるファイルについて話している. どのブランチでも追跡されていない、生成されたファイルについて話しているのです。git はそれらを追跡していないため、何もしません。

于 2011-01-20T20:28:32.963 に答える
0

post-checkout無視されたファイルを消去するフックを追加できます。

git clean -f -X
于 2011-01-20T20:27:50.127 に答える