커맨드 라인에서 Git을 사용 git commit -m ""
하고 Vim으로 가지 않고 커밋 메시지 (을 사용하여 )에 줄 바꿈을 추가하려고합니다 .
이것이 가능한가?
GIT_EDITOR="emacs" git commit -m 'paragraph1' -m 'paragraph2' -e
것이 당신이 피하는 데 도움이 될 것 vim
입니다.
커맨드 라인에서 Git을 사용 git commit -m ""
하고 Vim으로 가지 않고 커밋 메시지 (을 사용하여 )에 줄 바꿈을 추가하려고합니다 .
이것이 가능한가?
GIT_EDITOR="emacs" git commit -m 'paragraph1' -m 'paragraph2' -e
것이 당신이 피하는 데 도움이 될 것 vim
입니다.
답변:
확실히, 그것이 어떻게 이루어지는지는 쉘에 달려 있습니다. Bash에서는 메시지 주위에 작은 따옴표를 사용하고 따옴표를 열어두면 따옴표를 닫을 때까지 Bash에서 다른 줄을 묻습니다. 이처럼 :
git commit -m 'Message
goes
here'
또는 "here document"(heredoc라고도 함)를 사용할 수 있습니다.
git commit -F- <<EOF
Message
goes
here
EOF
git
명령은 표준 입력에서 메시지의 텍스트를 읽을 수 있으며, -F
옵션에서 메시지를 읽을 수있는 파일 이름을 제공합니다.
헤드 라인과 콘텐츠 라인을 원한다면 다음을 사용할 수 있습니다.
git commit -m "My head line" -m "My content line."
이렇게하면 줄이 아닌 별도의 단락이 만들어집니다. 따라서 두 줄 사이에 빈 줄이 있습니다. -m
예 :
My head line
My content line.
-m
각 줄마다 분리하십시오 . 좋은!
man git commit
: -m <msg>, --message = <msg> 주어진 <msg>를 커밋 메시지로 사용하십시오. 여러 개의 -m 옵션이 제공되면 해당 값은 별도의 단락으로 연결됩니다.
-m
.
Bash와 함께 명령 행에서 Git을 사용하면 다음을 수행 할 수 있습니다.
git commit -m "this is
> a line
> with new lines
> maybe"
Enter새 줄을 원할 때 간단히 입력하고 누르 십시오. ">"기호는을 눌렀 음을 나타내며 Enter새 줄이 있습니다. 다른 답변도 효과가 있습니다.
사용할 수 있어야합니다
git commit -m $'first line\nsecond line'
로부터 배쉬 설명서 :
$ ' string ' 형식의 단어는 특별히 취급됩니다. ANSI C 표준에 지정된대로 백 슬래시 이스케이프 문자를 바꾸어 단어를 string으로 확장합니다 .
여기에는 위에 표시된대로 줄 바꿈과 16 진 및 유니 코드 코드 및 기타 지원이 포함됩니다. 백 슬래시 이스케이프 문자 목록을 보려면 링크 된 섹션으로 이동하십시오.
echo $'one\ntwo'
있습니까?
git commit -m "first line"$'\n'"second line"
합니다. 시작하기 전에 이전 문자열을 닫아야합니다 $'string'
.
Git 커밋에 줄 바꿈 추가
여러 줄 커밋 메시지를 만들려면 다음을 시도하십시오.
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."
그런 다음 수행 한 작업을 확인하십시오.
git log -1
다음과 같이 끝내야합니다.
스크린 샷은 Poshgit과 함께 PowerShell을 사용하여 설정 한 예에서 가져온 것입니다.
같은 일을
git commit -m"test\ntest"
작동하지 않지만
git commit -m"$(echo -e "test\ntest")"
작동하지만 아주 예쁘지 않습니다. 다음과 같은 작업을 수행 하는 git-commitlb
명령을 설정 PATH
하십시오.
#!/bin/bash
message=$1
git commit -m"$(echo -e "$message")"
그리고 이것을 다음과 같이 사용하십시오 :
git commitlb "line1\nline2\nline3"
경고의 말씀, 나는 일반적인 규칙이 요약 줄을 첫 번째 줄로, 두 줄 바꿈, 그리고 커밋 메시지에 확장 메시지를 두어야한다는 느낌이 들었습니다. 물론 할 수 있습니다 :
git commitlb "line1\n\nline2\nline3"
-e
여전히 편집기를 열 것입니다
물건을 복잡하게 할 필요가 없습니다. 애프터 -m "text...
다음 라인은 눌러 받고있다 Enter. 때 Enter를 누르면 >
나타납니다. 완료되면 다음을 입력 "
하고 누르십시오 Enter.
$ 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 ...
Bash / Zsh에서는 따옴표 안에 리터럴 줄 바꿈을 사용할 수 있습니다.
git commit -m 'Multi-line
commit
message'
ANSI-C 인용 은 Bash / Zsh에서도 작동합니다.
git commit -m $'Multi-line\ncommit\nmessage'
커밋 메시지를 편집하기 위해 선택한 편집기를 사용하도록 Git에 지시 할 수도 있습니다. git-commit 의 문서에서 :
커밋 로그 메시지를 편집하는 데 사용되는 편집기는
GIT_EDITOR
환경 변수,core.editor
구성 변수,VISUAL
환경 변수 또는EDITOR
환경 변수 (순서대로)에서 선택됩니다. 자세한 내용은 git-var 을 참조하십시오.
개인적으로, 나는 vi
커맨드 라인이 아닌 (또는 선택한 git editor가 무엇이든) 실제로 커밋 메시지를 수정하는 것이 가장 쉽다는 것을 알게 git commit --amend
되었습니다 git commit
.
git commit -e
.
git commit
, 커밋 메시지 템플릿으로 편집기를 엽니 다.
Bash를 사용하는 경우 C-x C-e
( Ctrl+ x Ctrl+ e)를 누르면 기본 편집기에서 현재 명령이 열립니다.
VISUAL
및 을 조정하여 선호하는 편집기를 변경할 수 있습니다 EDITOR
.
그것이 내가 가진 것입니다 .bashrc
.
export ALTERNATE_EDITOR=''
export EDITOR='emacsclient -t'
export VISUAL='emacsclient -c'
export SUDO_EDITOR='emacsclient -t'
다음은 표준 cmd.exe 셸을 사용하여 Windows 에서 실패한 솔루션 목록입니다 (일시적인 시행 착오 시간을 절약하기 위해).
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
으로 아마도 최선의 선택 일 것입니다.
슬프게도, git은 메시지에 줄 바꿈 문자를 허용하지 않는 것 같습니다. 이미 다양한 합리적인 해결책이 있지만 스크립팅 할 때 귀찮습니다. 여기 문서도 작동하지만 다루기가 너무 성 가실 수도 있습니다 (yaml 파일 생각)
여기 내가 한 일이 있습니다.
git commit \
--message "Subject" \
--message "First line$(echo)Second line$(echo)Third Line"
이것은 여전히 추악하지만 여전히 유용 할 수있는 '한 줄짜리'를 허용합니다. 일반적으로 문자열은 변수이거나 변수와 결합되므로 uglynes는 최소로 유지 될 수 있습니다.