我正在使用Source Tree作为首选的Git GUI。我正在尝试实现git-flow系统,这意味着大多数提交将在功能分支中完成。 As you can see on this image,创建功能分支,推送提交并将其合并回dev分支可以正常工作。
问题是:如果我要将提交压缩为一个(通过Source Tree或常规git命令),则完成功能会使它看起来好像提交是在dev分支上完成的。
Here is an example screenshot-红色分支是未压缩的测试功能,而“压缩的提交”和“提交1”是与上一个分支相同的压缩和合并方式。壁球中不包含“合并”提交,但是它们已经消失了。我还不确定是否应该以这种方式显示它们,或者实际上是以某种方式将这些更改重新部署到dev分支上。任何帮助或建议,我们感激不尽。
更新
无济于事,经过一系列实验后,我仍然遇到问题-通过git rebase压缩提交-i HEAD〜amount_of_commits导致源代码树或git本身存在差异。使用“完成功能”按钮,它发出以下命令:
git checkout develop
git merge feature_branch
或通过git控制台手动执行相同的命令会导致以下情况:git合并后,“将分支功能/ feature_branch合并到dev中”提交is not created.压缩的提交显示为dev分支的一部分,并且具有源树GUI中的“ dev”标签。起初我以为是因为这可能就是它只显示一次提交就显示分支的方法,但是没有,创建功能分支并在一次提交provides correct output之后合并了它。 也许使用不同的merge命令可能会解决这种情况,但是我担心为什么Source Tree会这样工作。我仍然相信这个问题,如果我的git rebase命令以及执行方式有误。任何帮助表示赞赏。
答案 0 :(得分:-1)
对于所有遇到相同问题的人:显然,这是一个未记录的功能,而不是错误。
Source Tree使用git flow工具箱,其脚本设置为动态确定是否应使用快进,就像在常规git中一样。快进可防止合并提交,而仅在已签出的分支上重播您的更改。为了保留分支,您必须手动调用
git merge --no-ff feature/feature-branch
这是您期望git flow工具包执行的操作。显然,如果您要进行单次提交功能,则 UNLESS 会提交提交给开发人员分支创建后,则它不应用--no-ff参数(这就是为什么我以为合并单提交分支可以正常工作,除非被压缩。
根据https://community.atlassian.com/t5/Git-questions/git-flow-merge-no-ff/qaq-p/404062,您可以手动修改基础脚本,没有其他方法可以自动执行此过程。选中“工具”->“选项”->“ Git”下的“合并时不快进,始终创建提交”不会更改当前策略。