当我使用git log
查看我的提交说明时,如
1. what I changed
2. blank line
3. why I changed it
在3行中,不像1. what i changed 2. blank line 3. why i changed
只在一行中。
答案 0 :(得分:54)
您只需使用以下命令:
$ git commit -m "1. what i changed
> 2. blank line
> 3. why i changed"
在您的终端中,只需按“输入”即可获得新行。在添加结束引用之前,提交消息不会结束。 git日志将如下所示:
$ git log
commit abcde2f660c707br2d20411581c4183170c3p0c2
Author: Alex Pan <alexpan@stackoverflow.com>
Date: Tue Apr 28 20:52:44 2015 -0700
1. what i changed
2. blank line
3. why i changed
答案 1 :(得分:20)
摘自文件
-m <msg> --message=<msg>
使用given作为提交消息。如果给出了多个-m选项,则它们的值将作为单独的段落连接。
在你的情况下,它完全符合你的要求,在第一行和第二行之间插入一个空行
git commit -m "what I changed" -m "why I changed it"
如果您想修改以前添加的评论
,这非常有用答案 2 :(得分:9)
我发现将提交消息保存到文件更容易,然后使用-F选项。
示例:
$ cat > /tmp/commit_msg.txt
DE123 bug fix: incorrect fetching of instance details
- fixed this and that
- also did such and such
$ git commit -F /tmp/commit_msg.txt
您还可以使用编辑器在提交之前编辑消息文件。
答案 3 :(得分:7)
您描述的多行格式是Git推荐的格式(请参阅the documentation of git commit中的讨论)。最简单的方法是使用git commit
而不是-m
,并在文本编辑器中编写消息。
答案 4 :(得分:3)
尝试以编程方式执行此操作时,您可以使用stdin
,而不是使用临时文件 git commit -F-
然后将消息写入stdin
答案 5 :(得分:0)
我需要一个bash脚本为我执行多行git提交,因此我想到了以下两个选项:
写入一个临时文件,然后将该文件的内容作为消息提交:
printf "first line\nsecond line\nthird line" > "file.txt"
git commit -F "file.txt"
(我的首选方法):写入一个临时变量,然后将该变量的内容作为消息提交。请注意,在执行任何命令以调用变量内容时,$MSG
周围的引号是必需的! 。如果没有它们,您将失去换行符。>
MSG="$(printf "first line\nsecond line\nthird line")"
git commit -m "$MSG"
作为第二种方法的扩展,如果您需要编写脚本以多个片段或步骤构建消息,也可以这样做。不过要当心!请注意我在哪里放置换行符(\n
)。我不会将它们放在任何printf
字符串的末尾。那是因为如果我这样做,他们会get gobbled up,因为bash会自动删除任何 trailing 换行符,因为那样愚蠢。因此,改为这样做,效果很好:
MSG="$(printf "first line")"
MSG="$(printf "${MSG}\nsecond line")"
MSG="$(printf "${MSG}\nthird line")"
git commit -m "$MSG"
上述git log
中任何一个的样本git commit
输出:
commit e1983659c6ae2e9d2eb4332657329837582fc32b (HEAD -> master)
Author: Gabriel Staples <email@gmail.com>
Date: Tue Mar 24 00:55:31 2020 -0700
first line
second line
third line