我只是git的新手,我正在看结账后挂钩 据我了解,以下命令将从最新的提交中恢复“filename”:
git checkout -- filename
当我在结账后获得控制权时,我得到3个参数,即2个SHA和一个类型
两个SHA都是相同的,即最后一次提交的SHA和类型的值为0,这意味着发生了文件签出。
但是我要找出哪个文件已经检出?
答案 0 :(得分:1)
钩子有三个参数:
- 前一个HEAD的参考,
- 新HEAD的参考(可能已经或可能没有改变)和
- 一个标志,指示结帐是分支结账(更改分支,
flag=1
)还是文件结帐(从索引flag=0
检索文件)。
在您的情况下,您的HEAD没有改变。您可能会将一些已修改的文件初始化为HEAD内容,但除此之外,all files already checked out are still checked out:
git show --pretty="" --name-only HEAD
由于您没有更改分支,因此即使已检出所有文件,该标志也会设置为0。因此,没有简单的方法可以查看哪些被修改并重置为HEAD内容。
关键是:结账后挂钩不会影响'git checkout'的结果 换句话说,索引和工作树已经反映了它们的最终状态(并且不记得以前的状态)
如果您需要按git checkout .
重置文件列表,最好先执行git stash
。
然后git checkout
:您的结帐后挂钩可以use git stash show
,以便列出结帐前存在的文件。