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

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

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

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



답변

  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 에 더 많은 예제가 있습니다 .


답변

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

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


답변

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

소스 트리에서 :

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

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


답변

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


답변