GitHub에서 커밋을 제거하려면 어떻게해야합니까?


Answers

git push -f origin HEAD^:master

푸시를 "취소"해야합니다.

Question

나는 실수로 GitHub에 커밋을 밀어 넣었다.

이 커밋을 제거 할 수 있습니까?

GitHub 저장소를 되돌리기를 원합니다.




  1. git log 를 사용하여 되돌리려는 커밋을 찾으십시오.

  2. git push origin +7f6d03:master 가 7f6d03이 잘못 푸시 된 커밋 전에 커밋 인 동안. + force push 위한 것이 었습니다.

그리고 그게 다야.

Here 당신의 문제를 쉽고 간단하게 해결할 수있는 아주 좋은 가이드가 있습니다!




삭제 후에 커밋 변경 사항을 유지하려는 경우

제거 할 커밋이 마지막 커밋 된 커밋 인 경우이 솔루션이 작동합니다.

1 - 로그에서 돌아가고 싶은 커밋 참조를 복사하십시오 :

git log

2 - 커밋 참조로 자식 재설정 :

 git reset <commit_ref>

3 - 원격 커밋 후에 잘못된 커밋의 로컬 변경 사항을 숨기거나 저장합니다.

 git stash

4 - 변경 사항을 원격 저장소 (-f 또는 --force)로 푸시합니다.

git push -f

5 - 저장된 변경 사항을 로컬 저장소로 되돌립니다.

git stash apply

7 - 변경 사항에 untracked / new 파일이있는 경우 커밋하기 전에 git에 추가해야합니다.

git add .

6 - 필요한 추가 변경 사항을 추가 한 다음 필요한 파일을 커밋합니다 (또는 각 파일 이름을 나타내는 대신 점 '.'을 사용하여 로컬 저장소의 모든 파일을 커밋합니다.

git commit -m "<new_commit_message>" <file1> <file2> ...

또는

git commit -m "<new_commit_message>" .



대화 형 리베이스를 제거하려면,

git rebase -i HEAD~4

4 represents total number of commits to display count your commit and 그에 맞게 변경합니다.

목록에서 원하는 커밋을 삭제하십시오 ...

Ctrl + X (우분투) 또는 : wq (centos)로 변경 사항을 저장하십시오 .

두 번째 방법, 되돌릴 수,

git revert 29f4a2 #your commit ID

이것은 특정 커밋을 되돌릴 것이다.




분기 및 병합 구조를 보존하려면 rebase를 수행 할 때 --preserve-merges 옵션을 사용하는 것이 중요합니다.

git rebase --preserve-merges -i HEAD^^



원하는 방식대로 파일을 추가 / 제거하십시오.

git rm classdir
git add sourcedir

그런 다음 커밋을 수정하십시오.

git commit --amend

이전의 잘못된 커밋은 새 인덱스 상태를 반영하도록 편집됩니다. 즉, 처음에는 실수를하지 않은 것처럼 보입니다.

아직 푸시하지 않은 경우에만이 작업을 수행해야합니다. 푸시했다면 정상적으로 수정해야합니다.




Github에서 브랜치의 헤드가 될 커밋의 ref 스펙을 찾아 다음 명령을 사용하십시오 :

git push origin +[ref]:[branchName]

예를 들어 7f6d03과 같이 변경하려는 분기의 이름, 예를 들어 마스터 인 경우와 같은 커밋에 대한 참조의 시작 부분을 찾으십시오. 다음을 수행하십시오.

git push origin +7f6d03:master

더하기 문자는 --force 로 해석됩니다. 역사가 다시 작성되기 때문에 필요합니다.

커밋을 --force 할 때마다 지사를 병합하는 다른 사람들의 기록을 잠재적으로 다시 쓸 수 있습니다. 그러나 다른 사람이 지점을 병합하기 전에 문제를 빨리 파악하면 아무런 문제가 없습니다.




완료 한 작업을 유지하면서 가장 최근 커밋을 삭제하십시오.

git reset --soft HEAD~1

가장 최근의 커밋을 삭제하고 수행 한 작업을 삭제합니다.

git reset --hard HEAD~1



1. git reset HEAD^ --hard
2. git push origin -f

나를 위해 일하는이.




터미널에서이 명령을 실행하십시오.

git reset HEAD~n

HEAD ~ 2와 같이 로컬 repo에서 마지막 n 개의 커밋을 제거 할 수 있습니다. 저장소에 force git push를 계속 진행한다.

git push -f origin <branch>

희망이 도움이!