source

첫 번째 git 커밋 메시지를 어떻게 다시 쓸 수 있습니까?

factcode 2023. 10. 26. 21:52
반응형

첫 번째 git 커밋 메시지를 어떻게 다시 쓸 수 있습니까?

3개의 커밋이 포함된 작동 트리가 있습니다.

➜ ~myproject git:(마스터)git log

commit a99cce8240495de29254b5df8745e41815db5a75
Author: My Name <my@mail.com>
Date:   Thu Aug 16 00:59:05 2012 +0200

    .gitignore edits

commit 5bccda674c7ca51e849741290530a0d48efd69e8
Author: My Name <my@mail.com>
Date:   Mon Aug 13 01:36:39 2012 +0200

    Create .gitignore file

commit 6707a66191c84ec6fbf148f8f1c3e8ac83453ae3
Author: My Name <my@mail.com>
Date:   Mon Aug 13 01:13:05 2012 +0200

    Initial commit (with a misleading message)

이제 나는 나의 첫 번째 커밋의 커밋 메시지를 원합니다 (6707a66)

➜ ~myproject git:(마스터)git rebase -i 6707

(…entering vim)

pick 5bccda6 Create .gitignore file
pick a99cce8 .gitignore edits

# Rebase 6707a66..a99cce8 onto 6707a66
#
# Commands:
#  p, pick = use commit
#  r, reword = use commit, but edit the commit message
#  e, edit = use commit, but stop for amending
#  s, squash = use commit, but meld into previous commit
#  f, fixup = like "squash", but discard this commit's log message
#  x, exec = run command (the rest of the line) using shell
#
# These lines can be re-ordered; they are executed from top to bottom.
#
# If you remove a line here THAT COMMIT WILL BE LOST.
# However, if you remove everything, the rebase will be aborted.
#
# Note that empty commits are commented out

이 경우 수정하고 싶습니다 (reword) 문제의 커밋 메시지:

초기 커밋(잘못된 메시지 포함)

…적절한 것으로.

당연히 첫 번째 커밋에는 부모 커밋이 없기 때문에 위의 시도는 성공하지 못했습니다.(그리고 당신이rebase, 원하는 커밋에 앞서 다음으로 오래된 커밋을 참조해야 합니다.reword, 맞습니까?)

그래서 제 질문의 요점은, 당신은 다른 방법으로 이것을 성취할 수 있습니까?

git rebase -i --root

( 가리키다root특정 커밋을 지적하는 대신)

이렇게 하면 첫 번째 커밋도 포함되고 그냥reword다른 약속처럼 말입니다.

--root옵션이 Git에 도입되었습니다.v1.7.12(2012).그 전에는 그 전에 사용할 수 있는 유일한 방법이filter-branch아니면--amend, 일반적으로 더 어려운 일이죠

참고: 이와 유사한 질문과 답변도 참조하십시오.

pcreux의 요지는 첫 번째 커밋을 다시 표기할 수 있는 좋은 방법입니다.

# You can't use rebase -i here since it takes the parent commit as argument.
# You can do the following though:
git checkout FIRST_COMMIT_SHA && git commit --amend && git rebase HEAD master

언제든지 사용할 수 있습니다.git filter-branch --msg-filter:

git filter-branch --msg-filter \
  'test $GIT_COMMIT = '$(git rev-list --reverse master |head -n1)' &&
echo "Nice message" || cat' master

언급URL : https://stackoverflow.com/questions/11987914/how-do-i-reword-the-very-first-git-commit-message

반응형