免责声明:我已经使用 Git 一段时间了,但仍然觉得它令人困惑。
我正在为一个项目设置构建过程,但在更新 git 存储库时遇到问题。
- 我在服务器上创建了存储库,假设为 C:\MyProject。
- 我使用 SourceTree 将我的计算机连接到存储库。拉一下并获取我的所有代码,到目前为止一切都很好。
- 我去进行提交,但收到一条错误消息:“拒绝更新签出的分支...默认情况下,更新非裸存储库中的当前分支被拒绝”
- 使用 Google 一下,我意识到服务器上的 git 存储库不应该签出 master,因此我使用 Git GUI 签出,并使用“从本地分支分离”选项。这会将服务器上的分支设置为 HEAD。
现在是我感到困惑的部分(让我知道我之前是否真的感到困惑并且只是不知道)。更新服务器上的代码的推荐方法是什么?如果我在 Git GUI 中打开服务器存储库,则无法执行提取操作。似乎有效的是如果我结帐master,但这实际上是推荐的吗?如果是,那么这意味着我必须在每次更新后签出不同的分支,以便我可以继续在我的工作计算机上进行推送。
最佳实践是推送到裸仓库: see "git 中裸共享存储库的概念" and 关于“裸”存储库——什么、为什么以及如何修复非裸推送.
这意味着在您的服务器上,您需要:
- 创建一个 Git 存储库(您已经这样做了)
- 将该存储库克隆为裸存储库(
git clone --bare yourProjectFolder yourProjectFolder.git
)
(the .git
扩展名是裸存储库根文件夹的命名约定)
-
而是推送到那个裸仓库:
转到您的本地存储库,然后输入:
git remote set-url origin /url/repo/repo/yourProjectFolder.git
-
在裸仓库中添加一个钩子(在服务器上,yourProjectFolder.git/hooks/post-receive
),其中你
- 更改目录(到您的非裸存储库文件夹
yourProjectFolder
)
unset GIT_DIR
git pull ../yourProjectFolder.git
更多信息请访问 ”远程nodejs服务器部署永远".
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)