压缩的功能分支通过源代码树显示为开发分支的一部分
Squashed feature branch appears as part of dev branch via Source Tree
我使用源代码树作为 Git GUI 的选择。我正在尝试实现 git-flow 系统,这意味着大部分提交将在功能分支中完成。
As you can see on this image,创建功能分支,推送提交并将它们合并回开发分支工作正常。
问题是:如果我要将我的提交压缩为一个(通过源代码树或常规 git 命令),完成该功能会使它看起来好像提交是在 dev 分支上完成的。
Here is an example screenshot - 红色分支是未压缩的测试功能,而 "Squashed commit" 和 "commit 1" 是压缩和合并方式与前一个分支相同的提交。 "merge" 提交没有包含在 squash 中,但是它们已经消失了。我还不明白它们是否应该以这种方式显示,或者我实际上正在以某种方式将这些更改重新定位到 dev 分支。感谢任何帮助或建议。
更新
无济于事,经过一系列实验后我仍然遇到问题 - 通过 git rebase -i HEAD~amount_of_commits 压缩提交会导致源代码树或 git 本身。使用 "finish feature" 按钮,发出以下命令:
git checkout develop
git merge feature_branch
或通过 git 控制台手动执行相同的命令会导致 git 合并 "Merge branch feature/feature_branch into dev" 提交 is not created. The squashed commit is displayed as part of dev branch and it has the "dev" tag in Source Tree GUI. At first I thought because maybe that's how it displays branches with just one commit, but no, creating a feature branch and merging it after just one commit provides correct output 后的情况。
也许使用不同的合并命令可能会解决这种情况,但我担心为什么 Source Tree 会像这样工作。如果我的 git rebase 命令并且我执行它的方式有误,我仍然相信这个问题。感谢任何帮助。
对于遇到同样问题的每个人:显然这是一个未记录的功能,而不是错误。
Source Tree 使用 git 流工具包,其脚本设置为动态确定是否应使用快进,就像在常规 git 中一样。快进会阻止合并提交,并简单地在签出的分支上重播您的更改。为了保留分支,您必须手动调用
git merge --no-ff feature/feature-branch
这是您期望 git 流工具包能做的事情。显然,如果您正在制作单次提交功能,它不会应用 --no-ff 参数,UNLESS 您已经提交给您的开发 post-branch创建(这就是为什么我认为合并单一提交分支工作正常除非被压扁的原因)。
根据 https://community.atlassian.com/t5/Git-questions/git-flow-merge-no-ff/qaq-p/404062,您可以手动修改底层脚本,并且没有其他方法可以自动执行此过程。在工具->选项->Git下检查"Do not fast-forward when merging, always create commit"并没有改变当前的策略。
我使用源代码树作为 Git GUI 的选择。我正在尝试实现 git-flow 系统,这意味着大部分提交将在功能分支中完成。 As you can see on this image,创建功能分支,推送提交并将它们合并回开发分支工作正常。
问题是:如果我要将我的提交压缩为一个(通过源代码树或常规 git 命令),完成该功能会使它看起来好像提交是在 dev 分支上完成的。
Here is an example screenshot - 红色分支是未压缩的测试功能,而 "Squashed commit" 和 "commit 1" 是压缩和合并方式与前一个分支相同的提交。 "merge" 提交没有包含在 squash 中,但是它们已经消失了。我还不明白它们是否应该以这种方式显示,或者我实际上正在以某种方式将这些更改重新定位到 dev 分支。感谢任何帮助或建议。
更新
无济于事,经过一系列实验后我仍然遇到问题 - 通过 git rebase -i HEAD~amount_of_commits 压缩提交会导致源代码树或 git 本身。使用 "finish feature" 按钮,发出以下命令:
git checkout develop
git merge feature_branch
或通过 git 控制台手动执行相同的命令会导致 git 合并 "Merge branch feature/feature_branch into dev" 提交 is not created. The squashed commit is displayed as part of dev branch and it has the "dev" tag in Source Tree GUI. At first I thought because maybe that's how it displays branches with just one commit, but no, creating a feature branch and merging it after just one commit provides correct output 后的情况。 也许使用不同的合并命令可能会解决这种情况,但我担心为什么 Source Tree 会像这样工作。如果我的 git rebase 命令并且我执行它的方式有误,我仍然相信这个问题。感谢任何帮助。
对于遇到同样问题的每个人:显然这是一个未记录的功能,而不是错误。
Source Tree 使用 git 流工具包,其脚本设置为动态确定是否应使用快进,就像在常规 git 中一样。快进会阻止合并提交,并简单地在签出的分支上重播您的更改。为了保留分支,您必须手动调用
git merge --no-ff feature/feature-branch
这是您期望 git 流工具包能做的事情。显然,如果您正在制作单次提交功能,它不会应用 --no-ff 参数,UNLESS 您已经提交给您的开发 post-branch创建(这就是为什么我认为合并单一提交分支工作正常除非被压扁的原因)。
根据 https://community.atlassian.com/t5/Git-questions/git-flow-merge-no-ff/qaq-p/404062,您可以手动修改底层脚本,并且没有其他方法可以自动执行此过程。在工具->选项->Git下检查"Do not fast-forward when merging, always create commit"并没有改变当前的策略。