Git工作stream程 – build立一个构build过程
免责声明:我一直在使用Git,但仍然觉得困惑。
我正在设置一个项目的构build过程,并遇到更新git存储库的问题。
- 我在服务器上创build了存储库,让我们说C:\ MyProject。
- 我使用SourceTree将计算机连接到存储库。 做一个拉,并得到我所有的代码,一切都是伟大的。
- 我去做一个提交,但得到一个错误说:“拒绝更新检出分支…默认情况下,更新非裸仓库中的当前分支被拒绝”
- 使用谷歌一点,我意识到服务器上的git存储库不应该有检查出主,所以我使用“离开本地分支”选项的Git GUI结帐。 这将服务器上的分支设置为HEAD。
现在是我困惑的部分(让我知道,如果我真的感到困惑,只是不知道它)。 什么是推荐的方式去更新服务器上的代码? 如果我在Git GUI中打开服务器存储库,则无法执行提取操作。 什么似乎工作是如果我结帐主,但实际上是什么build议? 如果是这样的话,那意味着每次更新后我都必须签出一个不同的分支,这样我才能继续按下我的工作计算机。
推荐到裸回购是一个最佳实践:参见“ git中裸共享存储的概念 ”,以及所有关于“裸”回购的内容 – 什么,为什么以及如何解决非裸动的问题 。
这意味着在你的服务器上,你需要:
- 创build一个Git仓库(你已经做到了)
- 克隆,回购光秃秃的回购(
git clone --bare yourProjectFolder yourProjectFolder.git
)
(.git
扩展名是裸露的回购根文件夹的命名惯例) -
而不是推到裸露的回购:
去你当地的回购,并input:git remote set-url origin /url/repo/repo/yourProjectFolder.git
-
在裸回购(在服务器上,
yourProjectFolder.git/hooks/post-receive
)添加一个钩子,在其中- 改变目录(到您的非裸露的repo文件夹
yourProjectFolder
) -
unset GIT_DIR
-
git pull ../yourProjectFolder.git
- 改变目录(到您的非裸露的repo文件夹
请参阅“ 远程nodejs服务器永久部署 ”。