从命令行向’git commit -m’添加换行符------转

这篇具有很好参考价值的文章主要介绍了从命令行向’git commit -m’添加换行符------转。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

关于bash:从命令行向’git commit -m’添加换行符


bashgitshell

Add line break to 'git commit -m' from the command line

我从命令行使用Git,并尝试在提交消息中添加换行符(使用git commit -m"")而不进入Vim。

这可能吗?

 相关讨论

  • 作为一个注释,这里有一个链接,它总结了良好的提交消息约定 - github.com/erlang/otp/wiki/Writing-good-commit-messages,如果它可以帮助某人。
  • 像GIT_EDITOR="emacs" git commit -m 'paragraph1' -m 'paragraph2' -e之类的东西可以帮助你避免vim。

当然,它是如何完成的取决于你的shell。在Bash中,您可以在消息周围使用单引号,并且可以保持报价打开,这将使Bash提示另一行,直到您关闭报价。像这样:

1
2
3
4

git commit -m 'Message

goes
here'

或者,您可以使用"here document"(也称为heredoc):

1
2
3
4
5
6

git commit -F- <<EOF
Message

goes
here
EOF

 相关讨论

  • @Peter Farmer后来的回答提到Git约定显然是这样的:1行汇总,两行换行,然后是详细信息。
  • 另外,请参阅@esse下面的帖子。一个简单的回车就可以了。
  • 确切地说,请看@esse的这篇文章。
  • "here document"在其他不需要(不能)创建临时文件的上下文中非常方便。
  • 在Windows 7上没有为我工作
  • @MohamadAli,在Windows上,命令行解析的工作方式不同
  • 我在这里试图了解如何在不点击编辑器的情况下修改提交消息。我的食谱:
  • 双引号也会起作用吗?
  • @KelvinShadewing,是的,但不同的是,shell替换规则适用于消息,因此您需要转义美元符号和其他元字符。另一方面,它允许您使用变量。
  • @SimonRichter在Windows命令行解析工作方式不同,但仍然使用git commit -m"Hello^ World"不起作用。输入将以2行给出,但在执行git log时,您将只看到一行。
  • @SimonRichter -F后的-表示什么?
  • @Nikhil,许多程序支持单个破折号作为文件名来表示stdin或stdout。使用here文档,git命令可以从stdin读取消息文本,-F选项提供文件名以从中读取消息。
  • 就像一个注释:第一种方法也适用于PowerShell(使用5.1版,Windows 10,桌面测试) - 同时使用单引号和双引号。如果有疑问,可以使用echo"line a [return] line b" [return]测试此行为,然后再在git commit中使用它。

如果你只想要一条头条和一条内容,你可以使用:

1

git commit -m"My head line" -m"My content line."

 相关讨论

  • 使用gitk时,这显示为单独的消息,但感谢它确实有效。
  • 这有利于在Windows上工作,其中引用其他地方提到的技巧不起作用。每行分开-m。太好了!
  • 使用此方法创建的消息在GitHub,GitHub for Windows和TortoiseGit上正确显示。
  • @ddotsenko这是在Linux / Mac上工作的好处,我们有一个像样的shell =)
  • 从man git commit: - m , - message = 使用给定的作为提交消息。如果给出多个-m选项,则它们的值将作为单独的段落连接。
  • 与其他建议不同,在Windows上运行!您可以添加空白行,如-m""(需要引号)
  • 这是跨平台单行多行提交消息的真正答案!
  • 请注意,这会创建单独的段落 - 而不是行。因此每两条-m行之间会有一个空行。
  • 这完全适用于Windows CMD!太好了!
  • 请注意,如果您在Windows上使用Bash,以前基于Bash的解决方案就足以满足该终端环境的要求。
  • 此方法也适用于编辑提交消息:git commit --amend -m"My head line, updated" -m"My content line, updated." +1
  • 只是为了澄清任何可能误解@ Ohad-Schneider的大量赞成评论的人 - 根据共同惯例,单独的"段落"是理想的行为。

使用Bash命令行中的Git,您可以执行以下操作:

1
2
3
4

git commit -m"this is
> a line
> with new lines
> maybe"

