我希望能够在将功能分支合并到主分支后引入更改的方法。目标是使功能分支只包含与其相关的提交。
通常情况下,功能在推送到主分支后需要进行一些额外的修饰。此期间对主分支所做的更改与该功能没有冲突,这意味着在功能分支上实施附加工作时可以基于实际的主分支进行变基。
下面的图片展示了这种情况:
通常情况下,功能在推送到主分支后需要进行一些额外的修饰。此期间对主分支所做的更改与该功能没有冲突,这意味着在功能分支上实施附加工作时可以基于实际的主分支进行变基。
下面的图片展示了这种情况:
我迄今所使用的方法是:将分支变基到主分支,然后将功能合并回主分支。
Against -> 功能分支现在被主分支的部分污染了。
问题: 在实践中,你采取了哪些方法来解决这个问题?
示例代码
为了帮助描述下面的方法,以下是创建存储库结构的示例代码。
# mkdir test
git init
touch master-change-file
git add master-change-file
git commit -m "initial commit"
echo 1 > master-change-file
git commit -a -m "master commit 1"
echo 2 > master-change-file
git commit -a -m "master commit 2"
git checkout -b feature
echo 3 > feature-change-file
git add feature-change-file
git commit -a -m "feature commit 1"
echo 4 > feature-change-file
git commit -a -m "feature commit 2"
echo 5 > feature-change-file
git commit -a -m "feature commit 3"
git checkout master
git merge --no-ff feature -m "Merge branch 'feature'"
git checkout feature
echo 6 > feature-change-file
git commit -a -m "feature commit 4"
echo 7 > feature-change-file
git commit -a -m "feature commit 5"
git checkout master
echo 8 > master-change-file
git commit -a -m "master commit 3"
echo 9 > master-change-file
git commit -a -m "master commit 3"
# gitk --all
git push
将功能推送到master
。这不是真正的普通合并,因为合并会让您留下一个提交,而快进master
可能会让您从功能分支中留下 许多 提交。 - Tim Biegeleisenmaster
上重新定位功能并快进master
,或者只是将来自功能的新提交合并到master
中。 - Tim Biegeleisen