이 포스트는 유튜브 채널 '드림코딩 by 엘리'의 '깃, 깃허브 제대로 배우기 (기본 마스터편, 실무에서 꿀리지 말자)' 를 정리한 글임을 밝힙니다. (https://www.youtube.com/watch?v=Z9dvM7qgN9s&t=30s)
- git status 명령을 통해 어떤 파일이 수정되었는지, staging area에 위치하는지 파악할 수 있음
- 그러나 정확히 파일의 어느 부분이 수정되었는지 파악할 수 없음
- 파일의 변경 사항을 출력하는 명령어
- 따로 옵션이 없으면 working directory에 존재하는 file들의 변경 사항만 출력함
git diff
- 다음과 같은 결과가 출력됨
diff --git a/a.txt b/a.txt # a/a.txt : a.txt의 이전 버전을 의미 ※ 이전 버전 : staging area, git repository에 위치한 file을 의미 # b/a.txt : b.txt의 최신버전을 의미 ※ 최신 버전 : working directory에서 마지막으로 다룬 file을 의미 index 0fe633e..e61ef7b 100644 # git이 file을 read하는데 사용되는 index --- a/a.txt +++ b/a.txt @@ -1 +1 @@ # -1 : 이전 버전 file의 첫번 째 줄에서 변경이 일어났음 -ll # -ll : 이전 버전 file의 첫번 째 줄의 내용이 삭제됨(-) +aa # +aa : 최신 버전 file의 첫번 째 줄의 내용이 추가됨(+)
- staging area에 위치한 file의 변경사항을 확인 하려면 --staged 옵션을 부여함
git diff --staged
- 다음과 같은 결과가 출력됨
diff --git a/a.txt b/a.txt new file mode 100644 index 0000000..0fe633e --- /dev/null # 처음으로 staging area에 올라왔으므로, 이전 버전이 존재하지 않음 (null) +++ b/a.txt @@ -0,0 +1 @@ +ll 중략
- working directory에서 발생한 수정이 git add 명령를 통해 staging area로 반영되지 않았음
- --cached옵션은 --staged 옵션과 같은 기능을 수행함
- --help 명령을 통해 추가적인 옵션 확인 가능
- git diff <commit_id>..[<commit_id>]를 통해, 특정 commit에 포함된 file들의 diff를 확인할 수 있음
- commit_id들은 '..'을 통해 구분
git diff e424165e426fde40549b2a9317fb8c5064a824f2..c2676fd2f68fc687de194db97215e2e7daeca742
- git config --global -e 명령을 통해 text editor로 .gitconfig 파일 open
(이전 내용에서 text editor를 vscode로 설정)- 다음과 같은 내용을 추가함
[diff] tool = vscode # diff 명령을 수행하는 tool을 'vscode'라는 keyword로 설정 [difftool "vscode"] cmd = code --wait --diff $LOCAL $REMOTE #'vscode'라는 keyword를 'vscode를 이용해 $local과 $remote를 diff 하라'는 cmd 명령으로 설정
- terminal에서 git diff 대신, git difftool를 입력하면 vscode를 통해 확인 가능함
(--staged 옵션 사용 가능)