2012-03-17 10 views
9

私の継続的な統合ビルドでは、私のgitサンドボックスに迷子ファイルが入らず、不注意にファイルが変更されていないことを確認したい。きれいなgitサンドボックスを取得する最も効率的な方法は何ですか?

私は約git reset --hard HEADを知っており、これが問題の一部を解決しています。しかし、私がしたいことは、すべての未追跡のファイルと無視されたファイルを削除することだと思います。私はそれをブルートフォースのやり方でやることができます:

rm -rf * 
git checkout -f 

しかし、それを行うにはより効率的な方法が必要です。何か案は?

+2

'Gitは--hard HEAD' +' gitのクリーン-d -f'をリセット? – madth3

+0

@ madth3、ありがとう、私は確かに動作すると思います! – mpontillo

答えて

12

は後世のために拡張)

あなたの問題は2つに分割することができますコミット最後にそれらの状態に変更されたファイルを返すと、リポジトリに属していない余分なファイルを削除:

git reset --hard HEAD 

git clean -f -d -x 
(彼らがコミットする段階であったとしても)任意の変更を削除し、戻って、彼らがHEADに持っている状態にあなたのファイルを取ります

は、無視されたファイルを含む、未追跡のファイルまたはディレクトリを削除します(@ Jefromiに感謝します)。

+0

ありがとうございます。私は 'git clean'コマンドを忘れていました。私はその質問を書いているときにデジャヴを手に入れていることを知っていました。 =) – mpontillo

+0

さて、私は 'reset'コマンドをもっと頻繁に使いましたが、あなたの要件を満たすために'クリーン 'を探していたのは簡単でした。 – madth3

+1

git-cleanでも '-x'を使いたいでしょう。それは無視されたファイルも削除します。これらの無視されたファイルが中間ビルド製品であり、ビルドプロセスが完璧でない場合、これは重要な意味を持ちます。 – Cascabel

-1

CIのための別の複製はありませんか?

あなただけのフェッチ

|あなたのワーキング・レポからのクローン(任意の工芸品や地元の変更なし)CI-仕事の前にすべてのコミットされた変更

+0

"別のクローン"?私たちはギガバイトを話しているので、毎回再クローンしたくない。 – mpontillo

関連する問題