git checkout . 命令会添加被 sparse checkout 排除的目录。

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稀疏检出中排除的文件总是重新出现? 与此相关,但更早,而且并不能完全描述我所看到的情况。

2个回答

1

0

我相信这是设计上的。你正在积极地命令git创建所有这些文件,所以它就这样做了。回到上一个提交状态的正确命令是:

git reset --hard

这也应该考虑到您的稀疏检出设置。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接