git-repository에 Windows 용 Sourcetree를 사용하고 있으며 푸시되지 않은 커밋을 실행 취소하고 싶습니다.
가능합니까? “커밋 되돌리기”를 수행하면 첫 번째 커밋을 되 돌리는 두 번째 커밋이 생성되지만 첫 번째 커밋이 소스 컨트롤에 전혀 표시되지 않도록합니다.
로컬 저장소를 삭제하고 로컬 커밋없이 다시 가져올 수 있지만 다른 방법이 있습니까?
답변
- 재설정하려는 커밋을 마우스 오른쪽 버튼으로 클릭하십시오 (삭제하려는 커밋이 아닙니다!)
- “이 커밋으로 마스터 재설정”을 선택하십시오.
- “소프트”리셋을 선택하십시오.
소프트 리셋은 로컬 변경 사항을 유지합니다.
출처 : 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
. 소프트 리셋 커밋을 사용하면 E
git에서 커밋 이 삭제되지만 로컬 변경 사항은 유지됩니다. git reset documentation 에 더 많은 예제가 있습니다 .
답변
되돌리려는 로그 항목을 선택하면 “이 커밋으로 재설정”을 클릭 할 수 있습니다. 리버스 커밋 변경 사항을 푸시하지 않은 경우에만이 옵션을 사용하십시오. 변경 사항을 잃어 버릴 염려가 있다면 소프트 모드를 사용하여 커밋되지 않은 변경 사항 (방금 변경 한 사항)을 남길 수 있습니다. 혼합을 사용하면 작업 복사본이 재설정되지만 해당 변경 사항은 유지되며, 변경 사항은 완전히 제거됩니다. 스크린 샷은 다음과 같습니다.
답변
커밋을 삭제하려면 대화식 리베이스의 일부로 커밋을 수행 할 수 있습니다. 그러나 조심해서 그렇게하십시오. 따라서 레포를 망칠 필요가 없습니다.
소스 트리에서 :
- 삭제하려는 커밋보다 오래된 커밋을 마우스 오른쪽 단추로 클릭하고 ” 대화식으로 xxxx의 자식 리베이스 … “를 선택하십시오. 클릭 한 것이 “기본”이되고 그 다음에 수행 된 모든 커밋을 변경할 수 있습니다.
- 새 창에서 원하는 커밋을 선택 하고 하단 의 ” 삭제 “버튼을 누르거나 커밋을 마우스 오른쪽 단추로 클릭하고 ” 커밋 삭제 “를 클릭하십시오 .
- ” 확인 “(또는 중단하려면 ” 취소 “)을 클릭하십시오.
Sourcetree의 대화식 리베이스에 대한 자세한 내용은 이 Atlassian 블로그 게시물 을 확인하십시오 .
답변
다른 지사에있는 경우 먼저 삭제하려는 커밋에 대해 “이 커밋을 확인”해야하며, 이전 라이트 커밋을 선택하는 “현재 커밋을이 커밋으로 재설정”만 작동합니다.