在这面文本的最后,确实存在一个问题。只需要一些设置就可以了。我很感激你和我的关系。
我有一个项目,我是技术主管,还有另外两个开发人员。有些时候早期但实际上并不是在当前发展阶段的开始,我们对git感兴趣。
我将SVN工作目录导入git。我们三个人正在研究按顺序部署的功能(昵称为“促销”,然后是“地图”,然后是“调查”)。所以,当时并不是真的更了解,我从“大师”分支“地图”,从“地图”分支“调查”。我现在会采用不同的方式,但几个月前,我就是这样做的。
开发“第一个”项目的开发人员“promo”继续在SVN中工作,我手动保持主分支与他的更改同步,定期通过功能分支合并它们。它看起来像这样:
* ------- master (in sync with svn and containing work for "promo")
\*------- dev/map
\*------ dev/survey
所以上周“促销”上线了,昨天“地图”上线了,整个事情已经成熟,可以进行一些清理工作。
生产推送方法是,我git diff --stat master..dev/map
找到所有已更改的文件,并手动将它们FTP到生产服务器。
一旦经过测试和接受,我就去了:
git checkout master
git merge dev/map
git branch -d dev/map
所以现在master代表了暂存和开发服务器上的内容。然后:
git checkout -b production
git checkout -b development
git checkout -b hotfix
所以现在我有一个分支用于生产,一个用于集成,一个用于不可避免的快速修复生产。我认为dev / survey是“发展”的一个分支。
我做了git remote
命令镜像并将所有这些更改推送到我的中央(gitolite)repo。它不会让我推:master
因为克隆会让人感到困惑 - 我确实得到了,但我可能会把它配置为让我继续这样做。
然后我问我的“调查”工作人员下拉所有这些更改,并使用git diff --stat
找到他要更改的文件放在登台服务器上。当他这样做时,他得到了一份似乎与他的变化无关的文件列表。他确实得到了所有这些新的分支,但实际上并没有得到所有的提交或其他东西。
我让他得到了一个清洁克隆的回购,他得到了我想要的所有更改,并且能够在登台服务器上进行测试。
问题是:当他面对所有这些分支变化时,他的回购发生了什么?我认为分支只是标签的一个特例 - 一个与HEAD一起移动的标签。它应该刚刚得到所有合适的商品,不是吗?
答案 0 :(得分:0)
不知何故,gitolite repo上的主人与开发人员的git repo上的主人有着不同的历史。
所以它不是“他的回购会发生什么?”因为它是关于“在gitolite(中央)回购中发生了什么(推动期间)?”。