programing

'git commit'전에 git commit 메시지 작성

minecode 2021. 1. 15. 07:57
반응형

'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다른 방법은 다음과 같습니다.

  1. 로 빈 커밋을 만듭니다 git commit --allow-empty. 다른 모든 것과 마찬가지로 git commit메시지를 작성할 수있는 편집기가 표시됩니다. 그것을 작성하고 커밋을 완료하십시오.

  2. 코드를 변경하십시오.

  3. 추가 할 파일을 추가 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

반응형