这面文字墙的最后确实有一个问题。只需进行一些设置即可。我很感激你对我的态度。
我有一个项目,我是技术主管,还有另外两个开发人员。在当前开发阶段的早期,但实际上并不是在开始的时候,我们对 git 产生了兴趣。
我将 SVN 工作目录导入 git。我们三个人正在研究按顺序部署的功能(昵称“promo”,然后是“map”,然后是“survey”)。所以,当时并没有真正了解,我将“map”从“master”分支出来,将“survey”从“map”分支出来。我现在会做不同的事情,但几个月前,我就是这样做的。
开发“第一个”项目“promo”的开发人员一直在 SVN 中工作,我手动保持 master 分支与他的更改同步,并通过功能分支定期合并它们。它看起来像这样:
* ------- 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
所以现在我有一个用于生产的分支,一个用于集成,一个用于生产中不可避免的快速修复。我可以将开发/调查视为“开发”的一个分支。
我执行git remote
命令将所有这些更改镜像并推送到我的中央(gitolite)存储库。它不会让我推动:master
,因为这会使克隆感到困惑——我确实明白这一点,但我可能会对其进行配置,让我继续这样做。
所以然后我让我从事“调查”的人删除所有这些更改,并使用它git diff --stat
来查找他更改的文件以放在登台服务器上。当他这样做时,他得到了一长串似乎与他的更改无关的文件。他确实得到了所有这些新分支,但不知何故实际上并没有得到所有的提交或其他东西。
我让他得到了一个干净的 repo 克隆,他得到了我想要的所有更改,并且能够在登台服务器上进行他的工作以进行测试。
问题是:当他的 repo 遇到所有这些分支更改时,发生了什么?我认为分支只是标签的一个特例——一个与 HEAD 一起移动的标签。它应该刚刚得到了所有正确的货物,不是吗?