변경될 file에서 이전 과 최신에 어떤 내용이 변경됐는지 살펴보려면, git diff 명령을 사용해야 한다.
test.txt 를 다시한번 수정한다.
git diff test.txt
Commit 한것과, working directory 에 있는 것을 비교한다.
Unstaged 상태인 것들만 보여 준다.
Staging area에 넣었다면 git diff 명령은 아무것도 출력하지 않는다.
git diff --staged test.txt
Commit 한것과, Staging Area에 있는 것을 비교
git diff 는 consol 상 비교를 해서 알아보기 힘들다.
git difftool test.txt
설정된 diff too (diff3) 가 자동으로 호출 되면서 좀더 멋지게 비교 한다.
git commit
commit 명령을 실행하면, 미리 설정한 notepad 가 자동으로 실행된다.
아래 부분에는, git status 로 출력되는 내용이 자동으로 포함되며,
또 자동 생성된 line 들은 # 로 막혀 있다.
top 부분에 추가 메시지 들을 입력하고 , 저장하고 닫으면 commit 이 최종 실행 된다.
이때 아무 message도 입력하지 않으면, commit 이 자동 취소 된다.
[master (root-commit) a0855b8] initial commit test 에서 볼 수 있듯이
master branch에 commit 했으며, 체크썸은 a0855b8 이라는 것을 알려준다.
그리고 수정한 file이 몇개이며, 삭제 됐거나 추가된 라인이 몇 라인인지 알려준다.
Git 은 Staging Area에 속한 스냅샷을 커밋 한다는 것을 기억해야 한다.
Commit 할 때마다 프로젝트의 스냅샷을 기록하기 때문에 나중에 스냅샷끼리 비교 하거나 예전 스냅샷으로 되돌릴 수 있다.
git commit -m "additional message"
이렇게 commit message 를 inline으로 추가 할 수도 있다.
git commit -a
git add 명령을 생략 할 수 있다.
파일 제거하기
Git에서 파일을 제거하려면 git rm 명령으로 tracked 상태의 파일을 삭제한 후에 (정확하게는 Staging Area에서 삭제하는 것) 커밋해야한다. 이 명령은 Working directory에 있는 파일도 삭제하기 때문에 실제로 파일도 지워진다.
Git 명령을 사용하지 않고 단순히 Working directory 에서 파일을 삭제하고 git status 명령으로 상태를 확인하면 Git은 현재 "Changes not staged for commit" 즉 Unstaged 상태 라고 표시해 준다.
Working directory 에서 test.txt를 삭제한다.
git statusworking directory 에서는 file이 제거 되었지만, staging area 와 git directory 에는 살아 있다.
git rm test.txt [-f]
git status
working directory 와 staging area 에서 file이 제거 되었지만, git directory 에는 살아 있다.
git commit
git status
working directory / staging area / git directory 에서 file이 제거됨
이번에는 git rm 을 사용해서 file을 지워 보자
git rm README
git status
working directory / staging area 에서 file이 제거됨 , git directory에는 살아 있음
git commit
git status
working directory / staging area / git directory 에서 file이 제거됨
git rm --cached README
Staging Area에서만 제거하고 Working directory에 있는 파일은 지우지 않고 남겨 둔다.
다시말해서 HDD에 있는 파일은 그대로 두고 Git만 추적하지 않게 한다.
이는 .gitignore 파일에 추가하는 것을 빼먹었거나 대용량 로그 파일이나 컴파일된 파일인 .a 파일 같은 것을 실수로 추가했을 때 쓴다.
git rm log/\*.log
여러 개의 파일이나 디렉토리를 한꺼번에 삭제할 수 도 있다.
* 앞에 \을 사용한 것을 기억하자. 이 명령은 log/ 디렉토리에 있는 *.log 파일들을 모두 삭제한다.
git rm \*~
이 명령은 ~로 끝나는 파일을 모두 삭제 한다.
'git' 카테고리의 다른 글
Pro Git - 브랜치 워크플로, 브랜치 관리, 브랜치 추적 (0) | 2021.02.22 |
---|---|
Git 필수 명령어 요약 (0) | 2021.02.16 |
[책] Pro Git 2판, review [5] - branch (0) | 2021.02.15 |
[책] Pro Git 2판, review [3] (0) | 2021.02.15 |
[책] Pro Git 2판, review [1] (0) | 2021.02.10 |