是否可以将 git 配置为压缩合并,但不能压缩来自拉取的更改?如果可能的话,我将如何以这种方式配置 git?
我通过配置 gitgit config branch.<name>.mergeoptions --squash
虽然这适用于压缩来自合并分支的提交,但它也尝试在进行拉取时压缩传入的更改。
是否可以将 git 配置为压缩合并,但不能压缩来自拉取的更改?如果可能的话,我将如何以这种方式配置 git?
我通过配置 gitgit config branch.<name>.mergeoptions --squash
虽然这适用于压缩来自合并分支的提交,但它也尝试在进行拉取时压缩传入的更改。
在您的 ~/.gitconfig 或 .git/config 每个项目的基础上。
...
[alias]
ms = merge --squash
编辑:根据 git-config 手册页,无法覆盖内置命令。更新了答案以建议为此使用单独的命令。
git(1) 命令包装器的命令别名 - 例如,在定义“alias.last = cat-file commit HEAD”之后,调用“git last”等效于“git cat-file commit HEAD”。为了避免脚本使用的混乱和麻烦,隐藏现有 git 命令的别名将被忽略。参数由空格分隔,支持通常的 shell 引用和转义。引号对和反斜杠可用于引用它们。
我认为你需要做 agit fetch
然后 agit merge --no-squash
做你想做的事。或者,如果您想在单个命令中执行此操作,一个简单的 git 别名(或 bash 别名或函数,就此而言)就足够了:
git config alias.pull-no-squash '!git fetch; git merge --no-squash'