如何在使用git hooks防止常规提交的同时使用“ git merge --squash”

时间:2018-11-19 16:59:53

标签: git git-merge git-squash

我想按照https://stackoverflow.com/a/40465455/329496的答案,阻止使用本地提交钩子来掌握提交。

这很好,因为我现在可以将要素分支上的更改合并到master中:

git merge feature_branch

我实际上想使用壁球合并,以便完成的功能作为一次提交提交到主控器上:

git merge --squash feature_branch

实际上并没有合并,而是将压缩的更改创建为索引中的修改文件。然后,我必须提交那些索引更改,但是我已禁用对master的提交。

是否有办法防止提交到母版,并确保从要素分支合并的工作被自动压缩?

1 个答案:

答案 0 :(得分:1)

在这种情况下,Git不知道在master上进行的提交(您想要的那种)(合并壁球)和您不需要的那种(其他所有东西)之间的区别。尽管各种托管平台(例如GitHub和GitLab)都提供了这种方法来作为请求请求的选项,但是用普通的Git确实没有办法做到这一点。

但是,有一种解决方法。您可以通过运行master-merge来创建另一个分支(例如git checkout -B master-merge master),并在该处执行壁球,然后在{{1}上使用master快速前进到git merge --ff-only master-merge }。然后,不会在master上进行任何实际的提交,而只是进行快进。