只需键入并按Enter,如果需要新行,">"符号表示您已按下Enter,并且有一个新行。其他答案也有效。

 相关讨论

  • Abizern的回答为我澄清了为什么这样做--Bash shell将Enter按键解释为新行,直到第一个双引号字符为'closed'(后续双引号字符)。
  • 我必须同意,这是一个更有效,更容易和实用的解决方案,是接受的答案。使用Git 1.8.2.1对我很有用。来自我的+1。
  • 在zshell中不起作用
  • 这不是Enter键的特殊功能,而是与引号相关。无论你使用双引号还是单引号都没关系,除了变量扩展和转义特殊字符 - 这就是我在答案中选择单引号的原因。
  • 不要在zsh中使用它!终端将关闭,您输入的内容将丢失。
  • 适用于Windows的Gitbash。
  • 如何进入第一行提交。
  • 如何回到上一行?
  • 与我一起使用zsh!

你应该可以使用

1
2

git commit -m $'first line
second line'

从Bash手册:

Words of the form $'string' are treated specially. The word expands to
string, with backslash-escaped characters replaced as specified by the
ANSI C standard.

这包括对上述新行的支持,以及十六进制和Unicode代码等。转到链接部分以查看反斜杠转义字符的列表。

 相关讨论

  • 不适合我:/
  • @rsy:你用的是什么版本的Bash?当你做echo $'one
    two'时你看到了什么?
  • rsy $ bash --version GNU bash,版本3.2.53(1)-release(x86_64-apple-darwin13)版权所有(C)2007 Free Software Foundation,Inc。正如预期的那样,该命令的输出以两种不同的方式显示行!
  • 对于我在Windows 7上它是最好的选择谢谢
  • $是关键,我最初没有注意到它。否则我只是在我的消息中间得到一个 n。
  • @ChrisBob:谢谢你指出错过这么容易。我更新了我的答案来解释它并包含文档的链接。
  • 您甚至不必对整个字符串使用$'...';在换行符周围使用它将起作用:git commit -m"first line"$'
    '"second line"。请注意,在开始$'string'之前必须先关闭上一个字符串。
  • @PlasmaBinturong:这是真的,但对我来说它看起来更麻烦,更容易错过确保所有额外的引号匹配。

在Git提交中添加换行符

请尝试以下操作以创建多行提交消息:

1
2
3
4
5

git commit -m"Demonstrate multi-line commit message in Powershell" -m"Add a title to your commit after -m enclosed in quotes,
then add the body of your comment after a second -m.
Press ENTER before closing the quotes to add a line break.
Repeat as needed.
Then close the quotes and hit ENTER twice to apply the commit."

然后验证你做了什么:

1

git log -1

你应该得到这样的东西:

git 提交信息换行,git,vim,编辑器

截图来自我使用PowerShell和Poshgit设置的示例。

 相关讨论

  • 很棒的答案。我多年来一直在寻找这个,并尝试了许多不同的方式来格式化我的Git提交消息,但这是最好的。我可以通过Git 1.8.2.1确认它是否有效。
  • 在Powershell中你可以做换行
  • 它在Git Bash for Windows中对我有很大帮助。
  • 这应该是选择的答案,因为它是最兼容的方法,这不依赖于任何特定的CLI提示,就像其他一些建议一样。
  • 这是一个更好的答案,应该选择作为答案。这不仅作为默认行为排成一行,而且提供了更清晰的提交消息,但是使用多个-m也更灵活。即使它看起来特定于Windows并吸引了与Windows相关的评论,它在Linux中也可以正常工作。

做点什么

1
2

git commit -m"test
test"

不起作用,但有点像

1
2

git commit -m"$(echo -e"test
test")"

有效,但不是很漂亮。在PATH中设置git-commitlb命令,它执行以下操作:

1
2
3
4
5

#!/bin/bash

message=$1

git commit -m"$(echo -e"$message")"

并像这样使用它:

1
2
3

git commitlb"line1
line2
line3"

警告的话,我有一种感觉,即一般惯例是将摘要行作为第一行,然后是两个换行符,然后是提交消息中的扩展消息,因此这样做会破坏该约定。你当然可以这样做:

1
2
3
4

git commitlb"line1

line2
line3"

 相关讨论

  • +1这是让我沿着这条路走下去的一般惯例。谢谢

从Git文档:

-m
--message=
Use the given as the commit message. If multiple -m options are given, their values are concatenated as separate paragraphs.

