我只是 git 的新手,我正在查看结帐后挂钩。
据我了解,以下命令将从最新提交中恢复“文件名”:
git checkout -- filename
Run Code Online (Sandbox Code Playgroud)
当我在结帐后获得控制权时,我得到 3 个参数,即 2 个 SHA 和一个类型。
两个 SHA 是相同的,即最后一次提交和类型的 SHA 值为 0,这意味着发生了文件检出。
但是我回家能查出哪些文件被签出了吗?
文档说:
该钩子被赋予三个参数:
- 前一个 HEAD 的 ref,
- 新 HEAD 的引用(可能已更改,也可能未更改),以及
- 指示签出是分支签出(更改分支,
flag=1)还是文件签出(从索引检索文件,flag=0)的标志。
就你而言,你的 HEAD 没有改变。您可能会将一些修改后的文件初始化回 HEAD 内容,但除此之外,所有已检出的文件仍会检出:
git show --pretty="" --name-only HEAD
Run Code Online (Sandbox Code Playgroud)
由于您没有更改分支,因此即使所有文件都已检出,该标志也会设置为 0。因此没有简单的方法可以查看哪些内容被修改并重置为 HEAD 内容。
关键是:结帐后挂钩不能影响“git checkout”的结果。
换句话说,索引和工作树已经反映了它们的最终状态(并且不记得之前有什么)
如果您需要由 a 重置文件列表git checkout .,最好先执行 a git stash。
然后git checkout,您的结帐后挂钩可以使用git stash show: 来列出结帐之前存在的文件。
| 归档时间: |
|
| 查看次数: |
1403 次 |
| 最近记录: |