我发生了一些奇怪的情况&我不确定如何诊断问题。
概述
我有3个环境已初始化为git repos:
Staging是Production的git clone,Dev是Staging的git clone。工作流的目的是允许任意数量的本地开发环境(Dev),然后可以将其推送到分段仓库(Staging)进行审查。经过审核和批准后,我可以从分期转到生产。
问题
将Staging repo克隆到本地Dev环境时,clone可以正常工作。但是,如果在Dev上提交了本地更改,然后在Staging上将其推送回origin / master,则不会应用Dev commit中已更改的文件。
当我在远程服务器上运行git log
时,我的Dev提交正在显示在历史记录中,它们只是没有被“应用”(即我的本地开发环境中的文件更改未应用于远程起源/主人)。但是,奇怪的是 - 在本地Dev上,如果我对文件进行更改,则提交& push to Staging origin / master然后在Staging上运行git status
,Dev Commit中的文件显示为“staged”。
我完全不知道这里发生了什么。我尝试从分段中克隆一个全新的dev repo并出现同样的问题。
以下是我对每个环境的git配置设置:
生产配置(远程)
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
[receive]
denyCurrentBranch = ignore
暂存配置(远程)
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
[receive]
denyCurrentBranch = ignore
[remote "origin"]
url = /home/xxx/public_html
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
remote = origin
merge = refs/heads/master
Dev Config(本地)
[core]
repositoryformatversion = 0
filemode = false
bare = false
logallrefupdates = true
symlinks = false
ignorecase = true
[remote "origin"]
url = ssh://username@remote.server.biz:port/home/username/staging/1
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
remote = origin
merge = refs/heads/master
答案 0 :(得分:2)
推送到非裸存储库是一个非常糟糕的主意,并且这样的推送不会像您观察到的那样自动更新任何工作树。这是正常和预期的行为。
Git不是一个部署工具,但您可以围绕它构建一个(在简单环境中)或将其用作对象存储(对于复杂的存储)。以下是一些可以帮助您入门的选项/想法:http://gitolite.com/deploy.html