我一直在尝试理解git分支模型。我一直在寻找http://nvie.com/posts/a-successful-git-branching-model/的一些想法,从Subversion中我真正期待的一件事是在一个地方进行更改,并将其合并到所有需要它的分支中。在Subversion中,我们最终复制了大量的代码。
然而,我仍然不完全理解这一点。这是我拥有的标准类型的工作流,它总是会出现冲突。
# create new version branch
git checkout master
git checkout -b v3
vim pom.xml # change branch version to "3.1-SNAPSHOT"
git commit -a
git checkout master
vim pom.xml # change master version to "4.0-SNAPSHOT"
git commit -a
因此,主节点位于4.0-SNAPSHOT,分支位于3.1-SNAPSHOT。
不,我想在分支上创建一个热修复程序并将其移动到主干上。
git checkout v3
git checkout -b hotfix
vim file.txt # make a bugfix change
git commit -a
git checkout v3
git merge hotfix # this works fine
git checkout master
git merge hotfix # this has a conflict since both branches have changed the version
我理解为什么会发生这样的事情,这是有道理的。有没有更好的方法来做这件事?
我读过有关cherry-pick的文章,我测试了一下,它确实起作用了:
git checkout v3
git cherry-pick a518b0b75eaf28868
git checkout master
git cherry-pick a518b0b75eaf28868
然而,这似乎不是处理这个问题的“正确”方法。有什么建议吗?
https://stackoverflow.com/questions/10761348
复制相似问题