[git] Git에서 로컬 커밋을 버립니다.

나쁜 체리 따기 때문에 로컬 Git 리포지토리는 현재 상태보다 좋은 5 가지 커밋보다 앞서 있습니다. 이 커밋을 모두 없애고 다시 시작하고 싶습니다.

분명히 내 작업 디렉토리를 삭제하고 다시 복제하면 GitHub에서 모든 것을 다시 다운로드하는 것이 과도하게 보이고 시간을 잘 사용하지 않는 것 같습니다.

어쩌면 git revert내가 필요한 것 일지도 모르지만 코드 자체를 올바른 상태로 되돌 리더라도 원점 (또는 6 개)보다 10 개의 커밋 을 끝내기를 원하지 않습니다 . 지난 30 분 동안 일어난 적이없는 척하고 싶습니다.

이를 수행하는 간단한 명령이 있습니까? 명백한 유스 케이스처럼 보이지만 그 예를 찾지 못했습니다.


이 질문은 구체적으로 commit 에 관한 것이 아니라 다음 에 관한 것입니다.

  • 추적되지 않은 파일
  • 비 단계적 변경
  • 단계적이지만 커밋되지 않은 변경


답변

초과 커밋이 나에게만 보이는 git reset --hard origin/<branch_name>
경우, 원점으로 돌아갈 수 있습니다
. 그러면 리포지토리의 상태가 이전 커밋으로 재설정되고 모든 로컬 변경 내용이 삭제됩니다.

를 수행 git revert하면 커밋을 수행하여 모든 사람의 기록을 깔끔하게 유지하는 방식으로 오래된 커밋을 제거 합니다.


답변

로컬 마스터 브랜치를 삭제하고 다음과 같이 다시 만드십시오.

git branch -D master
git checkout origin/master -b master


답변

시험:

git reset --hard <the sha1 hash>

당신이 원하는 곳으로 머리를 재설정합니다. gitk를 사용하여 원하는 커밋을 확인하십시오. gitk 내에서도 재설정 할 수 있습니다.


답변

가장 최근의 커밋을 삭제하십시오.

git reset --hard HEAD~1

수행 한 작업을 중단하지 않고 가장 최근의 커밋을 삭제하십시오.

git reset --soft HEAD~1


답변

당신이 사용하는 경우 골드 피처 SourceTree의 응용 프로그램을 사용하면 상황에 맞는 메뉴에서 재설정 옵션을 사용할 수 있습니다.

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


답변

브랜치 시도에서 :

git reset --hard origin/<branch_name>

git log“또는 ” git status“를 사용하여 반전 (로컬 커밋이없는 상태로)을 검증하십시오 .


답변

git reset --hard @{u}* 커밋을 포함하여 현재 분기의 모든 로컬 변경 사항을 삭제합니다. 나는 당신이 브랜치로 복귀하거나 플레이하기 위해 커밋 할 것을 찾을 필요가 없다는 것을 고려할 때 아무도 이것을 게시하지 않은 것에 놀랐습니다.

* 즉, @{upstream}일반적 으로에서 현재 분기로 재설정 origin/<branchname>하지만 항상 그런 것은 아닙니다.