0

所以我有一个 git 存储库。我正在使用在 Cygwin/Windows 8 下运行的 git 1.7.9。

这个 git 存储库有这种奇怪的行为,因此它认为某个目录的某些子目录被跟踪,但包含它们的实际目录不是。

所以,我得到这样的奇怪:

$ git reset --hard
$ git status
#untracked files
foo
$ git clean -fd
removing foo
$ git status
#changes not staged
D foo/bar/whatever.txt

但是,然后,以另一种方式添加文件:

$ git add foo
$ git status
# changes not staged
A foo/bar/whatever.txt

如果我从那里提交,那么它当然会在尝试推动时引发疯狂的冲突。

偶尔git reset --hard会修复它,但有时不会。我发现摆脱它的最好方法是检查一个新分支,删除我工作副本中的所有内容并运行git reset --hard.

有没有其他人经历过这种奇怪的行为?我正在使用 git-tfs,这可能意味着这是一个错误,但在大多数情况下,它是一个常规的 git 存储库,所以我认为这并不重要。

4

1 回答 1

0

git clean -fd跳过与您的任何条目匹配的文件,.gitignore我假设是这种情况。因此,请确保foo/bar/whatever.txt您的任何.gitignores 中都没有正则表达式匹配。

在更多的事情上确保foo/bar/whatever.txt没有锁定,这可能会阻止清洁。

于 2013-06-26T19:28:55.230 回答