2016-04-04 2 views
0

私のプロジェクトでは、私が取り組んでいる2つのブランチ(開発とリリース)があり、それぞれがサブモジュールを十分に利用しています。 Developブランチは、リリースの約2倍のサブモジュールを使用します。これは、アイデアをテストする場所であるためです。未処理のサブモジュールをすべてローカルの作業ディレクトリから削除するには?

私は、開発からリリースにブランチを切り替えると、開発固有のサブモジュールのディレクトリは、そのままの場所にとどまるので、untrackedになります。私はときどきReleaseからサブモジュールを追加したり削除したりする必要があり、git statusのメッセージは追跡されていないモジュールの長いリストになります。いくつかは私が使いたいものと、そうでないものがあります。

開発からリリースに切り替えるとすぐに、プロジェクトから未追跡のサブモジュールをすべて削除して、「クリーンスレート」で作業しています。ディレクトリ)。

私は、ここのように一度に個々のサブモジュールを1つずつ削除するには、いくつかの解決策を、発見した:How do I remove a submodule?

このようなソリューションは、Gitのサブモジュールは、(彼らはされていない)使用されており、追跡されていると仮定しかし、私が15〜20サブモジュールのようなものを使って作業しているときに、それらを一度に1つずつ取り除くことも首の痛みです。

また、私はそうのような配管Linuxのコマンドを試してみました:

gitのLS-ファイルは、--exclude-標準を--others | rm -rf

ただし、このコマンドは何も実行されません。私もgit rm -rfと同じものを使ってみましたが、無駄です。

作業ディレクトリからすべてのuntracked gitサブモジュールを削除するのが簡単かどうか知りませんか?誰もがこの問題に関して分かち合う助言があれば、大変感謝しています。ありがとうございました!

+0

可能な複製http://stackoverflow.com/questions/61212/how-do-i-remove-local-untracked-files-from-my-current-git-branch?rq=1? 'git clean -df'でトラッキングされていないディレクトリを削除してください –

+0

@ J.Titus私の理解では、サブモジュールは作業ツリー内の通常のディレクトリと同じように動作しないので、その解決法はサブモジュールでは機能しません。 – SemperCallide

+0

ディレクトリがトラッキングされていない場合、技術的にはその時点でサブモジュールではありません。それらはあなたの '.gitmodules'ファイルに存在しますか? –

答えて

1

コメント欄にお役立ていただきありがとうございました。私は、この問題に対する明らかで、退屈な解決策はないと判断しました。代わりに、私のために仕事をするbashスクリプトを作成しました。バッシュスクリプトで超快適ではない人々のための

#!/bin/bash 

clear 
git ls-files --others --directory --exclude-standard 
echo 
read -r -p "Are you sure you want to remove these untracked submodules? [y/N] " response 
if [[ $response =~ ^([yY][eE][sS]|[yY])$ ]] 
then 
    git ls-files --others --directory --exclude-standard | while read line; do 
    rm $line/.git &> /dev/null; 
    done 
    git clean -d -f 
fi 

簡単な手順:

ステップ1:ファイルに上記のスクリプトをコピーし、それを名「cleanUSMをここでは誰にも同じ問題がある場合には、 'ファイルを/ usr/binに保存します。それを保存したり、/ usr/binを見つけられない場合は、現在のディレクトリに保存してから、 'sudo mv cleanUSM/usr/bin/cleanUSM'を使用して、必要な場所に移動してください。

ステップ2:あなたのルートディレクトリ内から、コマンドを実行して貢献してすべての人に「cleanUSM」

ありがとう!

関連する問題