gpt4 book ai didi

git - 推送 Git 源代码树,而不仅仅是一个存储库

转载 作者:太空狗 更新时间:2023-10-29 13:16:49 25 4
gpt4 key购买 nike

我用错了 Git。我想正确使用它。

这是我得到的:

在这里,在我的开发机器上有一个 Git 存储库,我提交并测试它。

在那里,是我的网络服务器 - 将部署此代码的地方。 Web 服务器有另一个裸 git 存储库,当我准备好部署时,我可以通过 SSH 将其推送到该存储库。

我想要的是查看 Git 存储库,它始终包含最新版本的源文件(在某些分支上或带有某些标签)。

我可以做的是在网络服务器上创建另一个(非裸)git 存储库,并在每次推送后手动 pull ,但我希望避免每次都必须登录到网络服务器我做了一个 git push。

有没有办法远程“推送到网络服务器并刷新其 checkout 的文件,如果我保证我没有编辑网络服务器上的任何文件”?

还是我做错了,你想扇我一巴掌? :-)

最佳答案

我通常使用包含 .git/hooks/post-receive 的文件创建一个非裸仓库

#!/bin/sh
cd ..
env -i git reset --hard

此文件必须是可执行的,并且必须 checkout 一个分支。

然后每次推送到该存储库时,工作树将重置为当前分支的最新版本。任何本地更改都将被覆盖(但不会删除未跟踪的文件)。

当您推送到已 checkout 的分支时,Git 现在会显示警告(并且会在未来的版本中拒绝它)。为避免这种情况,您可以在远程存储库上设置此配置:

git config receive.denyCurrentBranch ignore

您可以在此存储库上工作,但您必须在对它进行任何推送之前提交您的更改。

我在那里找到了提示:http://debuggable.com/posts/git-tip-auto-update-working-tree-via-post-receive-hook:49551efe-6414-4e86-aec6-544f4834cda3

关于git - 推送 Git 源代码树,而不仅仅是一个存储库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1555226/

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