itsource

푸시되지 않은 깃 커밋 제거

mycopycode 2023. 5. 7. 11:25
반응형

푸시되지 않은 깃 커밋 제거

나는 했습니다.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

반응형