22

クローンリポジトリがあります。ディレクトリがあり、それをa / b / cと呼びます。これは、以前は独自のリポジトリでした。つまり、a / b / c /.git/などがありました。

ここで、ファイルをメインリポジトリで管理する必要があります。a / b / cの履歴は気にしないので、a / b/cの.gitディレクトリを削除しました

しかし問題は、git statusa / b/cを完全に無視していることです。できませんgit add。パスを.gitignoreに入れたかのようです(まだ入れていません)。

明らかに以前は、gitが.git dirを含むサブディレクトリを無視することは理にかなっていますが、今ではどのようにして違いを知ることができますか?

.gitignoreと.git/info / excludes以外に、無視するファイルがリストされている場所はありますか?.git / configファイルには何もありませんか?

gitstatusが何を言っているのか尋ねられました。あまりない:

/path/to/root/dir $ git status
# On branch fred
nothing to commit (working directory clean)

そして、gitaddが言うこと。さらに少ない(何もない)

/path/to/root/dir $ git add a/b/c
4

6 に答える 6

34

問題が何であったか、またはどのように発生したか(v。迷惑)はわかりませんが、他の誰かが行き詰まった場合に備えて、これを修正する方法を次に示します。

git rm --cached a/b/c
git commit -m "removed phantom a/b/c dir"
git add a/b/c
git commit -m "finally able to add a/b/c"

興味深いことにgit log a/b/c、「最終的に可能な...」コミットのみがリストされています。git show HEAD^(「削除されたファントム...」コミットは言います

-Subproject commit c311ccdc91c8be66019aa138d1c4af49a6b7a81c

なんとなく特別に扱っていたようです。サブプロジェクトやサブモジュールについてもっと読む必要があります。

于 2012-05-25T18:56:24.003 に答える
4

グローバルなgitignoreファイルはありますか?(で確認してくださいgit config core.excludesfile

于 2012-05-25T17:42:59.807 に答える
2

git add -fgitに現在無視しているファイルを追加させるために使用します。

于 2018-03-06T21:35:15.023 に答える
1

概要:.gitignoreファイル(ディレクトリ自体にあるものを含む)は、ディレクトリに含まれるすべてのものを無視していますか?もしそうなら、Gitはそれを空として扱い、リストしません)

私も同様の問題を抱えていました。無視されていたディレクトリに.gitignoreファイルが含まれていることを発見しました(.gitディレクトリではありませんが)。それを削除すると、gitは突然再びそれに興味を持ち、追跡されていないファイル/ディレクトリとしてにリストされましたgit status

ターミナルに以前から貼り付けて.gitignoreの元の内容を復元すると、gitはディレクトリを追跡されていないものとして表示または一覧表示しません。

試行錯誤の結果、次のエントリを除いて、.gitignoreからすべてを削除できることがわかりました。

.factorypath
.springBeans

これらの行の両方が.gitignoreファイルにある場合、含まれているディレクトリ(gitリポジトリのルートではない)はgitに表示されません。

これは私にとって答えるよりも多くの質問を提起します。

これがディレクトリのリストですが、パターンがわかりません。

total 72
drwxr-xr-x@ 10 stephen  staff    320 30 Aug 19:04 .
drwxr-xr-x  17 stephen  staff    544 30 Aug 18:59 ..
drwxr-xr-x   2 stephen  staff     64 25 Jun 15:00 .apt_generated
-rw-r--r--   1 stephen  staff   1341 25 Jun 15:00 .classpath
-rw-r--r--   1 stephen  staff  18665 28 Jun 10:44 .factorypath
-rw-r--r--@  1 stephen  staff     25 30 Aug 19:12 .gitignore
-rw-r--r--   1 stephen  staff   1094 28 Jun 10:44 .project
drwxr-xr-x   7 stephen  staff    224 25 Jun 15:00 .settings
-rw-r--r--   1 stephen  staff    479 28 Jun 15:43 .springBeans
drwxr-xr-x   6 stephen  staff    192  2 Jul 12:41 target
于 2018-08-30T18:17:49.723 に答える
0

基本的にGitには空のディレクトリが存在しないようです。また、ディレクトリ内のすべてのファイルが.gitignoreパターンに一致する場合、gitはディレクトリを空として扱います。

これはfoo.tgzファイルのあるディレクトリで発生し、リポジトリのルートで.gitignoreファイルのパターンは*.tgzでした。'gitcheck-ignore'コマンドが「ちょっとnoobディレクトリが私には空に見える」のようなものを報告しないことは非常にイライラします。

次回はこれを試してください:

git check-ignore strangely-ignored-directory/*

その出力は謎を解くかもしれません。

于 2019-07-24T20:17:57.040 に答える
0

この問題は、gitによって制御される最上位フォルダー内でアプリcreate-react-appを初期化するために使用したために発生しました。clienttodo

cd todo
npx create-react-app client --template typescript

内部的には、これにより、ディレクトリとファイルを含むフォルダclientが作成されました。それはgitサブプロジェクトのようなものでした。.git.gitignore

経由でプロジェクトをソース管理に追加するgit add -iと、奇妙な空のディレクトリポインターが作成されましたが、内容がありません。

コマンドを使用しました

git rm --cached client

...gitが保存していた奇妙な空のディレクトリ/ポインタを削除しました。しかし、フォルダを追加しようとすると、次のメッセージが表示されます。

~/depot/todo $ git add client
warning: adding embedded git repository: client
hint: You've added another git repository inside your current repository.
hint: Clones of the outer repository will not contain the contents of
hint: the embedded repository and will not know how to obtain it.
hint: If you meant to add a submodule, use:
hint: 
hint:   git submodule add <url> client
hint: 
hint: If you added this path by mistake, you can remove it from the
hint: index with:
hint: 
hint:   git rm --cached client
hint: 
hint: See "git help submodule" for more information.

これを修正するために、gitアーティファクトを削除し、それ以降は通常どおりコミットできました。

rm -Rf client/.git
rm -f client/.gitignore
git add client
git commit -m "Add missing client content"
于 2021-03-27T06:02:43.253 に答える