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