windows - git 合并默认选项
问题描述
当我git merge
在另一个分支中时,我喜欢传递--edit --log
选项。我想让它自动化,但不知道怎么做。
我尝试了什么:
设置[merge]
我的全局部分.gitconfig
[merge]
edit = true
log = 20
Git 合并不会改变它的默认行为。
注意:我相信这些选项不适用于配置文件,因为我在输出中看不到它们 git help -c | grep merge
创建一个别名merge
如果我以第一种方式定义我的别名:
[alias]
merge = merge --edit --log
或第二个:
[alias]
merge = "! git merge $* --edit --log #"
然后我看不到 git 的行为有任何变化。
如果我将我的别名称为其他任何名称merge
,那么它会按预期工作(添加编辑和日志选项)。
那么,有什么解决方案可以默认git merge
使用吗?--edit --log
解决方案
正如其他人在评论中提到的,如果你命名一个 alias merge
,Git 会完全忽略它。也就是说,给定:
[alias]
merge = foo
marge = foo
runninggit merge
运行标准git merge
,但 runninggit marge
会给你一个关于git foo
不是 Git 命令的错误(当然,假设你没有让自己成为git-foo
命令)。
这适用于所有标准 Git 命令。
没有merge.edit
设置。或者 - 等效地 - 你可以设置merge.edit
任何你喜欢的东西,1但从git merge
不检查设置,所以它没有区别。
有一个设定merge.log
。这默认为false
,即,如果您尚未设置它,或者如果您将其设置为false
,则git merge
其行为方式与默认情况相同。将其设置为true
与将其设置为数字 20 具有相同的效果。
除非使用或指定合并消息,否则默认git merge
为。如果您使用合并运行方式,则该操作也是默认操作。--edit
-m
-F
git pull
--edit
merge.log
没有效果的一种特殊情况是fast-forward,它根本不是合并。2 由于快进操作没有创建新的提交,因此没有地方放置任何消息,因此merge.log
也被忽略。
所有这些都特定于 Git 本身实现的命令行。如果您正在使用其他软件(例如,Eclipse),那么其他软件可能有自己的实现,并且可能会完全忽略Git做事的方式。
1 Git 的设置框架非常通用,所以它允许你设置各种 Git 从不检查的东西。这有一个很好的副作用:这意味着您可以编写自己的命令来使用这些设置。它也有一个不好的副作用:例如,如果你拼错了一个设置名称,你永远不会收到任何警告。
该git config
文档应该包含对所有 Git 命令有意义的所有设置的主列表。请注意,有时会出现问题:例如,log.decorate
可以设置为auto
,这在很长一段时间内都是正确的,但直到 Git 2.9.0才记录在案。
2我认为 Git 在某些地方称之为快进合并有点不幸。
推荐阅读
- javascript - 如何根据角度材料中的垫单选按钮选择显示输入字段
- java - 如何在百里香片段参数中传递表达式?
- web - SLAM ROS How to make a map and visualise realtime on web using rosnodejs?
- javascript - 在 ReactJS 中允许变量具有多种类型
- java - 如何从 Firebase 中的两个不同集合中获取所有文档?
- asp.net-core - ASP.Net Core 从 FileStreamResult 返回 500 INTERNAL SERVER ERROR
- python - Pandas 将每小时索引的 df 除以每日索引的 df
- javascript - 如何按用户保存 Html 内容,包括输入?
- android - 如何使用单独的待处理意图创建多个分组通知
- jenkins - 错误:找不到 ID 为“${TEST}”的凭据条目