2

git バージョン 1.8.1.msysgit.1 を使用すると、ファイルが何らかの形で追跡されます。その理由は何ですか?

私はgitにmissingFileという名前のファイルを持っています。

$ ls
missingFile

$ git add missingFile

$ git status
# On branch test
nothing to commit, working directory clean

$ git commit missingFile
# On branch test
nothing to commit, working directory clean

今、このファイルを削除します。Git はそれを見逃しません。それは私を不思議に思います。

$ rm missingFile

$ ls

$ git status
# On branch test
nothing to commit, working directory clean

$ git commit
# On branch test
nothing to commit, working directory clean

ただし、ファイルをチェックアウトすると、魔法のように再び表示されます。

$ git checkout missingFile

$ ls
missingFile

また、差分によりファイルが明らかになります。

$ git diff origin/master
diff --git a/missingFile b/missingFile
new file mode 100644
index 0000000..0633ff0
--- /dev/null
+++ b/missingFile
@@ -0,0 +1,1 @@
+missingFile_content

そのファイルの標準的な動作 (削除されたファイルの認識、削除のコミット、ファイルの追加) を再度取得するにはどうすればよいですか?

4

1 に答える 1

1

解決

ファイルには、skip-worktreeプロパティがありました。これは、先頭のSによって明らかにされました。

$ git ls-files -v
S missingFile

そして、単純な呼び出しgit update-index --no-skip-worktreeで目的の効果が得られました。

git update-index --no-skip-worktree missingFile
$ git status
# On branch test
# 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)
#
#       modified:   missingFile
#
no changes added to commit (use "git add" and/or "git commit -a")
于 2013-07-19T10:07:56.780 に答える