gpt4 book ai didi

git - 如何在 git 的 post-checkout 钩子(Hook)中找出哪些文件发生了变化?

转载 作者:行者123 更新时间:2023-12-04 13:47:18 26 4
gpt4 key购买 nike

我只是 git 的新手,我正在查看 checkout 后 Hook 。
据我了解,以下命令将从最新提交中恢复“文件名”:

git checkout -- filename

当我在 checkout 后获得控制权时,我得到 3 个参数,即 2 个 SHA 和一个类型。
两个 SHA 是相同的,即最后一次提交的 SHA 和类型的值为 0,这意味着发生了文件的 check out 。
但是回家我能查出什么文件被 check out 吗?

最佳答案

The documentation说:

The hook is given three parameters:

  • the ref of the previous HEAD,
  • the ref of the new HEAD (which may or may not have changed), and
  • a flag indicating whether the checkout was a branch checkout (changing branches, flag=1) or a file checkout (retrieving a file from the index, flag=0).


在你的情况下,你的 HEAD 没有改变。您可能将一些修改过的文件初始化回 HEAD 内容,但除此之外, all files already checked out are still checked out :
git show --pretty="" --name-only HEAD

由于您没有更改分支,即使所有文件都已 checkout ,该标志也设置为 0。所以没有简单的方法来查看哪些被修改并重置为 HEAD 内容。

关键是:post-checkout 钩子(Hook)不能影响 'git checkout' 的结果。
换句话说,索引和工作树已经反射(reflect)了它们的最终状态(并且不记得之前是什么)

如果您需要由 git checkout . 重置的文件列表,最好先做一个 git stash .
然后是 git checkout :您的 checkout 后 Hook 可以 use git stash show 为了列出 checkout 前存在的文件。

关于git - 如何在 git 的 post-checkout 钩子(Hook)中找出哪些文件发生了变化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44427458/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com