728x90
반응형
질문 : Git의 브랜치에서 커밋 삭제
커밋을 삭제하는 방법을 알고 싶습니다.
delete
라는 말은 내가 그 커밋을하지 않은 것 같고, 나중에 푸시를 할 때 변경 사항이 원격 브랜치로 푸시되지 않는다는 것을 의미합니다.
나는 git help를 읽었으며 사용해야 할 명령은 git reset --hard HEAD
입니다. 이 올바른지?
답변
주의 : git reset --hard
작업 디렉토리 변경을 삭제 합니다. 이 명령을 실행하기 전에 유지하려는 로컬 변경 사항 을 숨기십시오.
당신이 그 커밋에 앉아 있다고 가정하면이 명령은 그것을 깨울 것입니다 ...
git reset --hard HEAD~1
HEAD~1
은 헤드 전에 커밋을 의미합니다.
git log
의 출력을보고 백업 할 커밋의 커밋 ID를 찾은 다음 다음을 수행 할 수 있습니다.
git reset --hard <sha1-commit-id>
이미 밀었다면 제거하기 위해 강제 밀기를해야합니다 ...
git push origin HEAD --force
그러나 다른 사람이 가져 왔을 수 있다면 새 분기를 시작하는 것이 좋습니다. 왜냐하면 그들이 당길 때 그것은 단지 그들의 작업에 병합 될 것이고 당신은 그것을 다시 밀어 올릴 것입니다.
git revert
를 사용하여 변경 사항을 취소하는 "미러 이미지"커밋을 만드는 것이 더 나을 수 있습니다. 그러나 두 커밋 모두 로그에 기록됩니다.
참고로 git reset --hard HEAD
는 WORK IN PROGRESS를 없애고 싶다면 좋습니다. 가장 최근 커밋으로 다시 설정하고 작업 트리 및 인덱스의 모든 변경 사항을 지 웁니다.
마지막으로, "삭제"한 커밋을 찾아야하는 경우 저장소를 가비지 수집하지 않는 한 git reflog
출처 : https://stackoverflow.com/questions/1338728/delete-commits-from-a-branch-in-git
728x90
반응형
'개발관련 > Git' 카테고리의 다른 글
git composer.lock을 버전 제어에 적용 해야 할까? (0) | 2021.12.29 |
---|---|
Git에서 원격 분기 추적을 중지 하는 방법 (0) | 2021.12.19 |
.gitignore for Visual Studio 프로젝트 및 솔루션 (0) | 2021.12.16 |
Git에서 유효하지 않은 원격 분기 참조 제거하는 방법 (0) | 2021.12.16 |
하나의 명령으로 git 루트 디렉토리를 얻는 방법 (0) | 2021.12.15 |