做一个合并和解决冲突之后,有一个“容易”的方式只是接受默认生成的命令行提交信息? 我们的一个开发者将解决所有的冲突,然后做一个git commit -m"Merge Commit"
取代了生成的承诺,上市的所有冲突的文件信息。 我想有不同的标志,将只取当前文件而无需修改。 我知道有一个-F或--file =选项,但需要知道文件名,所有的时间。
谢谢
做一个合并和解决冲突之后,有一个“容易”的方式只是接受默认生成的命令行提交信息? 我们的一个开发者将解决所有的冲突,然后做一个git commit -m"Merge Commit"
取代了生成的承诺,上市的所有冲突的文件信息。 我想有不同的标志,将只取当前文件而无需修改。 我知道有一个-F或--file =选项,但需要知道文件名,所有的时间。
谢谢
显然,这里的“正确”答案是让你的开发者产生合并提交时要遵循正确的做法为您的团队。 需要注意的是你想要的行为习惯是默认的,只有最近已经开始要求“产生的人”犯下消息合并饭桶。 这是有原因的,它是不那么开发商会短路的过程与意义的消息。
也许开发商产生合并提交时,他/她应该重订呢?
这就是说,这次合并提交的输出git fmt-merge-msg
,对此你必须养活合并的父母犯。
每的文档 ,我只是尝试这样简单的命令和它的工作对我来说:
git commit --no-edit
随后,运行git log
,以确认默认的消息已被使用。
通过在合并失败时提交信息,这是要使用的保存在文件夹中的git一个文件,通常默认.git/MERGE_MSG
。 之后,冲突的解决运行git commit
养活这个消息保存到默认的编辑器。
如果没有被拾起的消息对自己也可以养活使用git的命令--file
选项,从文件中读取提交信息:
git commit --file .git/MERGE_MSG
只需设置编辑器不执行任何命令:
GIT_EDITOR=true git commit
git commit --file .git/MERGE_MSG
前面已经提到是好的,但它忽略了几个要点:
.git
目录,但文件.git
。 和可选:
MERGE_MSG
包含有关冲突的文件的一些信息。 前两点可以使用git rev-parse
:
git commit -F "$(git rev-parse --git-dir)/MERGE_MSG"
或者,用一个Git别名:
commit-merge = !cat $(git rev-parse --git-dir)/MERGE_MSG | git commit -F -
这适用于“正常”的信息库和子模块。 如果#
-marked冲突标志应该被丢弃,为了简单起见,仅用于合并消息的第一行可以采取:
git commit -m $(head -1 $(git rev-parse --git-dir)/MERGE_MSG)
或另一个别名:
commit-merge = !head -1 $(git rev-parse --git-dir)/MERGE_MSG | git commit -F -
我不得不使用-F
键的别名,因为我不能做的Git发出报价在生成的命令使用bash来处理(否则git commit
合并过程中会抱怨的部分提交)。
Git的2.12.0这是发布前两天介绍git merge --continue
作出合并提交已停止在合并过程中的冲突。 它工作正常的子模块为好,但不接受--no-edit
,至少现在还不是,所以建议编辑总结合并前更改提交信息。
如果你真的要执行这个规则,那么有可能是一个办法,迫使该使用Git挂钩。
每当有合并冲突,那么“合并的差异”会告诉你哪些文件相冲突: git diff HEAD HEAD^1 HEAD^2 --name-only
。 我不知道,如果技术上有可能为组合的差异,显示的不仅仅是那些冲突更多的文件。
但是,假设它就像我们想要的(这是一个假设),那么你可以有一个混帐commit-msg
钩子检查用户输入及断言消息
如果这些条件失败,然后让脚本打印到屏幕的什么是错的解释,然后返回非零中止犯。 你可以有开发商安装此commit钩子,或者你也可以在服务器上安装它来执行它肯定。