git를 이용하여 형상 관리를 하던 중 업체 측에서 소스코드를 날려 push 상태를 이전으로 돌려야 한 적이 있습니다. 이런 상황을 해결하기 위한 방법을 알아보겠습니다.
본격적인 설명에 앞서 간단하게 설명하면 다음과 같습니다.
- reset : 이전 시점의 commit 내역으로 branch를 되돌린다.
- revert : 과거로 가겠다는 이력을 남기고 commit 내역으로 돌아간다.
Reset
#git reset
#특정 commit 상태로 HEAD이동한다. commit 하기 전 상태로 돌린다.
git reset --soft [commit hash]
#특정 commit 상태로 HEAD와 인덱스를 이동한다. 파일은 수정한 상태로 남는다
git reset --mixed [commit hash]
#특정 coomit 상태로 이전 상태로 되돌립니다.
git reset --hard [commit hash]
#3번 이전에 commit한 값으로 리셋
git reset HEAD~3
#최근 commit한 값으로 리셋
git reset HEAD^
git reset은 이전 시점의 커밋 내역으로 브랜치를 되돌립니다. 옵션에 따라 HEAD, 인덱스, 작업 트리가 영향을 받습니다.
git reset의 옵션은 다음과 같습니다.
- --soft : HEAD만 이동시키고 이전 상태의 파일은 유지됩니다. 최근 커밋을 하기 전 상태로 되돌립니다.
- --mixed (기본값) : HEAD와 인덱스를 이동시킵니다. 작업 트리는 변경하지 않으나. 파일은 수정된 상태로 남습니다.
- --hard : HEAD, 인덱스, 작업 트리 모두 이동합니다. 말 그대로 이전 상태로 되돌립니다. (복구 불가능)
Revert
git revert [commit hash] #특정 커밋의 변경 내용을 되돌리는 새로운 커밋을 생성합니다.
git revert는 특정 커밋의 변경 내용을 되돌리는 새로운 커밋을 생성합니다. 이미 원격 저장소에 push 된 변경 사항을 되돌릴 수 있으며, 협업 환경에서 이력들을 살리면서 안전하게 변경 사항을 되돌릴 수 있습니다
마지막으로
commit hash라고 적은 부분은 git log에서 나오는 ee78fe58...말합니다.
Reference
https://brownbears.tistory.com/477
[Git] commit 또는 push 된 내용 되돌리기 (reset, revert)
commit 또는 push했던 내용이 잘못되어서 이전 상태로 되돌려야 하는 경우는 종종 발생합니다. 로컬에 commit만 하는 경우엔 쉽게 reset 기능으로 처리할 수 있지만 원격 저장소까지 push가 된 경우엔 re
brownbears.tistory.com
'컴퓨터 > git' 카테고리의 다른 글
git (5) - 임시로 이력을 저장하자 (stash) (0) | 2024.08.05 |
---|---|
git (3) - branch와 merge에 대하여 알아보자 (1) | 2023.12.30 |
git (2) - fatal: 정방향이 불가능하므로, 중지합니다. (0) | 2023.10.26 |
git (1) - 깃허브에 데이터를 업로드, 다운로드하자 (초보자 ver) (0) | 2022.12.12 |