게으른 이유로 기본 메시지로 많은 커밋을 푸시했으며 각 커밋에서 변경된 내용을 알지 못하므로 번거로워졌습니다.
이전 커밋 메시지 만 편집하고 가능한 경우 커밋 트리를 유지하려면 어떻게해야합니까?
게으른 이유로 기본 메시지로 많은 커밋을 푸시했으며 각 커밋에서 변경된 내용을 알지 못하므로 번거로워졌습니다.
이전 커밋 메시지 만 편집하고 가능한 경우 커밋 트리를 유지하려면 어떻게해야합니까?
답변:
일련의 커밋의 커밋 메시지를 편집하기 위해
git rebase -i firstsha
firstsha편집하려는 첫 번째 커밋의 부모 커밋에 대한 식별자는 어디에 있습니까 ? (여기서 유효한 참조를 사용할 수 있으므로 git rebase -i HEAD~4마지막 4 개의 커밋이 표시됩니다.)
열리는 편집기에서 수정하려는 커밋에서 모든 "pick"항목을 "reword"로 변경 한 다음 편집기를 닫습니다. 그런 다음 선택한 모든 커밋에 대해 커밋 메시지를 입력하라는 메시지가 표시됩니다.
이 점에 유의 한다 커밋의 해시가 변경되므로, 커밋 트리를 변경합니다. 새 트리를 강제로 푸시하거나 새 브랜치로 푸시해야합니다. 또한 병합을 엉망으로 만들므로 병합 커밋을 편집하지 마십시오.
마지막 커밋 만 빠르게 편집하려면 다음을 실행하십시오.
git commit --amend
(하지만 커밋을 위해 준비된 모든 것을 조심하십시오).
preserve-merges)
당신이 찾고있는 것은입니다 git rebase.
이전 git commit메시지 만 변경 하려면 다음을 사용하면됩니다.
git commit --amend
이전 커밋을 변경 한 다음 편집 내용을 저장하십시오.
그러나 이전 커밋을 변경해야하는 경우을 사용해야 rebase합니다.
git rebase -i HEAD~N
여기서 N은 2 또는 12 또는 6 등으로 돌아 가려는 커밋 수와 같습니다.
커밋이 포함 된 텍스트 편집기가 제공됩니다. 메시지 pick를 변경하려면 옵션을 에서 reword로 변경하십시오.
변경하려는 커밋을 모두 확인하고 옵션을 적절히 변경했으면 편집기를 저장하고 닫습니다. 그런 다음 각 커밋 메시지를 변경하십시오. 만족하면 다음을 실행할 수 있습니다.
git push --force
원하는 변경을했기 때문에 다른 해시 값으로 git history를 유지해야합니다. 확인해야 할 추가 링크는 다음과 같습니다.
7.6 Git 도구-기록 다시 작성
GitHub 도움말-커밋 메시지 변경
StackOverflow-이전 커밋 메시지 변경에 대한 질문
commit --amend경우 커밋 프로세스를 엉망으로 만들지 않는 한 " "일 필요는 없습니다 .
git rebase -i firstsha그 firstsha(가) 내가 메시지를 변경 할 거라고 커밋의 부모가 편집기, 변화를 다음의 해시를 저지하다 pick에 reword, enter다음 새 메시지, 문제 git rebase --continue그리고합니까 git push --force?
git rebase -i HEAD~N은 가고 싶은 커밋의 수인 N과 관련이 있습니다. 메시지를 편집하려는 모든 커밋 옵션을에서 pick로 reword변경하고,이 파일을 저장 하고 , 각 커밋 파일을 변경 한 후 저장하십시오. 일단 당신이 확신하면 당신은 필요합니다 git push --force [Name of git branch you are were working on]. 언제든지 되돌아 가서 다시 수행하거나 단계별로 수행 할 수 있습니다.