問題:_./shells/smallApps/*
_にあるファイルが_./.git/
_にない場合、_./.git/info/exclude
_にあるファイルをGitに追加しますまた、どの_.gitignore
_ファイルでも使用できません。
この質問は this tread に基づいており、問題は完全には解決されていません。
走る
_$git status ~/bin
# On branch master
nothing to commit (working directory clean)
$git ls-files ~/bin
Screen/dev/vim-open.screen
--- cut ---
_
私のGitには「shells/smallApps/*」というファイルがないことに注意します
_$ls shells/smallApps/ ~/bin
devTodo extract
~/bin
_
実行してそれらをGitに追加したい
_$git add shells/smallApps/devTodo shells/smallApps/extract
fatal: Path 'shells/smallApps/devTodo' is in submodule 'shells/smallApps'
$git add .
_
ファイルが何らかの理由で私のGitに追加されないことに注意してください。
_$git status ~/bin
# On branch master
nothing to commit (working directory clean)
_
.git/info/excludeにも.gitignore -filesにもファイルがありません。
最後の警告はどういう意味ですか?
[〜#〜]更新[〜#〜]
Gitがファイルを無視する一般的な理由は2つあります gitignore
および submodules
。
具体的には、次の条件により、 'git add
'が呼び出されたときにGitがファイルを無視します。
$GIT_DIR/exclude
に一致します。.gitignore
ファイルのパターンと一致します。.gitignore
ファイル( 'git config --global core.excludesfile
'で指定)のパターンと一致します。git add
」を強制する:'git add full/path/to/file
'を呼び出すことにより、特定のファイルが無視されているかどうかを確認できます。
「無視されたファイルがコマンドラインで明示的に指定されている場合、コマンドは無視されたファイルのリストで失敗します。」
ファイルが無視される場合は、「git add --force full/path/to/file
」を使用して強制的に追加できます。
以前の回答で述べたように、shells/smallApps
はリポジトリ内の サブモジュール です。
ファイルがサブモジュールの一部である場合、状況はより複雑になります。メインプロジェクト内からサブモジュールの内容を変更することはできません。
サブモジュール参照を削除し、メインリポジトリのファイルを直接追跡する場合は、いくつかの手順を実行する必要があります。 「.git」ディレクトリをサブモジュールから単に削除することはできません。メインリポジトリとサブモジュールの間には3つのリンクがあります。
.gitmodules
ファイル。.git/config
のエントリ。この 関連するSO質問 に従って、サブモジュールを完全に削除するには、次の手順を実行する必要があります。
注:別のブランチがこのサブモジュールに依存している場合、それを削除するとリポジトリが破損する可能性があります!これは危険な操作です...注意して使用してください。
.gitmodules
ファイルから関連する行を削除します。.git/config
から関連セクションを削除します。git rm --cached path_to_submodule
(末尾のスラッシュなし)を実行します。サブモジュールの一部であったファイルは追跡されなくなり、必要に応じてそれらを保持するか削除するかを決定できます(下記の1つの注意事項を参照)。
これらのファイルが不要な場合は、単に削除してください。
警告:これらのファイル(保持しているように見える)を保持する場合は、サブモジュールフォルダーから.git
ディレクトリを手動で削除する必要があります:
cd path_to_submodule
rm .git
cd ..
git add path_to_submodule
git status
git commit
UPDATE:
この問題のデバッグを支援するには、次の完全なコマンドセッションの出力を投稿してください。
cd to the top-level directory in your repo
ls -al
cat .git/config
find . -name ".git*"
git status
git add editors
git add shells
git status
これまでに行ったことの説明に基づいて、私は次のことを期待しています。
.gitmodules
ファイルはどこにもありません.git
ディレクトリは1つのみ(リポジトリのルートにあります).git
にeditors/vim/vimdoclet
ディレクトリがありません.git
にshells/smallApps
ディレクトリがありませんgit add
サブモジュールについて何か言っています。ネストされたGitリポジトリがありますか?これを行う:
$ find . -name .git
幾つ .git
ディレクトリがリストされていますか?複数ある場合は、ネストされたリポジトリが複数あり、それがこの混乱の原因となっている可能性があります。
この質問をGitメーリングリスト([email protected]
)。より迅速で完全な応答が得られる可能性があります。
あなたがそこに投稿することにした場合は、必ず含めるようにしてください:
ls -al
cat .git/config
find . -name ".git*"
git status
git add editors
git add shells
git status