답변:
다음은 Windows 용 1.5.2.0 용 SourceTree를 사용하여 이전 커밋 ( 가장 최근 커밋이 아님) 의 커밋 메시지를 편집하는 단계입니다 .
편집하려는 커밋 직전 에 커밋을 선택하십시오 . 예를 들어, 메시지 "FOOBAR!"로 커밋을 편집하려면 그런 다음 커밋을 선택해야합니다.
선택한 커밋을 마우스 오른쪽 버튼으로 클릭하고 다음을 클릭하십시오 Rebase children...interactively
.
편집하려는 커밋을 선택한 다음 Edit Message
맨 아래 를 클릭하십시오 . 이 경우 "FOOBAR!"메시지와 함께 커밋을 선택합니다.
커밋 메시지를 편집 한 다음 확인을 누릅니다 OK
. 이 예에서는 "SHAZBOT! SKADOOSH!"를 추가했습니다.
대화식 리베이스 창으로 돌아 가면를 클릭 OK
하여 리베이스를 완료하십시오.
이 시점에서 이미 푸시 한 커밋을 다시 기반으로 했으므로 새로운 변경 사항을 강제로 푸시해야합니다. 그러나 Windows 용 SourceTree의 현재 1.5.2.0 버전에서는 GUI를 강제로 푸시 할 수 없으므로 명령 행에서 Git을 사용해야합니다.
Terminal
GUI에서 클릭 하면 터미널이 열립니다.
다음 명령을 사용하여 터미널 강제 푸시에서
git push origin <branch> -f
여기서 <branch>
푸시하려는 브랜치의 이름이며 푸시 -f
를 강제합니다. 강제 푸시 는 원격 리포지토리에 대한 커밋을 덮어 쓰지만 다른 사람들과 리포지토리를 공유하지 않는다고 말했기 때문에 괜찮습니다.
그게 다야! 끝났습니다!
주석 메시지 에 영어 이외의 문자 가 포함 된 경우 user456814에서 제공 한 방법을 사용하여 해당 문자가 물음표로 바뀝니다. (소스 트리 Ver2.5.5.0에서 테스트)
따라서 다음 방법을 사용해야합니다.
주의 : 다른 구성원이 커밋을 가져온 경우 아래 변경으로 인해 혼란이 발생할 수 있습니다.
1 단계 : 소스 트리 기본 창에서 리포지토리 탭을 찾은 다음 " 터미널 "버튼을 클릭 하여 git 명령 콘솔을 엽니 다.
2 단계 :
[상황 A] : 대상 커밋이 최신입니다.
1) git 명령 콘솔에서 입력
git commit --amend -m "new comment message"
2) 대상 커밋이 원격으로 푸시 된 경우 강제로 다시 푸시해야합니다. git 명령 콘솔에서 입력
git push --force
[상황 B] : 대상 커밋이 최신이 아닙니다.
1) git 명령 콘솔에서 입력
git rebase -i HEAD~n
최신 n 커밋 을 스쿼시하는 것 입니다. 예를 들어, 마지막 메시지 이전에 메시지를 편집하려면 n 은 2입니다.이 명령은 vi 창을 열고 각 줄의 첫 단어는 " pick " 이며 해당 줄 의 "pick"을 " reword "로 변경합니다. 편집하고 싶습니다. 그런 다음 입력 :wq
하여 해당 vi 창을 저장하고 종료하십시오. 이제 새 vi 창이 열리고이 창에서 새 메시지를 입력하십시오. 또한 :wq
저장하고 종료 하는 데 사용하십시오 .
2) 대상 커밋이 원격으로 푸시 된 경우 강제로 다시 푸시해야합니다. git 명령 콘솔에서 입력
git push --force
마지막으로 : 소스 트리 기본 창에서을 눌러 F5
새로 고 칩니다 .
참고 :이 답변은 원래 Windows 용 이전 버전의 SourceTree와 관련하여 작성되었으며 최신 버전이 아닙니다.
현재 버전의 Windows 용 SourceTree, 1.5.2.0에 대한 새로운 답변 을 참조하십시오 . 역사적인 목적 으로이 답변을 남겨두고 있습니다.
? - 내가 명령 줄 도구가없는 윈도우 I에있어도 내가 하나를 사용하는 방법을 알고처럼 :( 그것을 모든 자식의 기능을 포함하지 않습니다 GUI 정리가 얻을 수있는 유일한 방법입니다 원래 포스터
Git GUI와 관련하여 Git의 모든 기능을 다루지는 않습니다 . 그들은 가까이 오지도 않습니다 . Git에서 잘못된 커밋 메시지를 어떻게 편집합니까?의 답변 중 하나를 확인하는 것이 좋습니다. Git은 명령 줄에서 여러 솔루션이있을만큼 유연합니다.
SourceTree는 실제로 msysgit bash 쉘과 함께 제공되거나 표준 Windows 명령 쉘을 사용할 수 있습니다. 어느 쪽이든 터미널 단추를 클릭하여 SourceTree 양식을 열 수 있습니다.
여기에서 SourceTree가 사용하는 터미널 (bash 또는 Windows)을 설정하십시오.
즉, SourceTree에서 할 수있는 한 가지 방법이 있습니다. 주석에서 "잘못된 커밋으로 되돌리기"를 신경 쓰지 않는다고 언급했기 때문에 (실제로 Git의 다른 작업 인 재설정을 의미한다고 가정합니다) 다음 단계는 다음과 같습니다.
Reset current branch to this commit
다음 드롭 다운에서 하드 리셋 옵션을 선택하여 SourceTree에서 잘못된 커밋으로 하드 리셋을 수행하십시오.이 의견에 관하여 :
이미 Bitbucket으로 푸시되어 가능하지 않은 경우 새 리포지토리를 만들고 다시 시작하는 것이 좋습니다.
이것은 당신이 레포에서 일하는 유일한 사람이라는 것을 의미합니까? 공동 작업자에게 문제를 일으키지 않고 (커밋을 수정하는 등) 리포지토리를 변경하는 것이 쉽지 않기 때문에 이것은 중요합니다. 그러나 당신이 repo에서 일하는 유일한 사람이라고 가정하면 다음으로 할 일은 변경된 기록을 리모컨으로 푸시하는 것입니다.
그러나 잘못된 커밋으로 강제 재설정했기 때문에 강제로 밀어 넣으면 이전에 수행 된 모든 작업이 손실됩니다. 괜찮다면 SourceTree에서 옵션을 찾을 수 없기 때문에 명령 줄에서 다음 명령을 사용하여 강제 푸시를 수행해야 할 수도 있습니다.
git push remote-repo head -f
또한 BitBucket을 사용하면 저장소에 강제로 푸시 할 수 있다고 가정합니다.
어쨌든 명령 줄에서 Git을 사용하는 방법을 실제로 배워야합니다 .Git에 더 능숙합니다. #ProTip, 터미널 속성에서 msysgit을 사용하고 빠른 편집 모드를 켜서 두 번 클릭하여 텍스트 줄을 강조 표시하고 마우스 오른쪽 단추를 클릭하여 복사 한 다음 마우스 오른쪽 단추를 다시 클릭하여 붙여 넣을 수 있습니다. 꽤 빠릅니다.