【问题标题】:Git Deploy Web Hook command - Don't quite understand it.Git Deploy Web Hook 命令 - 不太明白。
【发布时间】:2018-09-17 16:07:38
【问题描述】:

我刚刚第一次使用 Web Hooks 部署到我的服务器。 但是,我很难理解 git 命令,尤其是 checkout 在命令末尾?

这是我正在使用的命令:

git --work-tree=/location/ --git-dir=/source.git/ checkout -f

我不确定结帐最后在做什么?如果有人能解释一下,那会有所帮助,因为这让我感到困惑。

【问题讨论】:

    标签: git deployment


    【解决方案1】:

    这使用 Git 作为部署工具,这有点像使用扳手作为锤子:它可以工作,但有充分的理由不这样做。

    跑步:

    git --work-tree=/location/ --git-dir=/source.git/ checkout -f
    

    与跑步非常相似:

    git checkout -f
    

    我在这里假设您已经习惯于使用带有分支名称git checkout 来检查特定分支。如果你咨询the git checkout documentation,你会发现你也可以运行git checkout没有分支名称:

    您可以省略 branch;,在这种情况下,命令会退化为“检查当前分支”,这是一个美化的空操作,具有相当昂贵的副作用,仅显示跟踪信息,如果存在,则用于当前分支。

    也就是说,如果这个特定的存储库当前位于分支 master 上,则运行 git checkout 意味着 git checkout master,它已经存在。所以现在让我们注意--git-dir--work-tree 选项——这意味着查看the front-end git command documentation。最重要的部分实际上是--work-tree 选项,因为--git-dir 参数已经被设置为作为Git 钩子运行的事实(Git 钩子在$GIT_DIR 预设下运行):

    --work-tree=<em>path</em>

      设置工作树的路径。 ...

    本质上,这告诉 Git:不要在通常的地方寻找工作树,无论在哪里,在另一个 path 位置查看。在“裸”Git 存储库(在 Web 服务器上)中,通常 Git 存储库本身设置为根本没有 no 工作树。因此,您必须使用 --work-tree(或任何等效项)来强制 Git 假定此其他目录(例如 /location/)包含已签出的存储库。

    checkout 动词然后告诉 Git 获取当前工作树中的任何内容(在这个其他位置)并重新签出当前分支,无论当前分支是什么(可能是 master)。 -f 选项是 git checkout 的一个选项,它代表 force,意思是:即使这个结帐会破坏一些正在进行的工作,还是照做。 通常git checkout 会注意不要覆盖正在进行的工作。

    当然,在您的 Web 服务器上,不应该有正在进行的工作:部署位置中的文件可能应该与 Git 认为的相匹配。所以-f 应该 通常是不必要的。然而,Git 在工作树中的想法 的整个想法本身就是一个问题。 Git 通过 Git 所谓的 index 跟踪 工作树。如果你把部署想法推得太紧,使用 Git 本身作为部署工具,你会发现 Git 的跟踪会破坏部署。这就是为什么它就像使用扳手作为锤子:如果你足够轻柔地使用它,或者知道你在做什么并且小心,它就会起作用,但是如果你做了很多锤击,那么扳手可能会破裂。

    有关涵盖这两个论点的支持 Git-as-deployment-tool 的文章,请参阅 https://www.freelock.com/blog/john-locke/2015-06/case-git-deployment-tool。另请参阅 Deploy code using GIT - checkout vs reset --hard?git post-receive hook doesn't seem to process other branches

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-02-15
      • 2020-08-20
      • 1970-01-01
      • 1970-01-01
      • 2021-12-04
      • 2020-07-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多