Tools/Git

Git Reset 과 Revert

칼쵸쵸 2024. 4. 13. 00:16

Git에서 reset과 revert 명령은 둘 다 과거의 커밋으로 작업을 되돌리는 데 사용되지만, 사용 방식과 영향이 크게 다릅니다.

1. Git reset

reset 명령어는 현재 브랜치의 특정 상태로 되돌립니다. 이 과정에서 이후의 커밋 기록이 변경되거나 삭제될 수 있으므로 주의해서 사용해야 합니다.

  • 용도: 주로 로컬에서 작업을 잘못 했을 때 이전 상태로 되돌리기 위해 사용합니다.
  • 방식: reset 명령어는 --soft, --mixed, --hard 세 가지 옵션을 제공합니다.

 

Reset 예시

- 최초 커밋후( text.txt에 값이 1이 있음 ) commit A( text.txt값을 A변경 후에 test2.txt 파일을 add ) 한 상황

1. soft

인덱스(Staged Area)를 유지하면서 HEAD만 이동합니다. 변경된 파일들은 Staged 상태로 남습니다.

commit은 삭제되고 변경사항은 남아 있음

2. mixed (기본값)

인덱스를 초기화하지만, 작업 디렉토리는 유지합니다. 변경사항을 다시 Staging 해야 합니다.

이미 add되어 있는 파일의 경우 soft와 동일하게 동작하지만 새로 add한 파일의 경우 git add를 다시 해줘야 합니다.

 

기존에 add된 파일의 변경사항은 남아 있으나 text2.txt처럼 추가된 파일의 변경은 삭제됨

 

 

3. hard

 인덱스와 작업 디렉토리 모두를 초기화하고, 모든 변경사항을 삭제합니다.

현재의 내용도 모두 reset한 commit 의 상태로 변경되고 변경사항 및 추가된 내용이 모두 삭제됩니다.

test.txt 는 1로 변했고 test2.txt는 삭제됨

2. Git revert

revert 명령어는 선택한 커밋의 효과를 취소하는 새로운 커밋을 만듭니다. 이렇게 하면 이전 커밋을 유지하면서 변경 사항만 되돌릴 수 있습니다.

  • 용도: 공유된 브랜치의 커밋을 안전하게 되돌리고자 할 때 사용합니다. 특히, 다른 사람들도 같은 커밋을 기반으로 작업할 경우 유용합니다.
  • 방식: revert는 실제로 작업 내용을 되돌리지만, 커밋 이력 자체는 남아 있으므로, 이력의 일관성을 유지할 수 있습니다.

최초 commit 상태로 commit이 추가됨

'Tools > Git' 카테고리의 다른 글

Git Cherry-pick, Rebase  (0) 2024.04.14