Git에서 이전 커밋 메시지 변경
여기에 설명 된 것처럼 오래된 커밋 메시지를 편집하려고했습니다 .
내가 실행하려고하면 문제는, 지금이다 rebase -i HEAD~5
는 말한다 interactive rebase already started
.
그래서 시도해보십시오 : git rebase --continue
하지만이 오류가 발생했습니다 :
error: Ref refs/heads/master is at 7c1645b447a8ea86ee143dd08400710c419b945b but expected c7577b53d05c91026b9906b6d29c1cf44117d6ba
fatal: Cannot lock the ref 'refs/heads/master'.
어떤 아이디어?
그것은 말한다 :
편집기를 저장하고 종료하면 해당 목록의 마지막 커밋으로 되감기 고 다음 메시지와 함께 명령 행에 표시됩니다.
$ git rebase -i HEAD~3
Stopped at 7482e0d... updated the gemspec to hopefully work better
You can amend the commit now, with
그것은 의미하지 않습니다 :
다시 입력
git rebase -i HEAD~3
하려고 하지 입력 git rebase -i HEAD~3
편집기를 종료 할 때, 그리고 그것을 잘 작동합니다.
(그렇지 않으면 특정 상황에서 git rebase -i --abort
모든 것을 재설정하고 다시 시도 할 수 있도록해야 할 수도 있습니다)
Dave Vogt 가 댓글에서 언급 했듯이 첫 번째 커밋을 수정 한 후git rebase --continue
rebasing 프로세스의 다음 작업으로 이동합니다 .
또한 Gregg Lind 는 그의 대답 에서 다음 reword
명령을git rebase
언급합니다 .
"pick"명령을 "edit"명령으로 바꾸면
git rebase
해당 커밋을 적용한 후 중지하도록 지시하여 파일 및 / 또는 커밋 메시지를 편집하고 커밋을 수정 한 후 리베이스를 계속할 수 있습니다.커밋에 대한 커밋 메시지를 편집하려면
pick
reword
Git1.6.6 (2010 년 1 월) 이후로 " " 명령을 " " 명령으로 바꾸십시오 .쉘에 제어를 반환하지 않고 커밋 메시지를 편집 할 수만 있다는
edit
점을 제외하고는 대화식 리베이스 동안 ' ' 와 동일한 작업 을 수행합니다 . 이것은 매우 유용합니다.
현재 커밋 메시지를 정리하려면 다음을 수행해야합니다.
$ git rebase -i next
그런 다음 모든 커밋을 'edit'로 설정하십시오. 그런 다음 각각에 :
# Change the message in your editor.
$ git commit --amend
$ git rebase --continue
'사용
reword
'대신하는 것은 'edit
'당신은 건너 뛸 수git-commit
와git-rebase
통화를 .
FWIW, git rebase interactive는 이제 "reword"옵션을 가지고있어 훨씬 덜 고통 스럽습니다!
Gregg Lind가 제안한 것처럼 reword 를 사용 하여 커밋 메시지 만 변경하라는 메시지를 표시 할 수 있습니다 (커밋은 그대로 유지).
git rebase -i HEAD~n
여기 n
에 마지막 n 커밋 목록이 있습니다.
예를 들어를 사용하는 경우 git rebase -i HEAD~4
다음과 같은 내용이 표시 될 수 있습니다.
pick e459d80 Do xyz
pick 0459045 Do something
pick 90fdeab Do something else
pick facecaf Do abc
이제 메시지를 편집하려는 커밋에 대해 pick 을 reword 로 바꾸십시오 .
pick e459d80 Do xyz
reword 0459045 Do something
reword 90fdeab Do something else
pick facecaf Do abc
파일을 저장 한 후 편집기를 종료하면 다음으로 reword 로 표시된 커밋에 대한 메시지를 메시지 당 하나의 파일 로 편집하라는 메시지가 표시 됩니다. 당신이 교체 할 때이 메시지를 커밋 바로 편집에 훨씬 간단 했 참고 pick
로 reword
하지만, 그 일을하는 것은 아무런 효과가 없습니다.
커밋 메시지 변경 에 대한 GitHub의 페이지에서 자세히 알아보십시오 .
다른 옵션을 제공하고 싶었습니다. 제 경우에는 보통 개인 브랜치에서 일하고 나서 마스터로 합병하며, 현지에서하는 개인 커밋은 그렇게 중요하지 않습니다.
Jira에서 적절한 티켓 번호를 확인하지만 대소 문자를 구분하는 git hook으로 인해 코드를 푸시하지 못했습니다. 또한 커밋은 오래 전에 수행되었으며 리베이스에서 다시 커밋하는 커밋 수를 세고 싶지 않았습니다.
그래서 내가 한 일은 최신 마스터에서 새 분기를 만들고 문제 분기의 모든 커밋을 새 분기의 단일 커밋으로 스쿼시하는 것입니다. 저에게는 더 쉬웠으며 나중에 참조 할 수 있도록하는 것이 좋습니다.
최신 마스터에서 :
git checkout -b new-branch
그때
git checkout new-branch
git merge --squash problem-branch
git commit -m "new message"
다음은 가능한 모든 경우를 다루는 멋진 요지입니다. https://gist.github.com/nepsilon/156387acf9e1e72d48fa35c4fabef0b4
개요 :
git rebase -i HEAD~X
# X is the number of commits to go back
# Move to the line of your commit, change pick into edit,
# then change your commit message:
git commit --amend
# Finish the rebase with:
git rebase --continue
참고URL : https://stackoverflow.com/questions/1884474/change-old-commit-message-on-git
'IT story' 카테고리의 다른 글
maxRequestLength 또는 maxAllowedContentLength 중 우선 순위는 무엇입니까? (0) | 2020.07.09 |
---|---|
url / src / href 속성에 두 개의 슬래시 (0) | 2020.07.09 |
목록을 전송하는 가장 효율적인 방법 (0) | 2020.07.09 |
PyLint“가져올 수 없습니다”오류-PYTHONPATH를 설정하는 방법? (0) | 2020.07.09 |
VS2010 웹 배포 패키지를 사용하여 추가 파일을 어떻게 포함합니까? (0) | 2020.07.09 |