0

次の構造に注意してください。

/assets --> this dir shouldn't be ignored. but SOME OF their contents SHOULD.;
ignoredfile.jpg --> should be ignored.
ignoredfile2.gif --> --> should be ignored.
 /blog --> this dir shouldn't be ignored. but SOME OF their contents SHOULD.;
  /images --> this dir shouldn't be ignored. but ALL their contents SHOULD.;

フォルダー内/assetsには、次のgitignoreファイルがあります。

# Ignore everything in this directory
*
# Except this file
!.gitignore
!/images
!/resize
!/blog

「/assets/blog」内に別の.gitignore.

# Ignore everything in this directory
*
# Except those files
!.gitignore
!/images

問題

リモートサーバーにプッシュすると、git DO はディレクトリをプッシュしました/blogが、ディレクトリはプッシュしません/blog/imagesでした。なんで ?

どうすればこれを解決できますか?

4

3 に答える 3

3

から削除.gitignoreし、通常のを使用して再度追加するだけgit add -A <directory-name>で、問題はありません。

ディレクトリを再び削除する可能性のあるマージに注意してください。ただし、すべてを正しくマージしている場合は問題ありません。

アップデート

gitで空のディレクトリをコミットすることはできません。これを行う一般的な方法は、空の「プレースホルダー」ファイルをその中に入れて、そのままにしておきたいと言うことです。

たとえば、名前の付いた空の隠しファイル.keepをディレクトリに配置し、次のよう/imagesに変更します。.gitignore

/images/*
!/images/.keep

ここで、ファイルを追加/コミットする.keepと、問題がないはずです。

代替ソリューション

このコンテンツで、.gitignore内部を配置します。/images

*
!.gitignore
于 2012-11-09T16:40:50.477 に答える
1

gitディレクトリを追跡しません。そのディレクトリ内のすべてのファイルを無視すると、gitそのディレクトリが存在することさえ記録されません。.keepたとえば、そのディレクトリとそのファイルに(そうでなければ役に立たない)空のファイルを作成することもできますが、それgit addが最終目標に合っているかどうかはわかりません。

于 2012-11-09T16:49:26.273 に答える
0

からディレクトリを削除します.gitignore

を使用して、ディレクトリをリポジトリに追加しますgit add <dir>

コミットしてもう一度プッシュします。

于 2012-11-09T16:40:05.987 に答える