'git commit'전에 git commit 메시지 작성
Perforce에서 오는 Git을 배우고 있습니다.
내가 말할 수있는 한 커밋 할 때와 동일한 단계에서 커밋 메시지를 작성해야합니다. 아니면 이전에 메시지를 작성하고 커밋 할 준비가 될 때까지 계속 유지하는 방법을 놓치고 있습니다.
언제든지 변경 목록 설명을 편집하고 준비가되면 체크인 할 수있는 perforce의 워크 플로가 마음에 들었습니다. 개인적으로 저는 코딩 할 때 설명을 여러 번 열고 문서화하거나 지적 할 주목할만한 사항을 생각할 때 좋아합니다.
힘내로 가능합니까?
-t <file>
깃발을 보세요git commit
이를 통해 커밋 메시지의 기반으로 사용할 파일을 지정할 수 있습니다. 편집기는 여전히 호출되지만 최소한 미리 생성 한 커밋 메시지를 사용할 수 있습니다.
또는 작업 방식에 더 적합한 git과 함께 사용할 수있는 다른 워크 플로가 있습니다.
git을 사용하면 메인 라인과는 별개의 브랜치에서 작업 할 수 있으며 자체 메시지로 많은 작은 커밋을 만들 수 있습니다. 이러한 각 커밋은 작업중인 문제를 자체적으로 해결하지 못할 수 있지만 커밋 메시지 파일에서 업데이트했을 수있는 것과 동일한 종류의 메시지로 작업의 중간 상태를 저장하는 방법을 제공합니다.
작업의 합계를 커밋 할 준비가되면 rebase
명령과 squash
이러한 커밋을 함께 사용할 수 있습니다 . 그러면 편집기가 더 작은 커밋에 사용한 모든 개별 메시지로 호출되어 단일 메시지로 함께 편집 할 수 있습니다.
이것은 여기에서 들리는 것보다 훨씬 쉬우 며 IMHO는 좀 더 git-like 접근 방식입니다.
push
다른 사람에 대한 약속 이없는 한 git commit --amend
. 이를 통해 커밋 메시지와 커밋을 수정할 수 있습니다.
나는 이것이 사소한 커밋의 수에 압도되지 않고 '조기 및 자주 커밋'에 정말 도움이된다는 것을 알았습니다.
다음 별칭을 사용할 수 있습니다.
git config --global alias.prepare '!${EDITOR:-vi} $(git rev-parse --git-dir)/.template'
git config --global alias.commitp '!git commit -F $(git rev-parse --git-dir)/.template'
용법:
git prepare
EDITOR=nano git prepare # heeds standard EDITOR variable
git commitp
이것은 커밋 메시지를 .git/.template
.
그러나 그보다는 원자적이고 작은 변경 사항을 자주 커밋하고 필요한 경우 기능 분기를 사용하여 이러한 변경 사항을 그룹화하는 워크 플로를 실제로 사용해야합니다. 와 병합 git merge --no-ff $branch
하면 git log --first-parent
나중에 사용 하여 분기를 무시할 수 있습니다 .
git gui
작업하는 동안 사용 하고 열어 둘 수 있습니다. 수행하려는 버그 수정에 대한 커밋 메시지를 작성한 다음 실제 코드 변경을 수행하고 스테이징하고 커밋합니다.
이 질문에 대한 동기는 코드 를 작성 하기 전에 설명 (커밋 메시지) 을 작성할 수있는 것입니다 (물론 코드가 작성 될 때 수정할 수 있음). (이전에 Perforce 및 Perforce와 유사한 시스템을 사용한 적이 있었지만 실제로 코드를 작성하기 전에 수행 할 작업에 대한 설명을 작성하는 마음의 틀에있는 것이 때때로 도움이된다는 것을 알고 있습니다.)
파일에 메시지를 작성하고에 -t <file>
( --template=<file>
) 또는 -F <file>
( --file=<file>
) 플래그를 사용하는 것 외에 git commit
다른 방법은 다음과 같습니다.
로 빈 커밋을 만듭니다
git commit --allow-empty
. 다른 모든 것과 마찬가지로git commit
메시지를 작성할 수있는 편집기가 표시됩니다. 그것을 작성하고 커밋을 완료하십시오.코드를 변경하십시오.
추가 할 파일을 추가
git add
한 다음git commit --amend
(또는git commit -a --amend
을 사용하여 특정 파일을 선택하지 않으려는 경우git add
). 이렇게하면 이전의 비어 있지 않은 커밋이 더 이상 비어 있지 않으며 원하는 경우 실제로 수행 한 작업과 더 가깝게 일치하도록 메시지를 편집 할 수도 있습니다.
(다른 사람과 함께 작업 git push
하는 경우이 작업을 수행 하는 동안하지 마십시오. 이미 푸시 한 커밋을 수정하지 마십시오!)
물론 커밋을 가능한 한 작고 원자 적으로 유지하라는 조언이 여전히 적용되지만이 방법을 사용하면 코드를 작성하기 전에 메시지를 작성할 수 있습니다. (이 git commit --amend
접근법은 이미 다른 답변에서 제안되었습니다 git commit --allow-empty
.을 사용하여 끝까지 갈 수 있음을 추가로 지적합니다 .)
파일에 작성하십시오. 작업 할 때 최신 상태로 유지하십시오. 실제로 커밋 할 때 최종 버전을 포함합니다.
git에 그래픽 프론트 엔드를 사용하는 경우, 누군가가 구체적으로 도움을 줄 수 있도록 어느 것을 지정해야합니다. 일반적으로 메시지를 붙여 넣기 만하면됩니다.
명령 줄에서 git을 사용하면 임시 파일이있는 편집기가 열리고 메시지를 읽을 수 있습니다 (예 : vim의 : r 파일 이름).
또는 쉘을 사용하여 해당 파일을 -m 매개 변수의 값으로 읽을 수 있습니다.
# bash example, may work elsewhere
git commit -m "$(<filename)"
내가 아는 한 내장되어 있지 않습니다. 당신이 경우 정말 절망적 인 생각을, 당신은 같은 터미널에 쓸 수 COMMIT="Fix for bug #14453"
, COMMIT="$COMMIT and bug #4329"
다음과 같은 커밋 git commit -m "$COMMIT"
.
명령에 --file <path>
인수를 사용하십시오 commit
.
git commit --file <absolute or relative path to file>
그리고 < 파일의 절대 또는 상대 경로 > 를 파일 경로로 바꿉니다.
저장소 디렉토리 위의 디렉토리에있는 상대 파일의 예 :
git commit --file ../commit-message.txt
모든 텍스트 편집기에서 커밋 메시지에 대해 작업하고 열어 둘 수 있습니다. 파일을 저장 한 다음 지속적인 커밋 명령으로 커밋하십시오. 편집기를 열지 않고 텍스트 파일 (.txt)에서 메시지를 가져옵니다.
To add to MatrixFrog's answer, the GitKraken GUI (https://support.gitkraken.com/working-with-commits/commits/) provides similar functionality. It allows to draft the commit message inside the GUI before/while implementing the actual changes.
In addition, it allows to set a template to structure the commit body, e.g.:
changes:
foo
--
new tests:
bar
ReferenceURL : https://stackoverflow.com/questions/3743999/write-git-commit-message-before-git-commit
'programing' 카테고리의 다른 글
JavaScript에서 void 연산자의 요점은 무엇입니까? (0) | 2021.01.15 |
---|---|
C ++의 sizeof는 컴파일 타임이나 런타임에 평가됩니까? (0) | 2021.01.15 |
Java-R 통합? (0) | 2021.01.15 |
Swift에서 고유 한 객체 목록 배열을 만드는 방법 (0) | 2021.01.14 |
목록에서 처음 N 개의 요소를 제거하는 가장 효율적인 방법은 무엇입니까? (0) | 2021.01.14 |