Git은 #
커밋 할 때 주석 줄로 시작하는 줄을 처리합니다 . 이것은 티켓 추적 시스템으로 작업 할 때 매우 성가 시며 줄의 시작 부분에 티켓 번호를 쓰려고합니다.
#123 salt hashed passwords
git은 커밋 메시지에서 단순히 라인을 제거합니다. 해시를 피할 수있는 방법이 있습니까? 나는 시도 \
하고 !
, 그러나 아무것도 작동하지 않습니다. 이전의 공백 #
은 유지되므로 문제에 대한 해결책이 아닙니다.
Git은 #
커밋 할 때 주석 줄로 시작하는 줄을 처리합니다 . 이것은 티켓 추적 시스템으로 작업 할 때 매우 성가 시며 줄의 시작 부분에 티켓 번호를 쓰려고합니다.
#123 salt hashed passwords
git은 커밋 메시지에서 단순히 라인을 제거합니다. 해시를 피할 수있는 방법이 있습니까? 나는 시도 \
하고 !
, 그러나 아무것도 작동하지 않습니다. 이전의 공백 #
은 유지되므로 문제에 대한 해결책이 아닙니다.
답변:
이 동작은 git commit
'기본'정리 '동작의 일부입니다 . 라인을 시작으로 유지 #
하려면 대체 정리 모드를 사용할 수 있습니다.
예 :
git commit --cleanup=whitespace
이 작업을 수행 #
하면 커밋에 표시하고 싶지 않은 모든 행 을 제거해야 합니다.
commit.template
git 구성 변수에 의해 제어됩니다 .
git commit --amend --cleanup=whitespace
git1.8.2 (2013 년 2 월) 부터 #
커밋 메시지의 주석 처리 된 행에 ' '와 다른 문자를 사용할 수 있습니다 .
그러면 #
버그 번호 참조에 ' ' 를 사용할 수 있습니다 .
편집기에서 메시지를 편집하도록 사용자에게 요청할 때 Git이 제공하는 다양한 "힌트"라인은
#
기본적 으로 ' '로 주석 처리됩니다 .
core.commentChar
구성 변수는이 '를 사용자 정의하는 데 사용할 수있는#
다른 문자로'.
이론적으로, 당신은 할 수 를 넣어core.commentChar
단어 (여러 문자)를 있지만 git 2.0.x / 2.1이 더 엄격해질 것입니다 (2014 년 3 분기).
참조 50b54fd 커밋 에 의해 (응웬 타이 응옥 두이 pclouds
) :
우리는 주석 문자열을 지원하지 않습니다 (적어도 아직은 아닙니다). 그리고 멀티 바이트 문자 인코딩도 잘못 해석 될 수 있습니다.
두 개의 쉼표가있는 테스트는이를 위반하므로 업데이트됩니다. eff80a9 (커스텀 "comment char" -2013-01-16)에 도입
core.commentChar
된 패치와 함께 추가되었습니다 . 왜 그런 행동이 필요한지 분명하지 않습니다 .
git 2.0.x / 2.1 (Q3 2014)은 다음에 대한 자동 선택을 추가합니다 core.commentChar
. 커밋 84c9dc2
참조
때
core.commentChar
"이다auto
',"와 주석 문자의 시작#
기본에서와 같이'이지만 준비된 메시지에 이미있는 경우, 작은 부분 집합의 다른 문자를 찾을 수 있습니다. 자식이 예기치 않게 일부 줄을 제거하기 때문에 놀라움을 멈추어야합니다.git은
#
사용자 정의 템플릿에서 ' '를 주석 문자로 인식 하고 최종 주석 문자가 다른 경우 변환하기에 충분히 똑똑하지 않습니다 .
커밋 메시지의 일부로 사용자 정의 템플릿의 '#'행을 생각합니다. 따라서이 템플릿을 사용자 정의 템플릿과 함께 사용하지 마십시오.
"auto"후보 문자 목록은 다음과 같습니다.
# ; @ ! $ % ^ & | :
이는 커밋 메시지에 ' '가 사용 되었기 때문에 이와 같은 명령 git commit -m '#1 fixed issue'
이 commentChar를 ' ;
'로 자동 전환 한다는 것을 의미 #
합니다.
$ git config --global core.commentchar ';'
git config --global core.commentChar auto
여기에 대한 답변은 훌륭하고 자세하지만 나 같은 git noob의 경우 git config 옵션을 사용자 정의하는 것은 분명하지 않습니다. 다음은 주석 문자 에서 #
로 변경하는 예입니다 ;
.
git config core.commentChar ";"
그게 당신이해야 할 전부입니다.
git commit
를 편집하기 위해 구성된 편집기를 열 때 git이 커밋 메시지에 추가하는 기본 주석이 달린 텍스트를 변경합니다 !
git -c core.commentChar="|" commit --amend
( |
원하는 것으로 바꾸십시오 ).
명령 행 옵션을 사용할 수 있습니다 -m
.
git commit -m "#123 fixed"
대화식 리베이스를 수행하는 경우 커밋 메시지를 아무것도 저장하지 않으면 ( #
처음에는 주석을 작성했기 때문에 무시되었으므로) git은 수행 할 작업을 보여줍니다.
Aborting commit due to empty commit message.
Could not amend commit after successfully picking 5e9159d9ce3a5c3c87a4fb7932fda4e53c7891db... 123 salt hashed passwords
This is most likely due to an empty commit message, or the pre-commit hook
failed. If the pre-commit hook failed, you may need to resolve the issue before
you are able to reword the commit.
You can amend the commit now, with
git commit --amend
Once you are satisfied with your changes, run
git rebase --continue
따라서 메시지를 수정하십시오.
git commit --amend -m "#123 salt hashed passwords"
리베이스를 계속하십시오 :
git rebase --continue
git commit --cleanup=scissors
사용되어야한다. 2014.05.21 에 Git v2.0.0 에 추가되었습니다.
...에서 git commit --help
--cleanup=<mode>
scissors
Same as whitespace, except that everything from (and including) the line
"# ------------------------ >8 ------------------------" is truncated if the message
is to be edited. "#" can be customized with core.commentChar.
commit.cleanup = whitespace
하고 제거하는 것보다 이것이 더 나은 방법을 이해하지 못합니다 # …
. scissors
사용하여 위 구문을 정리 단지 부가 - 모드 git
format-patch
/ mailinfo
/ am
; 메시지를 커밋하기 위해 주석을 추가 할 때 구문을 사용 하지 않습니다…-- >8 --…
.
# ...
하드웨어 해설을 제거 할 필요가 없기 때문에 더 낫다고 생각합니다 . 2. 의견의 두 번째 부분에 대해 잘 모르겠습니다. scissors
모드는 확실히입니다 git commit --help
. 어떤 버전 git
을 사용하고 있습니까? @ SlippD.Thompson
whitespace
모드는 1. 선행 및 후행 빈 줄, 2. 후행 공백, 3. 연속적인 빈 줄 축소를 제공합니다. scissors
1. 선행 및 후행 빈 줄, 2. 후행 공백, 3. 연속 된 빈 줄 축소, 4. 선에서 (및 포함) 모든 것을 제거합니다 # -…- >8 -…-
. 그러나 가위 선 ( # -…- >8 -…-
)은 git-format-patch
/ mailinfo
/를 사용할 때만 삽입됩니다 am
. 따라서 일반적인 git-commit
/ merge
/ rebase
/ cherry-pick
워크 플로의 경우 scissors
스트리핑 모드는 whitespace
모드 보다 이점이 없습니다 . v2.11.0
git commit --cleanup=scissors
않습니다가 앞에 추가 # ------------------------ >8 ------------------------
전과 라인 git status
정보를. `# ------------------------> 8 ------------------- ----- # 위의 선을 만지지 마십시오. # 아래의 모든 것이 제거됩니다. 초기 지점 마스터 # 번호에 #이 변경이 커밋 할 # # 커밋 : # 새 파일을 : .gitignore를`
# ------------------------ >8 ------------------------
사용할 때 _ "... 당신이 할 수처럼 보이는"상태 TXT 전에 scissors
; 그러나, 가위 선 삽입 후# Conflicts: …
텍스트를. 에 commit.status = false
설정 .gitconfig
했으므로 상태 텍스트가 표시되지 않고 충돌 텍스트 만 표시되었습니다. 나는 정정 받았다. 공감으로 변경.
티켓 번호에 다른 접두사를 사용하십시오. 또는 "버그 # 42"와 같이 티켓 번호 앞에 단어를 추가하십시오. 또는 단일 공백 문자를 줄 앞에 추가하십시오. 해당 공백을 제거하려면 커밋 후크를 추가하십시오.
나는 개인적으로 후크에 의해 수행되는 이러한 종류의 커밋 메시지 조작을 원하지 않을 것이다. 왜냐하면 원하지 않을 때 트리거 될 때 매우 자극적 일 수 있기 때문이다. 가장 쉬운 해결책은 아마도 문제를 다시 생각하는 것입니다.
#xxx
에서 커밋 메시지의 어느 곳에서나 발생하는 것과 같은 문제가 문제와 연결됩니다. 커밋이 시작될 필요는 없습니다. 어쩌면 이것은 지난 5 년 동안 바뀌었던 것입니까?
내 커밋은 모두 시작 #issueNumber
하므로이 상용구를 내 vim .git/hooks/commit-msg
:
NAME=$(git branch | grep '*' | sed 's/* //')
echo "$NAME"' '$(cat "$1") > "$1"
이제 분기 #15
가 있고 커밋 메시지를 작성 한다고 가정 해 봅시다 add new awesome feature
. 이 방법을 사용하면 최종 커밋 메시지가됩니다 #15 add new awesome feature
.