푸시되지 않은 깃 커밋 제거
나는 했습니다.git commit
하지만 아직 저장소로 밀어넣지는 않았습니다.그래서 내가 할 때git status
저는 '# 당신의 지점이 '마스터'보다 1 커밋 앞서 있다는 것을 알게 되었습니다.
최고의 약속을 취소하고 싶다면 다음과 같이 하면 됩니다.
git reset --hard eb27bf26dd18c5a34e0e82b929e0d74cfcaab316
내가 그럴 때면git log
이해합니다.
commit eb27bf26dd18c5a34e0e82b929e0d74cfcaab316날짜: 9월 29일 화요일 11:21:41 2009-0700 commit db0c078d5286b837532ff5e276dcf91885df2296날짜: 9월 22일 화요일 10:31:37 2009-0700
변경사항을 원격으로 푸시하지 않은 경우
git reset HEAD~1
다음 시간까지 작업 복사본이 깨끗한지 확인합니다.git status
.
그렇지 않으면 변경 사항을 원격으로 푸시했습니다.
git revert HEAD
이 명령은 로컬 커밋/변경 사항을 되돌리거나 제거한 다음 푸시할 수 있습니다.
사실, 당신이 사용할 때.git reset
당신은 당신이 재설정하고 있는 커밋을 참조해야 합니다. 그래서 당신은 그것을 원할 것입니다.db0c078
아마도 범했을 겁니다.
더 쉬운 버전은git reset --hard HEAD^
현재 헤드 앞에 있는 이전 커밋으로 재설정할 경우 커밋 ID를 복사할 필요가 없습니다.
할 때는 조심하세요.git reset --hard
커밋되지 않은 변경 사항을 잃을 수 있습니다.확인해 보는 것이 좋을 것입니다.git status
작업 복사본이 깨끗한지 확인하거나 변경 내용을 삭제할 수 있습니다.
또한 HEAD 대신 사용할 수 있습니다.origin/master
@bdonlan이 코멘트에서 제안한 바와 같이 참조:git reset --hard origin/master
그 중 하나가 당신의 필요에 부합할 것이라고 믿습니다.
1 - 커밋을 취소하고 모든 파일을 스테이징 상태로 유지:git reset --soft HEAD~
2 - 모든 파일의 커밋 및 스테이징 해제:git reset HEAD~
3 - 커밋을 취소하고 모든 변경 사항을 완전히 제거합니다.git reset --hard HEAD~
git reset --hard origin/main
다른 지점에서 작동합니다.
git reset --hard origin/master
git reset --hard origin/staging
원래 있던 곳으로 재설정하는 것입니다.
@bdonlan이 댓글에 올린 글입니다.댓글을 안 읽는 사람들을 위해 이 답변을 추가했습니다.
이 질문에는 두 가지 분기가 있습니다(커밋을 롤백한다고 해서 로컬 변경 내용이 모두 손실되는 것은 아닙니다).
커밋된 파일의 최신 커밋 및 변경 내용을 취소하려면 다음을 수행합니다.
git reset --hard HEAD~1
최신 커밋을 되돌리되 로컬 변경 사항은 디스크에 유지하려면 다음을 수행합니다.
git reset --soft HEAD~1
이(나중의 명령)는 당신이 그랬다면 있었을 상태로 당신을 데려갈 것입니다.git add
.
그 후에 파일의 스테이징을 해제하려면 다음을 수행합니다.
git reset
이제 추가한 다음 다시 커밋하기 전에 더 많은 변경을 수행할 수 있습니다.
콘솔에 다음을 입력합니다.
$ git reset HEAD~
이 명령은 원격 HEAD 이전의 모든 로컬 커밋을 삭제합니다.
푸시하기 전에 마지막 커밋 제거
git reset --soft HEAD~1
1
개의 사용을 커밋을 합니다.2
등등기타*
저는 아래와 같은 상황을 경험했고 훨씬 더 쉬웠습니다.을 으로써.commit-Id
원하는 특정 커밋에 도달할 수 있습니다.
git reset --hard {commit-id}
마지막 커밋을 제거하려면 다음을 통과해야 합니다.commit-Id
포인터를 이동해야 하는 위치:
git reset --hard db0c078d5286b837532ff5e276dcf91885df2296
제가 하는 일은 다음과 같습니다.
먼저 지점을 확인하십시오(나의 경우).master
분기):
git checkout master
그런 다음 원격 HEAD^로 재설정하고(모든 로컬 변경 사항이 제거됨) 강제로 치료하고 당깁니다.
git reset HEAD^ --hard && git clean -df && git pull
한 가지 방법은 로컬 지점이 여러 번 커밋하여 원격 지점보다 앞서 있고 모든 커밋을 해제해야 하는 경우 로컬 지점을 삭제하고 서버에서 해당 지점을 체크아웃하는 것입니다.
저도 같은 문제를 겪었고 결국 다음과 같은 일을 하게 되었습니다.
git rebase -i HEAD~N
(N은 Git에 표시되는 커밋 수입니다.)
텍스트 편집기에 메시지가 표시된 다음 연결된 줄을 삭제하여 원하는 커밋을 제거할 수 있습니다.
언급URL : https://stackoverflow.com/questions/1611215/remove-a-git-commit-which-has-not-been-pushed
'itsource' 카테고리의 다른 글
두 개체를 비교하여 차이점을 찾습니다. (0) | 2023.05.07 |
---|---|
Angular-cli 프로젝트에 부트스트랩을 추가하는 방법 (0) | 2023.05.07 |
mongoose의 많은 부분을 업데이트합니다. (0) | 2023.05.07 |
라이브러리 추가/J이클립스 안드로이드 프로젝트의 AR (0) | 2023.05.07 |
회사 이름은 어디에 설정합니까? (0) | 2023.05.07 |