gitにフォルダを追加できません


21

新しいフォルダーを追加し(実際には別のリポジトリからクローンを作成し、それを忘れていました)、そこでいくつかの変更を行いました。さらに、別の場所でgit addを実行しようとしたときに多くの変更を行いました

# Changes not staged for commit:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#   (commit or discard the untracked or modified content in submodules)
#
#   modified:   protected/ext/SpecificFolder (modified content)
#

その後、.gitフォルダーがあったことを覚えています(以前にそこにgit cloneを行ったため)。そのフォルダーに移動して、不要なファイル(フォルダー)と.gitフォルダーも削除しました。私はgitステータスをチェックしましたが、奇妙なことは何もありませんでした。次に、別のブランチにコミットしてチェックアウトすると、突然、このフォルダーが最後のコミットに追加されなかったことがわかります。実際にはフォルダーが追加されましたが、内部のファイルは無視されました。今でも私はgit addそのフォルダに何も起ころうとしていないときgit statusでも何の変化も見せず、変更を表示しません:(

私に何ができる ?


6
他の誰かがこのページで私が直面した問題で終わる場合:サブフォルダーのファイルをGitに追加できませんでした。後で、そのサブフォルダーに独自の.gitリポジトリがあり、メインフォルダーのリポジトリではなく、そのリポジトリにファイルが追加されていることがわかりました。Git GUIでも、そのサブフォルダーはフォルダーではなくファイルとして表示されていました。
ナビゲーション14

回答:


29

Gitはディレクトリを追跡しません。ただし、その中のファイルだけです。

add何もしない原因となっている無視パターンがあるようです。で無視されたファイルを見ることができますgit status --ignored; その後、それらを追跡できますgit add --force protected/ext/SpecificFolder


1
いいえgit status --ignored、それは
提示

1
このコマンドは命の恩人でした。それがなければ、どのディレクトリが無視されたかわからなかったでしょう。
IgorGanapolsky

うわー...しばらくgitを使った後、この事実を読むのはまったくばかげていると感じました^^
XandruCea

1
ああ、ついに。これが私の問題でした。親からサブモジュールに.gitignoreをコピーしました。「config /」を無視していましたが、後でソースディレクトリの下にconfigという名前のディレクトリを作成しました。コースを追加できませんでした。問題は解決しました。ありがとうございました:-)
Avec

7

GitはEMPTYディレクトリを追跡しません。サブディレクトリの複数のレイヤーを持つプロジェクトがある場合、gitは実際にはその中のファイルを含むディレクトリを追跡します。そうでない場合は、ファイルの1つのフラットリポジトリになります。


うわー、これはとても簡単なことですが、いまいましいです。私はこれを読んで、「それはまさにそれだああ私の神」を行ってきました
ブライアンが復活モニカ言う

3

私はたまたまこのユーザーがやったことをやった:別のリポジトリに既存のgitリポジトリを追加する。

症状は、gitがそのディレクトリをファイルとして認識したため、ディレクトリのファイルを追加できなかったことです。

その質問を解決するために、.gitフォルダー内のフォルダーを削除し、そのフォルダーを別のディレクトリに移動し、インデックスをクリアし、リポジトリ内のディレクトリを削除してから、ディレクトリを適切に追加できました。

このモラルは次のとおりです。別のリポジトリ内にリポジトリを追加しないでください。


5
また、実行することによって修正することができますgit rm --cached path_to_submodule
ビクターマーチャック


0

そのディレクトリにファイルを追加してみてください。

$ git add my-dir/index.html

以下のような出力が表示される場合:

The following paths are ignored by one of your .gitignore files:
my-dir/index.html
Use -f if you really want to add them.
fatal: no files added

gitignoresの1つに、そのディレクトリを追加できないようにするルールがあります。


0

サブモジュールであったものを通常のサブフォルダーに変換しようとした後、同様の副作用が見つかりました。

変換しようとしていたフォルダーを再度追加すると機能するように見えましたが、その中のファイルは実際には追加されなかったことがわかります。

特にファイルをその中に追加しようとすると、より良い警告が表示されました

git add sites/all/modules/contrib/transclusion/transclusion.module 
fatal: Pathspec 'sites/all/modules/contrib/transclusion/transclusion.module' is in submodule 'sites/all/modules/contrib/transclusion'
  • そのため、適切に行うための十分に文書化されたプロセスがなかったため、古いサブモジュールを手動で削除しようとした方法に関連していました。-.gitmodulesから削除したところです。サブモジュールの影を正すには、実際には他のものが必要でした。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.