3

在稀疏签出场景中,该命令git checkout .恢复应该被忽略的目录。这是设计使然,还是 Git 中的潜在问题?我git checkout .用来丢弃我对工作副本所做的任何更改——是否有另一个命令可以做同样的事情并且不会遇到这个问题?

这是一个可重现的示例:

rm -rf test
git init test
cd test
for f in a b c; do
  mkdir $f
  touch $f/$f
  git add $f/$f
  git commit -m "added $f"
done
git config core.sparsecheckout true
echo a > .git/info/sparse-checkout
echo b >> .git/info/sparse-checkout
git read-tree -m -u HEAD
ls
a b

到现在为止还挺好。这是问题所在:

git checkout .
ls
a b c

顺便一提:

git --version
git version 1.7.10.4

问题为什么排除的文件不断重新出现在我的 git sparse checkout 中?是相关的,但年龄更大,并不能完全描述我所看到的。

4

2 回答 2

1

这不是设计使然。Git 1.8.3中的行为发生了变化

于 2013-05-16T14:03:56.183 回答
0

我很确定这是设计使然。您正在积极地命令 git 创建所有这些文件,所以它会这样做。回到上次提交状态的正确命令是:

git reset --hard

这也应该考虑到您的稀疏结帐设置。

于 2013-03-07T07:30:56.313 回答