컴퓨터/git

git (4) - commit 혹은 push된 내용을 되돌려 보자(reset, revert)

달서비 2024. 7. 11. 05:35

git를 이용하여 형상 관리를 하던 중 업체 측에서 소스코드를 날려 push 상태를 이전으로 돌려야 한 적이 있습니다. 이런 상황을 해결하기 위한 방법을 알아보겠습니다. 

git logo

본격적인 설명에 앞서 간단하게 설명하면 다음과 같습니다.

  • reset : 이전 시점의 commit 내역으로 branch를 되돌린다.
  • revert : 과거로 가겠다는 이력을 남기고 commit 내역으로 돌아간다.

 

Reset

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

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