社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Git

git deploy web hook命令-不太明白。

Patrick • 5 年前 • 1574 次点击  

我第一次使用Web钩子部署到服务器上。 但是,我很难理解git命令,尤其是在命令结束时签出?

这是我使用的命令:

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

我不确定结帐时到底在做什么?如果有人能解释的话,那会有帮助的,因为这让我很困惑。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/38088
 
1574 次点击  
文章 [ 1 ]  |  最新文章 5 年前
torek
Reply   •   1 楼
torek    6 年前

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

正在运行:

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

与跑步非常相似:

git checkout -f

我想你已经习惯了 git checkout 用一个 分支机构名称 签出一个特定的分支。如果你咨询的话 the git checkout documentation ,你会发现你也可以跑步 Git结账 没有 分支名称:

你可以省略 分支 ,在这种情况下,命令退化为“检查当前分支”,这是一个光荣的无操作,具有相当昂贵的副作用,仅显示当前分支的跟踪信息(如果存在)。

也就是说,如果这个特定的存储库当前在分支上 master ,正在运行 Git结账 方法 git checkout master ,已经打开了。现在让我们注意一下 --git-dir --work-tree 期权,也就是说 the front-end git command documentation . 最重要的是 --工作树 选项,因为 --Git目录 参数已由以下事实设置:它作为Git挂钩运行(Git挂钩使用 $GIT_DIR 预设):

--work-tree= path

    设置工作树的路径。…

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

这个 checkout 然后,verb告诉git接受当前工作树中的任何内容(在另一个位置),并重新签出当前分支,无论当前分支是什么(可能是 主人 )这个 -f 期权是指 Git结账 它代表 ,意思是: 即使结帐会破坏一些正在进行的工作,无论如何也要这样做。 正常情况下 Git结账 小心不要覆盖正在进行的工作。

当然,在您的Web服务器上,不应该有任何正在进行的工作:部署位置中的文件可能 应该 匹配Git认为的内容。所以 -F 应该 通常是不必要的。然而,这整个想法 Git认为在工作树中 本身就是个问题。吉特 跟踪 通过Git称之为 指数 . 如果你把部署的想法推得太紧,使用git本身作为部署工具,你会发现git的跟踪会破坏部署。这是 为什么? 这就像用扳手当锤子:如果你轻轻地用它,或者知道你在做什么并且很小心,它就会起作用,但是如果你做了大量的锤击,扳手可能会折断。

有关pro-git as部署工具文章,它涵盖了这两个参数中的一些,请参见 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 也。