Lined Notebook

[Git] diff와 revert 사용하기

by HeshAlgo

Git

1. diff 명령어

- Show changes between commits, commit and working tree, etc

- working tree와 Staging Area간의 비교, commit간의 비교 등 변경 사항에 대한 내역을 비교할 수 있는 명령어

 

1) commit간의 비교

- diff-test.txt라는 텍스트 파일을 만들어 5번의 커밋을 나눴습니다.해당 내역을 확인해보는 방법은 git log 통해 commit 내역을 확인해볼 수 있습니다.

이제 git diif 명령어를 통해 커밋내역을 비교해보겠습니다.

먼저 비교해볼 대상은 diff를 이용해 'E문자 추가' commit이 'D문자 추가' commit을 기준으로 무엇이 바뀌었는지 확인해보겠습니다.

# git diff [기준 commit hash code] [비교대상 commit hash code]

# git diff 40aecfcd3d135cd833a7c53f9209d074fb280493 6d0a5be147095138c95ef7c6a808e48a522f0956

보시면 A B C D 라는 문자열만 있던 Commit에 E라는 문자열이 추가되었다는 내역을 확인해볼 수 있습니다.

추가된 경우 초록색을 나타내며 삭제된 경우에는 빨간색이 표시 됩니다.

 

2) 원격 저장소와 로컬 저장소간의 비교

로컬에 저장된 브랜치와 원격 저장소에 저장된 브랜치간의 비교도 가능합니다.

# git diff [brach 이름] [orgin/branch 이름]

 

3) 이전 commit과 전전 commit의 비교

매번 commit의 hashcode를 찾기 번거롭다면 HEAD명령어를 이용할 수도 있습니다.

HEAD는 현재 branch의 가장 최근 commit을 나타내고, HEAD^는 현재 brach의 가장 최근 commit의 이전 commit을 나타냅니다.

만약 최근 commit의 전전 commit을 보고 싶다면 HEAD^^를 사용하면 됩니다.

아래 명령어를 이용하면 위의 스크린샷 사진과 동일한 결과를 확인해볼 수 있습니다.

# git diff HEAD^ HEAD

 

2. git revert

- git revert도 reset과 동일하게 commit을 되돌리는 명령어

# git revert [되돌리고 싶은 commit Hashcode]

Q) reset과 revert의 차이?

두 명령어 모두 과거 시점으로 되돌려준다는 의미로 결과적으로 동일한 결과를 나타내지만 차이점이 있다면 되돌리는 commit까지의 이력이 사라지느냐의 여부에 있습니다.

 

git reset은 되돌린 버전 이후의 버전들이 모두 사라지게 되지만, git revert는 되돌린 버전 이후의 버전들은 모두 유지되고, revert되었다는 사실을 담은 commit만 새로 추가되게 됩니다.

 

revert는 reset보다 더 안전하게 commit을 되돌리는 방법이고,
reset은 revert보다 commit log를 깔끔하게 유지해주며 commit을 되돌리는 방법이라고 할 수 있습니다.

'Git' 카테고리의 다른 글

[Git] Reset 명령어 사용하기  (0) 2022.08.29
[Git] Git fork를 이용한 git 기초  (0) 2022.08.27
[Git] Git fork를 이용한 Branch  (0) 2021.02.04

블로그의 정보

꾸준히 공부하는 개발 노트

HeshAlgo

활동하기