2017-03-05 1 views
3

除く再帰的にすべてのサブディレクトリには、私が追跡するためにgitを必要とする私のプロジェクトでアップロードフォルダを持っています。
フォルダ自体とすべてのサブフォルダの両方(私はキープディレクトリとファイル

アップロード、
アップロード/ユーザー、
アップロード/ユーザー/プロファイル、
アップロード/ユーザー/プロフィール/写真

およびそれらのような他の経路を意味します)を追跡する必要があります。

私はすべてのフォルダに.gitkeepという名前の空のファイルを追加し、次のように私の.gitignoreがある:

uploads/* 
!.gitkeep 

が、Gitはサブフォルダを追跡されていません。

============================================== =================

CodeWizardでコマンドを使用して.gitkeepファイルを作成すると、ディレクトリー内のすべてのファイルとそれ以外の子を無視するようにgitに強制することはできません。 .gitkeepファイル。私はこのコマンドを使用して、アップロードディレクトリの下に作成されたすべての.gitkeepファイルをgit-add -fに追加しました。

find . -name '.gitkeep' | xargs git add -f 
+0

あなたは単に.gitkeepファイルを作成するか、gitに追加しましたか? 'what 'は' git status'の出力ですか? – FuzzyAmi

+0

はあなたのソリューションはOPの '.gitignore'で動作するようには思えないhttp://stackoverflow.com/q/26189082/1256452とhttp://stackoverflow.com/q/5533050/1256452 – torek

答えて

3

すべての必要なフォルダに.gitkeepを追加します。
Otherwize gitが必要であれば、あなたも最も内側のフォルダに追加することができますし、Gitが追跡する再帰的

# find all the directories (-type d) 
# filter the empty ones (-empty) 
# ignore the .git folder 
# add .gitkeep to all the matched folders 

find . -type d -empty -not -path "./.git/*" -exec touch {}/.gitkeep \; 

.gitkeepを作成するには、フォルダ


スクリプトを追跡しません。同様がインデックス

にそれを追加したときに、すべての親フォルダ10

最後の行は、(SUB1/SUB2 ...)上記のスクリプトの出力である

enter image description here

+0

参照してください。それは以下のように変更する必要があります: 'uploads/** \ n!uploads/users \ n!uploads/users/profiles \ n!アップロード/ユーザー/プロフィール/写真 ' –

+0

申し訳ありませんが、私はあなたを理解していません。スクリプトの問題は何ですか?私はそれをテストし、スクリーンショットに見られるように出力を生成しました – CodeWizard

+0

問題は、少なくとも私のシステムでは、最も外側の '.gitkeep'、つまり' uploads/.gitkeep'、_if_OPの '.gitignore'は中古。そのため、 '.gitignore'も変更する必要があります。 –

1

CodeWizardのソリューションは、フォルダを追跡することができますが、それはあなたが自分のファイルを無視する助けにはなりません内容

はそれを行うには、無視されることから、各サブフォルダを除外するために、あなたの.gitignoreを変更する必要があります。例えば:

uploads/** 
!uploads/users 
!uploads/users/profiles 
!uploads/users/profiles/pics 

あなたはまだ、すべてのサブフォルダ内の、または少なくとも最も内側のサブフォルダ内.gitkeepファイルが必要です。 CodeWizardで提案されたコマンドは素晴らしい仕事をします:

find . -type d -empty -not -path "./.git/*" -exec touch {}/.gitkeep \; 
+0

手動ですべてのサブフォルダを追加するのが自分のタイプではない、CodeWizardコマンドは非常に便利ですが、作成された.gitkeepも追加すると素晴らしいでしょう。 – Unique