所以,如果你正在寻找分组多个提交消息,这应该做的工作:

1

git commit -m"commit message1" -m"commit message2"

 相关讨论

  • 不可知解决方案(与shell无关)。谢谢你。我们需要RTFM :)

我希望这不会过于远离发布的问题,而是设置默认编辑器然后使用

1

git commit -e

可能会更舒服。

 相关讨论

  • 这个应该是最好的anwser。
  • 你可以放弃-e,它仍然会打开编辑器
  • 这个是我正在寻找的答案。

没有必要使这些东西复杂化。在-m"text...之后,按Enter获取下一行。按下Enter时出现>。完成后,只需输入"并按Enter:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

$ git commit -m"Another way of demonstrating multicommit messages:
>
> This is a new line written
> This is another new line written
> This one is really awesome too and we can continue doing so till ..."

$ git log -1
commit 5474e383f2eda610be6211d8697ed1503400ee42 (HEAD -> test2)
Author: ************** <*********@gmail.com>
Date:   Mon Oct 9 13:30:26 2017 +0200

Another way of demonstrating multicommit messages:

This is a new line written
This is another new line written
This one is really awesome too and we can continue doing so till ...

 相关讨论

  • 这个答案没有得到足够的爱!
  • 这是一个很好的答案,新的线条在Github上正确显示。第一行显示为标题。

