【发布时间】:2023-03-23 19:41:01
【问题描述】:
计划是从我在本地计算机上创建的 Git 存储库在托管服务器上发布一个站点。
我在我的服务器中创建了一个 Git 存储库:
git init
然后我在本地添加了一个遥控器,以便能够上传网站:
git remote add origin ssh:com1@*************/home/com1/public_html/aum-crm/aum-crm.git
我可以使用git push origin master 推送网站。问题是网站被推送后,我必须去服务器做两步。
Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# modified: some/files/got_here.php
#
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
然后我这样做:
git reset HEAD .
结果如下:
Unstaged changes after reset:
M some/files/got_here.php
最后我git checkout --,然后服务器就会有文件了。
如果我尝试在服务器上提交而不是这些步骤,但随后它会恢复,这意味着它会取消从本地提交的所有文件。 :(
为什么我需要执行这两个步骤?不应该只是把文件推送到服务器,然后他们必须马上去那里吗?
【问题讨论】:
-
我认为你至少可以用
git pull替换你的两个远程命令,这样会更快。但是,如果您查看提交后挂钩脚本,您应该会找到一种完全自动执行此操作的方法。 -
能否解释一下,我还不是 git 专家。
-
顺便说一下,我使用了类似的方法,但我的远程服务器上有两个存储库。一个是裸仓库,也就是我推送到的远程,另一个是直播站点,它使用裸仓库作为远程。然后我可以在直播中执行
git pull,它会从裸仓库中检索最新的副本。 -
我不知道如何做提交钩子,但我希望我能在 15 分钟后使用搜索引擎!使用我的建议作为您正在进行的研究的提示,而不是完整的解决方案——它可能已经被写了几千次了。我会先搜索“git post commit hook Linux”。