【发布时间】:2013-11-27 11:28:38
【问题描述】:
我对 Git 还很陌生,但我可以自己解决它,而且基本上一切都按照我希望的方式工作。我刚刚遇到了一个涉及 Git、Bitbucket 和经常被引用的“成功的 Git 分支模型”的问题。
我有我的 web 项目的本地副本,并使用 Mamp Pro 在本地进行开发。就像我说的那样,我将自己定位在“A successful Git branching model”上,因为它似乎经过深思熟虑,并且经常在网络上的许多 Git 文章中被引用。
当我完成修补程序或新功能后,我推送到 Bitbucket,然后运行 POST Hook,我使用 FTPloy (http://ftploy.com/) 创建和管理。
现在,当我因为网站上的某些内容无法运行而想要进行修补程序时,我会这样做,假设 Master 和 Staging 已同步并且是最新的:
$ git checkout -b hotfix-5.0.20 master
然后我解决问题并提交它。 Successl Branching Modell 现在说应该首先将修复合并回主控。我在这里更改了工作流程,因为我宁愿先合并回 Development 然后推送它,因为这反过来会更新 dev.domain.com,这是我在实际 Liveserver 上运行的暂存环境。我想这样做是为了能够检查一切是否真的固定(而不是反过来破坏其他任何东西)。
所以我这样做:
$ git checkout dev
Switched to branch 'dev'
$ git merge --no-ff hotfix-5.0.20
Merge made by recursive.
(Summary of changes)
$ git push origin dev
然后我检查 Dev 中的所有内容,如果一切正常,我会这样做:
$ git checkout master
Switched to branch 'master'
$ git merge --no-ff hotfix-5.0.20
Merge made by recursive.
(Summary of changes)
$ git push origin master
然后我将删除修补程序分支。
现在,让我失望的事情来了:
当我在完成上述步骤后进入 Bitbucket 并点击“Branches”时,Bitbucket 告诉我开发分支是一个 Commit behind 和一个 Commit ahead。然后,当我单击 Dev 分支并将其与 Master 同步时,Bitbucket 会创建一个新的 Commit 并将 Dev 与 Master 合并。当我进入最后一次提交时,不会显示任何代码更改,所以它基本上是一个空提交。
然后我必须拉入我的本地 Git 目录,然后从那里一切都同步并再次更新。
现在,就像我说的那样,我对 Git 还很陌生,但我感觉有些地方出了问题。我不想在每次提交后都进行手动同步和拉取,如果我忘记这样做,我最终会出现不同步的分支(至少在 Bitbucket 中)。
解决方案是否可能就像一开始从 Dev 分支而不是 Master 分支一样简单?
期待您的意见,并在此先感谢您!
干杯,马克
编辑/更新
好的,我刚刚尝试准确地跟随但得出了相同的结果。我很确定一定是我做错了什么。请容忍我。我现在这样做了:
$ git checkout -b hotfix-5.0.21 master
进行我的更改,提交它们。
$ git checkout master
$ git merge --no-ff hotfix-5.0.21
然后
$ git checkout development
$ git merge --no-ff hotfix-5.0.21
然后
$ git branch -d hotfix-5.0.21
最后
$ git push
Bitbucket 现在再次显示后面的东西,前面的东西...... :(
【问题讨论】:
标签: git branch bitbucket git-flow