我在Mac上使用zsh,我可以在双引号(")中发布多行提交消息。基本上我一直在键入并按回新行,但是在我关闭引号并返回之前,消息不会发送到Git 。

 相关讨论

  • 你可以在bash中做同样的事情。

在Bash / Zsh中,您只需在引号内使用文字换行符:

1
2
3

git commit -m 'Multi-line
commit
message'

ANSI-C引用也适用于Bash / Zsh:

git commit -m $'Multi-line
commit
message'

您还可以指示Git使用您选择的编辑器来编辑提交消息。从git-commit上的文档:

The editor used to edit the commit log message will be chosen from the
GIT_EDITOR environment variable, the core.editor configuration
variable, the VISUAL environment variable, or the EDITOR
environment variable (in that order). See git-var for details.


如果您正在使用Bash,请点击C-x C-e(Ctrl + x Ctrl + e),它将在您首选的编辑器中打开当前命令。

您可以通过调整VISUAL和EDITOR来更改首选编辑器。

这就是我在.bashrc中所拥有的:

1
2
3
4

export ALTERNATE_EDITOR=''
export EDITOR='emacsclient -t'
export VISUAL='emacsclient -c'
export SUDO_EDITOR='emacsclient -t'

 相关讨论

  • 那么为什么有人为此投票呢?这是在bash中使用多行命令的最方便的方法,您只需将其配置一次即可。我一直在使用其他答案中显示的其他愚蠢的建议,但是一旦你学会在你喜欢的文本编辑器中编辑命令,就没有办法了。
  • 这真是令人心碎的有用,我简直无法相信我过去的岁月没有这个。

就个人而言,我发现在vi(或者你选择的git编辑器)之后修改提交消息最??简单,而不是在命令行上,通过在git commit之后执行git commit --amend。

 相关讨论

  • 您可以实现相同的结果,而无需仅使用git commit -e进行修改。
  • 或者只是git commit,它将打开一个带有提交消息模板的编辑器。

可悲的是,git似乎不允许在其消息中添加任何换行符。 上面已经有各种合理的解决方案,但是当编写脚本时,这些解决方案很烦人。 这里的文档也可以工作,但也可能有点太讨厌处理(想想yaml文件)

这是我做的:

1
2
3

git commit \
    --message"Subject" \
    --message"First line$(echo)Second line$(echo)Third Line"

虽然这仍然是丑陋的,但它允许"单行",这可能仍然有用。 由于通常字符串是变量或与变量组合,因此可以将uglynes保持在最小值。


以下是Windows上带有标准cmd.exe shell的失败解决方案列表(为了节省一些试错时间!):

  • git commit -m 'Hello Enter不起作用:它不会要求换行

  • git commit -m"Hello Enter同上

  • git commit -m"Hello^ Enter同上

  • git commit -m 'Hello^ Enter World'看起来像是在工作,因为它问"更多?"并允许写一个新行,但最后在做git log时你会看到它仍然是一行的消息......

TL; DR:即使在Windows上,命令行解析的工作方式也不同,而^允许多行输入,这在这里没有帮助。

最后git commit -e可能是最好的选择。

 文章来源地址https://www.toymoban.com/news/detail-645391.html

到了这里,关于从命令行向’git commit -m’添加换行符------转的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Git在Windows下 自动转换换行符 LF CRLF 的解决方案

    很多时候我们做开发是在Windows下,然后需要部署到Linux环境,但他们的换行符是不一样的,而Git默认的设置会开启转换,也就是文件在Git存储的时候都是LF ,然后我们在Win下拉代码,就会自动转换成CRLF,如果我们需要在Win下做调试,就很麻烦,而如果我们关闭自动转换,在代

    2024年02月15日
    浏览(50)
  • windows中的换行符

    用连续两个换行符来分隔文本 Regex reg = new Regex(@\\\"nn\\\"); string[] s = reg.Split(this.richtextbox1.text); 结果正常 Regex reg = new Regex(@\\\"nn\\\"); string[] s = reg.Split(System.IO.File.ReadAllText(txtfilepath)); 没有达到分割效果 所以稳定起见改成Regex reg = new Regex(@\\\"(nn)|(rnrn)\\\");就OK了

    2023年04月09日
    浏览(48)
  • notepad++去除换行符和空格

    在notepad++中按Ctrl+h 1.去除换行符 输入如图所示的查找内容为rn,【替换为】不填写,勾选底部的【正则表达式】,然后点击【全部替换】 2. 按照逗号换行 输入如图所示的查找内容为,,【替换为】rn,勾选底部的【正则表达式】,然后点击【全部替换】   2.去除空格 在替换

    2024年02月12日
    浏览(77)
  • Perl区分文件换行符类型

    在Windows上使用Perl判断文件时何种换行符时,处理CR LF类型的换行符时,也识别成了LF。 Windows上的换行是 CRLF , Unix上是 LF , Mac CR 在Windows平台使用Perl读取文件创建文件句柄时,未对file handler设置binmode,了解到binmode模型作用是采用非二进制读取模式时,双字节换行符CR LF在读取

    2024年02月07日
    浏览(45)
  • Python如何换行】:使用换行符来实现多行代码的编写和阅读

    在Python中,有时候我们需要编写较长的代码行,为了提高可读性和美观性,我们可以使用换行符来将代码分成多行。下面我将详细介绍如何在Python中实现换行,并提供相应的源代码示例。 在Python中,我们可以使用反斜杠()作为换行符。当我们在一行代码中使用反斜杠作为

    2024年02月06日
    浏览(47)
  • EXCEl——移除单元格中换行符

    方法一:使用清除格式功能 步骤如下: 1.选中需要取消换行的单元格 2.在“开始\\\"选项卡中找到\\\"清除”功能,点击下拉菜单中的“清除格式\\\" 3.这时单元格的换行就被取消了。 清除前效果图 清除后效果图 方法一:使用函数功能 步骤如下: 1.在一个空白单元格内输入函数=SUBSTIT

    2024年02月16日
    浏览(62)
  • go字符串去除首尾所有换行符

    原创不易,如果对你有帮助,欢迎给作者点个赞哦! 一键开启舒适、快捷: 调用: 效果:

    2024年02月13日
    浏览(48)
  • 在 Python 中打印换行符——打印一个新行

    在编程中处理字符串或文本数据经常涉及打印换行符。一行的结尾由换行符表示,它还会将光标前进到下一行的开头。使用转义字符 \\\" n ”,我们可以在 Python 中打印换行符。 其他编程语言可能有不同的打印换行符的规则。 了解 Windows 中的轻松访问中心 虽然某些语言可能具

    2024年02月05日
    浏览(47)
  • sql中查找、修改、替换换行符和回车符

    在数据库里查询换行符和回车符我们用 ascii码 10和13,即 chr(10)为换行符,chr(13)为回车符 查询出来后进行修改、替换 

    2024年02月15日
    浏览(51)
  • Linux 换行符替换问题(window换行\r\n转linux换行\n)

    使用vim打开文件, 进入“末行模式”,输入 :set ff=unix 回车执行,告诉编辑器改为unix换行符 输入 :w 回车,完成保存 相关参考: linux环境中替换window换行符为linux换行符

    2024年02月16日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包