我是 git 的新手,只能自己工作,所以我没有使用它可以做的许多功能,但我遇到了一个过程,要么我想错了,要么做错了。
我有一个带有 1 次提交(初始化)的主分支。
我有一个包含 180 个提交的开发分支。
今天我终于准备好将 develop 分支 merge 到 master 中,我做了一些阅读并了解了 squash。这看起来很有用,因为我不会用 develop 分支中相同的 WIP 提交污染 master 分支。
所以我跑了
git checkout master
git merge --squash develop
git commit
从这里开始,一切看起来都符合我的预期,master
有 2 次提交,develop
仍然有 180 次。我现在在脑海中查看 develop
再次继续工作。我推送到 bitbucket
并环顾我的项目以查看此 merge 并注意到以下内容:
1 commit(s) on master and not on develop
179 commit(s) on develop and not on master
这是正常的行为,我应该忽略它还是我做错了什么。
最佳答案
这是预料之中的,因为 git 将您的所有提交 merge 为一个提交,与您的开发分支中的提交相比,这将是一个不同的提交。将提交视为一组更改的容器,如果您更改内容,您将拥有不同的内容。
您要么必须接受这种情况,要么可以通过在功能分支中工作来调整您的工作流程,例如master - develop - feature-branch.
完成一个功能后,您可以从功能分支进行压缩 merge 以开发和删除功能分支。现在您可以在没有所有 WIP 提交的情况下进行从开发到主控的 merge ,例如当您发布新版本时。
关于git - 如何正确使用 git merge --squash,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36437912/