git - 如何使用主题行和消息正文进行 git 提交?

标签 git commit

我想改进我进行 git 提交的方式,并且我一直在网上阅读。我关注了这里的网站 http://chris.beams.io/posts/git-commit/这让我找到了https://git-scm.com/book/en/v2/Customizing-Git-Git-Configuration我可以在哪里设置默认编辑器,但我仍然不明白如何将主题行与提交正文分开编辑。

我习惯于:

git commit -am "message here"

但据我所知,对于更长的提交,我应该使用像 vim 这样的编辑器(在我的 mac 上)

最佳答案

最简单的方法是在没有 -m 和消息的情况下运行 git commit

(git commit -agit add -u; git commit 的快捷方式,还有其他一些细微的技术差异)

它将启动一个编辑器,您可以在其中输入多行提交消息。然后保存文件,当编辑器退出时,git commit 继续并使用文件中的消息。

如果您更喜欢通过单个命令执行所有操作(或者您编写了一个需要调用 git commit 的脚本,并且这种交互式提交方式不是一种选择),那么您可以提供提交主题和提交消息正文 using the -m argument two times :

git commit -m "this is the subject" -m "this is the body"

在命令行中多次使用 -m 将消息连接为单独的段落(由空行分隔)。这非常适合将主题作为第一个 -m 的参数提供,并将消息正文作为第二个 -m 的参数提供。

没有简单的方法可以在提交消息正文中嵌入换行符。使用三次或更多次 -m 选项将生成包含空行的提交消息,这可能不是您想要的。

如果您使用的是 LinuxmacOS 并且您选择的 shell 是 bash 那么有一种丑陋但有效的方式来编写消息包含新行的正文。将每一行嵌入引号 (") 以允许它们包含空格并使用 $'\n' 连接行,这是 bash 的方式在命令行(或脚本)中写入特殊字符。

命令看起来像这样:

git commit -m "the subject" -m "the first line"$'\n'"the second line"$'\n'"the third line"

关于git - 如何使用主题行和消息正文进行 git 提交?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40505643/

相关文章:

git - 替代 git rebase

node.js - Meteor 项目在切换操作系统时给出 npm 模块错误

git - 我如何将两个(或更多)完全不相关的线性分支祖先 "splice"变成一个新的?

git - 如何列出 git稀疏 checkout 中的所有文件?

git - 在 ubuntu 上商业使用 30 天后如何更改 SmartGit 的许可选项?

svn - CVS 到 SVN 的转换——如何替换 CVS TAGS 功能

c# - SQLite 事务未提交

git - 修复从提交到提交的 git 断开的链接

svn - SVN从待提交列表中删除文件

PHP 事务提交正常但 MySQL 数据库未更改