소스 트리-푸시되지 않은 커밋 실행 취소


208

git-repository에 Windows 용 Sourcetree를 사용하고 있으며 푸시되지 않은 커밋을 실행 취소하고 싶습니다.

가능합니까? "커밋 되돌리기"를 수행하면 첫 번째 커밋을 되 돌리는 두 번째 커밋이 생성되지만 첫 번째 커밋이 소스 컨트롤에 전혀 표시되지 않도록합니다.

로컬 저장소를 삭제하고 로컬 커밋없이 다시 가져올 수 있지만 다른 방법이 있습니까?


스크린 샷이있는 자세한 기사를 작성했습니다. attosol.com/undo-in-git-using-sourcetree
Rahul Soni

답변:


345
  1. 재설정하려는 커밋을 마우스 오른쪽 버튼으로 클릭하십시오 (삭제하려는 커밋이 아닙니다!)
  2. "이 커밋으로 마스터 재설정"을 선택하십시오.
  3. "소프트"리셋을 선택하십시오.

소프트 리셋은 로컬 변경 사항을 유지합니다.

출처 : https://answers.atlassian.com/questions/153791/how-should-i-remove-push-commit-from-sourcetree

편집하다

정보 git revert:이 명령은 다른 커밋을 취소 할 새 커밋을 만듭니다. 예를 들어, 새 파일을 추가하는 커밋이있는 경우 새 파일 git revert을 삭제하는 커밋을 만드는 데 사용할 수 있습니다.

소프트 재설정 적용 정보 : 커밋이 A있고 E( A---B---C---D---E) 마지막 커밋 ( E) 을 삭제 한다고 가정합니다 . 그런 다음 소프트 재설정을 수행하여 커밋 할 수 있습니다 D. 소프트 리셋 커밋을 사용하면 Egit에서 커밋 이 삭제되지만 로컬 변경 사항은 유지됩니다. git reset documentation 에 더 많은 예제가 있습니다 .


34
또는 지점에서 작업하는 경우- "현재 커밋을이 커밋으로 재설정"
Tom Auger

5
UI 설명을 잘 이해하지 못합니다 ... 현재 커밋을이 커밋으로 재설정하면 커밋이 삭제되는 것처럼 들리지 않습니다. 그리고 더 많은 것을 기대하게되었습니다. 작업 복사본을 삭제하는 대신 커밋으로 재설정합니다.
MrFox

@MrFox에 동의합니다. 이 작업을 수행 한 후에도 원하지 않는 커밋이 여전히 트리에 표시됩니다.
Timmmm

@Timmmm : 새로운 설명이 도움이 되나요?
nightlyop

실제로 나는 이미 커밋을 github으로 푸시했다는 것을 깨달았습니다. "역사를 다시 작성"하는 방법을 설명하는 기사를 찾았 지만 가치가있는 것보다 더 문제가있는 것 같습니다!
Timmmm

46

되돌리려는 로그 항목을 선택하면 "이 커밋으로 재설정"을 클릭 할 수 있습니다. 리버스 커밋 변경 사항을 푸시하지 않은 경우에만이 옵션을 사용하십시오. 변경 사항을 잃어 버릴 염려가 있다면 소프트 모드를 사용하여 커밋되지 않은 변경 사항 (방금 변경 한 사항)을 남길 수 있습니다. 혼합을 사용하면 작업 복사본이 재설정되지만 해당 변경 사항은 유지되며, 변경 사항은 완전히 제거됩니다. 스크린 샷은 다음과 같습니다.

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


3
이전 커밋에서 푸시를 사용할 수 있음을 나타내는 아이콘이 계속 표시되면 (방금 닦아 낸 경우) 당기면 Sourcetree가 UI를 업데이트하는 것으로 보입니다.
ChristoKiwi

6

커밋을 삭제하려면 대화식 리베이스의 일부로 커밋을 수행 할 수 있습니다. 그러나 조심해서 그렇게하십시오. 따라서 레포를 망칠 필요가 없습니다.

소스 트리에서 :

  1. 삭제하려는 커밋보다 오래된 커밋을 마우스 오른쪽 단추로 클릭하고 " 대화식으로 xxxx의 자식 리베이스 ... "를 선택하십시오. 클릭 한 것이 "기본"이되고 그 다음에 수행 된 모든 커밋을 변경할 수 있습니다.
  2. 새 창에서 원하는 커밋을 선택 하고 하단 의 " 삭제 "버튼을 누르거나 커밋을 마우스 오른쪽 단추로 클릭하고 " 커밋 삭제 "를 클릭하십시오 .
  3. " 확인 "(또는 중단하려면 " 취소 ")을 클릭하십시오.

Sourcetree의 대화식 리베이스에 대한 자세한 내용은 이 Atlassian 블로그 게시물 을 확인하십시오 .


이것은 내가 찾은 대답이며, 정확히 필요한대로 작동했습니다.
Cliff Burton

0

다른 지사에있는 경우 먼저 삭제하려는 커밋에 대해 "이 커밋을 확인"해야하며, 이전 라이트 커밋을 선택하는 "현재 커밋을이 커밋으로 재설정"만 작동합니다.

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