SourceTree Windows에서 커밋 메시지 편집 (이미 원격으로 푸시)


202

명령 줄을 건드리지 않고 SourceTree에서 잘못된 커밋 메시지를 어떻게 편집합니까?

추가 세부 사항:

  • 이것은 최신 커밋이 아닙니다.
  • 모든 것이 이미 Bitbucket으로 푸시되었습니다.
  • 이것은 개인 저장소이며 유일한 공동 작업자입니다.
  • 언제든지 커밋 할 수 있으므로 이전 커밋을 잃어 버리지 않아도됩니다.
  • 그러나 코드 수정을 잃고 싶지 않습니다.

결과:

  • 귀하의 의견과 답변에 따르면 현재로서는 불가능한 것으로 보이므로 새 저장소를 만들고 완전히 시작하겠습니다. 도와 주셔서 감사합니다!

답변:


425

다음은 Windows 용 1.5.2.0 용 SourceTree를 사용하여 이전 커밋 ( 가장 최근 커밋이 아님) 의 커밋 메시지를 편집하는 단계입니다 .

1 단계

편집하려는 커밋 직전 에 커밋을 선택하십시오 . 예를 들어, 메시지 "FOOBAR!"로 커밋을 편집하려면 그런 다음 커밋을 선택해야합니다.

편집하려는 커밋 전에 커밋을 선택하십시오.

2 단계

선택한 커밋을 마우스 오른쪽 버튼으로 클릭하고 다음을 클릭하십시오 Rebase children...interactively.

"대화식으로 자녀를 기저 거리기"선택.

3 단계

편집하려는 커밋을 선택한 다음 Edit Message맨 아래 를 클릭하십시오 . 이 경우 "FOOBAR!"메시지와 함께 커밋을 선택합니다.

편집하려는 커밋을 선택하십시오.

4 단계

커밋 메시지를 편집 한 다음 확인을 누릅니다 OK. 이 예에서는 "SHAZBOT! SKADOOSH!"를 추가했습니다.

커밋 메시지 편집

5 단계

대화식 리베이스 창으로 돌아 가면를 클릭 OK하여 리베이스를 완료하십시오.

확인을 클릭하여 완료하십시오.

6 단계

이 시점에서 이미 푸시 한 커밋을 다시 기반으로 했으므로 새로운 변경 사항을 강제로 푸시해야합니다. 그러나 Windows 용 SourceTree의 현재 1.5.2.0 버전에서는 GUI를 강제로 푸시 할 수 없으므로 명령 행에서 Git을 사용해야합니다.

TerminalGUI에서 클릭 하면 터미널이 열립니다.

터미널 클릭

7 단계

다음 명령을 사용하여 터미널 강제 푸시에서

git push origin <branch> -f

여기서 <branch>푸시하려는 브랜치의 이름이며 푸시 -f를 강제합니다. 강제 푸시 원격 리포지토리에 대한 커밋을 덮어 쓰지만 다른 사람들과 리포지토리를 공유하지 않는다고 말했기 때문에 괜찮습니다.

그게 다야! 끝났습니다!


4
단계는 기본적으로 Mac 버전에서도 동일합니다.
race_carr

2
주의 : 커밋 메시지를 #로 시작하려면 # 작동하지 않습니다 .git은 메시지를 주석으로 취급하고 커밋 메시지가 비어 있다고 알려줍니다!
Daniel Edholm Ignat 7:29에

1
"그게 다야! 당신은 끝났어!"-토끼가 잡히는 것처럼 내가 무엇을 알지 못하는 것처럼 쉽습니다. 중요하고 자주 보는 상황을 위해 프로그램 기능을 만드는 대신. 서두르면서 오타가 발생하면 헤드를 재설정하고 새 커밋을 다시 만들어야합니다.
Rantiev

67
웃긴-왜 그들이 간단한 "커밋 메시지 편집"옵션을 만들지 않는지 궁금합니다.
Jonathan Aquino

1
이제 GUI를 통해 강제 푸시를 사용할 수 있습니다. 그렇지 않으면 PERFECT :-)
LaTisha

43

버전 1.9.6.1. 푸쉬되지 않은 커밋.

  1. 이전에 커밋 된 설명을 클릭하십시오
  2. 커밋 아이콘을 클릭하십시오.
  3. 새 커밋 메시지를 입력 하고 커밋 옵션 드롭 다운에서 " 최신 커밋 수정 "을 선택하십시오.
  4. 메시지를 커밋하십시오.

