programing

Git: 병합 커밋의 메시지를 편집/수정하는 방법은 무엇입니까?

muds 2023. 6. 30. 22:37
반응형

Git: 병합 커밋의 메시지를 편집/수정하는 방법은 무엇입니까?

병합 커밋의 메시지를 편집하거나 다시 쓰는 방법은 무엇입니까?

git commit --amend만약 그것이 마지막으로 한 약속이라면 효과가 있습니다.HEAD), 하지만 만약 그것이 그 전에 온다면요.HEAD?

git rebase -i HEAD~5병합 커밋이 나열되지 않습니다.

--preserve-merges옵또션 (는동의어또),어동()),-p로 이동 »git rebase -i명령을 실행하면 git는 기록을 선형화하는 대신 기본 재배치할 때 병합을 보존하려고 시도하며 병합 커밋도 수정할 수 있습니다.

git rebase -i -p HEAD~5

메모.--perserve-merges을 위해 더 이상 사용되지 않습니다.--rebase-mergesgit v2.22 기준(https://www.infoq.com/news/2019/07/git-2-22-rebase-merges/) ).

git1.7.9.6(및 git1.7.10+)을 시작하면 병합에 세부 정보를 추가할 수 있도록 항상 편집기가 트리거됩니다.

"git merge $tag주석이 달린 태그를 병합하려면 대화형 편집 세션 중에 항상 편집기를 엽니다. v1.7.10 시리즈에서는 이전 스크립트가 이 동작을 거부하도록 환경 변수 GIT_MERGE_AUTOEDIT을 도입했지만 유지 관리 트랙에서도 이를 지원해야 합니다.

또한 이전 스크립트가 이 동작을 거부하는 데 도움이 되는 환경 변수도 소개합니다.

"예상 Git 1.7.10"을 참조하십시오.

최근 Git 메일링 리스트에 대한 토론에서 Linus는 이것이 Git 역사 초기에 우리가 했던 디자인 실수 중 하나라는 것을 인정했습니다(그리고 저는 동의했습니다).
1에서 모두)이결과를 하기 위한 설명할 수 있는 합니다. 단말기에 연결된 표준 입력과 표준 출력 모두)이 병합 결과를 기록하기 위한 커밋을 만들기 전에 편집기를 열어 사용자에게 병합을 설명할 기회를 줍니다.충돌된 병합을 해결한 후 사용자가 실행하는 git commit 명령과 마찬가지로 이미 실행됩니다.

라이너스가 말했습니다.

하지만 저는 그것이 실제로 어떻게 작동하는지에 대해 크게 신경 쓰지 않습니다. 저의 주요 문제는 git이 나쁜 병합 메시지를 갖는 것을 너무 쉽게 만든다는 것입니다.
저는 그것의 일부가 훨씬 더 단순한 바보라고 생각합니다. 우리는 기본적으로 "git merge"를 위해 편집자를 해고하지도 않지만 ""git commit
위해 합니다.
그것은 설계상의 실수였고, 만약 여러분이 실제로 병합에 노트를 추가하고 싶다면, 여러분은 추가적인 작업을 해야 한다는 것을 의미합니다. 그래서 사람들은 그렇지 않습니다.


2) Git 2.17(2018년 2분기)"이었습니다git rebase -p병합 커밋의 손상된 로그 메시지입니다. 이제 수정되었습니다.

그레고리 헤레로(''')의 커밋된 5144d(2018년 2월 8일)를 참조하십시오.
제안자: 베가르드 노섬()vegard쿠엔틴 카사스노바스().casasnovas
(주니오 C 하마노에 의해 합병 -- -- 커밋 8b49408, 2018년 2월 27일)

rebase -p호출 수시커메시정지밋된못잘수를 호출할 때 합니다.git merge.

커밋 dd6fb00 이후("rebase -p▁when▁▁quoting수▁fix를 부를 때 인용문을 수정git merge2018년, 2이 되는 는 '2018년 1월 1일, Git 2.16.0-rc2'를실행하는 됩니다.git rev-parse --sq-quote'.

새 줄이 다음에 대해 유지되도록 이 하위 셸 주위에 큰따옴표가 필요합니다.git merge지휘권

이 패치 이전에 다음 병합 메시지가 표시됩니다.

"Merge mybranch into mynewbranch

Awesome commit."

다음이 됩니다.

"Merge mybranch into mynewbranch Awesome commit."

▁a▁after시.rebase -p.


Git 2.23 (2019년 2분기)를 사용하면,merge -c "" git rebase --rebase-merges동안의 "" 명령은 새로운 병합을 만들고 기존 병합을 대체할 필요가 없는 경우에도 사용자에게 로그 메시지를 편집할 수 있는 기회를 제공해야 하지만(즉, 대신 빠르게 전달) 그렇지 않았습니다.
그것은 수정되었습니다.

필립 우드()phillipwood의 커밋 6df8df0(2019년 5월 2일)을 참조하십시오.
(주니오 C 하마노에 의해 합병 -- -- commit c510261, 2019년 6월 13일)

원시 명령만 사용하는 또 다른 멋진 답변 -- by knittl https://stackoverflow.com/a/7599522/94687 :

git checkout <sha of merge>
git commit --amend # edit message
git rebase HEAD previous_branch

또는 더 나은(더 정확한) 최종 rebase 명령:

git rebase <sha of merge> previous_branch --onto HEAD

BTW의 까지 알 수 없는 수 .git rebase -p -i HEAD^^^^(내 경우 마지막으로 병합할 때 4개의 마지막 커밋 목록만 생성되는 명령은 약 50초가 걸렸습니다!)

버전의 경우에는 현재 Git 전의 (2020+)경우, 냥그만 하면 .git rebase -i -r <parent> 다음 합니다.merge -C와 함께merge -c이렇게 하면 기본 재배치 중에 병합 커밋의 메시지가 편집기에 열리며, 여기서 변경할 수 있습니다(힌트에 대한 VonC 덕분).

2021년 이후 업데이트,-p사용되지 않습니다.

사용하다--rebase-merges대신.

을 합니다.--rebase-merges( (또는단형축)형-r) 플래그:

git rebase -i -r HEAD~5

그런 다음 변경 커밋 옆의 '선택' 텍스트를 '편집' 또는 '단어 바꾸기'로 변경합니다.

pick <commit-hash-to-leave> <message>
edit <commit-hash-to-change> <message>

--rebase-merges( (또는단형축)형-r플래그가 사용되지 않는 항목을 대체합니다.
--preserve-merges( (또는단형축)형-p)

설명서: https://git-scm.com/docs/git-rebase#Documentation/git-rebase.txt--r

git merge --edit
비대화형 병합의 경우에도 주석을 제공할 수 있습니다.

git merge --edit --no-ffGit 흐름을 따라 개발 분기에 기본 재배치하고 빠른 전진 없이 해당 분기에 병합하는 경우 유용할 수 있습니다.

git rebase -i HEAD~5명령어가 편집기를 팝업합니다.지정된 커밋(이 경우에는 5개)이 나열됩니다. 번째 에는 첫번열은다포다니함합을음이 들어 있습니다.pick모든 약속마다교체하기만 하면 됩니다.pick와 함께reword해당 편집기에서 편집기를 저장+닫습니다. 다음 한 모든 에 대해 .pickreword커밋 메시지를 편집할 수 있습니다.

언급URL : https://stackoverflow.com/questions/7279196/git-how-to-edit-reword-a-merge-commits-message

반응형