13

주석 메시지 에 영어 이외의 문자 가 포함 된 경우 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새로 고 칩니다 .


12

최신 정보

참고 :이 답변은 원래 Windows 용 이전 버전의 SourceTree와 관련하여 작성되었으며 최신 버전이 아닙니다.

현재 버전의 Windows 용 SourceTree, 1.5.2.0에 대한 새로운 답변참조하십시오 . 역사적인 목적 으로이 답변을 남겨두고 있습니다.

원래 답변

? - 내가 명령 줄 도구가없는 윈도우 I에있어도 내가 하나를 사용하는 방법을 알고처럼 :( 그것을 모든 자식의 기능을 포함하지 않습니다 GUI 정리가 얻을 수있는 유일한 방법입니다 원래 포스터

Git GUI와 관련하여 Git의 모든 기능을 다루지는 않습니다 . 그들은 가까이 오지도 않습니다 . Git에서 잘못된 커밋 메시지를 어떻게 편집합니까?의 답변 중 하나를 확인하는 것이 좋습니다. Git은 명령 줄에서 여러 솔루션이있을만큼 유연합니다.

SourceTree는 실제로 msysgit bash 쉘과 함께 제공되거나 표준 Windows 명령 쉘을 사용할 수 있습니다. 어느 쪽이든 터미널 단추를 클릭하여 SourceTree 양식을 열 수 있습니다.

여기에 이미지 설명을 입력하십시오

여기에서 SourceTree가 사용하는 터미널 (bash 또는 Windows)을 설정하십시오.

여기에 이미지 설명을 입력하십시오

SourceTree에서 문제를 해결하는 한 가지 방법

즉, SourceTree에서 할 수있는 한 가지 방법이 있습니다. 주석에서 "잘못된 커밋으로 되돌리기"를 신경 쓰지 않는다고 언급했기 때문에 (실제로 Git의 다른 작업 인 재설정을 의미한다고 가정합니다) 다음 단계는 다음과 같습니다.

  1. 마우스 오른쪽 버튼으로 클릭하고을 선택한 Reset current branch to this commit다음 드롭 다운에서 하드 리셋 옵션을 선택하여 SourceTree에서 잘못된 커밋으로 하드 리셋을 수행하십시오.여기에 이미지 설명을 입력하십시오
  2. 커밋 버튼을 클릭 한 다음
  3. 하단의 "최신 커밋 수정"이라는 확인란을 클릭하십시오. 여기에 이미지 설명을 입력하십시오
  4. 메시지를 변경 한 다음 커밋을 다시 클릭하십시오. 짜잔!

이 의견에 관하여 :

이미 Bitbucket으로 푸시되어 가능하지 않은 경우 새 리포지토리를 만들고 다시 시작하는 것이 좋습니다.

이것은 당신이 레포에서 일하는 유일한 사람이라는 것을 의미합니까? 공동 작업자에게 문제를 일으키지 않고 (커밋을 수정하는 등) 리포지토리를 변경하는 것이 쉽지 않기 때문에 이것은 중요합니다. 그러나 당신이 repo에서 일하는 유일한 사람이라고 가정하면 다음으로 할 일은 변경된 기록을 리모컨으로 푸시하는 것입니다.

그러나 잘못된 커밋으로 강제 재설정했기 때문에 강제로 밀어 넣으면 이전에 수행 된 모든 작업이 손실됩니다. 괜찮다면 SourceTree에서 옵션을 찾을 수 없기 때문에 명령 줄에서 다음 명령을 사용하여 강제 푸시를 수행해야 할 수도 있습니다.

git push remote-repo head -f

또한 BitBucket을 사용하면 저장소에 강제로 푸시 할 수 있다고 가정합니다.

어쨌든 명령 줄에서 Git을 사용하는 방법을 실제로 배워야합니다 .Git에 더 능숙합니다. #ProTip, 터미널 속성에서 msysgit을 사용하고 빠른 편집 모드를 켜서 두 번 클릭하여 텍스트 줄을 강조 표시하고 마우스 오른쪽 단추를 클릭하여 복사 한 다음 마우스 오른쪽 단추를 다시 클릭하여 붙여 넣을 수 있습니다. 꽤 빠릅니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.