본문 바로가기

언어/Git

[Git] Git 명령어 정리 3 (git status, git add, git commit, git diff, git rm)

https://git-scm.com/book/ko/v2/Git%EC%9D%98-%EA%B8%B0%EC%B4%88-%EC%88%98%EC%A0%95%ED%95%98%EA%B3%A0-%EC%A0%80%EC%9E%A5%EC%86%8C%EC%97%90-%EC%A0%80%EC%9E%A5%ED%95%98%EA%B8%B0

 

Git - 수정하고 저장소에 저장하기

.gitignore`를 사용하는 간단한 방식은 하나의 `.gitignore 파일을 최상위 디렉토리에 하나 두고 모든 하위 디렉토리에까지 적용시키는 방식이다. 물론 .gitignore 파일을 하나만 두는 것이 아니라 하위

git-scm.com

(위 사이트 참고)

 

[파일 수정하고 저장하기]

2022.03.11 - [언어/Git] - [Git] Git 명령어 정리 2 (Git 저장소 생성, git add, git commit, git push 개념)

 

[Git] Git 명령어 정리 2 (Git 저장소 생성, git add, git commit, git push 개념)

https://git-scm.com/book/ko/v2/Git%EC%9D%98-%EA%B8%B0%EC%B4%88-Git-%EC%A0%80%EC%9E%A5%EC%86%8C-%EB%A7%8C%EB%93%A4%EA%B8%B0 Git - Git 저장소 만들기 2.1 Git의 기초 - Git 저장소 만들기 Git을 사용하는..

stat-thon.tistory.com

(github에 repository를 만들어두고, local repository의 파일을 remote repository에 업로드한 상태에서 시작)

 

해당 파일의 코드를 수정하다가 수정된 파일(스냅샷)을 서버에 저장하고 싶으면 git commit으로 커밋한다.

(기존 파일의 수정된 버전 각각을 Snapshot(스냅샷)이라고 한다.)

 

<파일의 분류>

수정된 파일을 commit하기 위해서는, git에서 사용하는 파일 상태의 분류를 알아야 그 과정을 수월하게 이해할 수 있다.

 

먼저, Untracked, Tracked 두가지 상태로 구분한다.

 

Untracked: 파일이 관리대상이 아님을 의미. 스냅샷으로 인식된 적도 없고, Staging Area에도 포함되지 않은 파일이다.

Tracked: 파일이 관리대상임을 의미. 스냅샷으로 인식된 파일이다.

 

Tracked 파일은 세부적으로 Unmodified, Modified, Staged 총 3가지 상태로 구분한다.

 

Unmodified : 파일이 스냅샷으로 인지되지만, 별다른 수정이 이루어진 적이 없는 상태

Modified: 파일의 수정이 이루어져 이를 인식한 상태

Staged: 파일이 수정되고, Staging Area에 올라간 상태

 

그래서 파일은 아래 사진과 같은 라이프사이클을 갖는다.

[출처] https://git-scm.com/book/ko/v2/Git%EC%9D%98-%EA%B8%B0%EC%B4%88-%EC%88%98%EC%A0%95%ED%95%98%EA%B3%A0-%EC%A0%80%EC%9E%A5%EC%86%8C%EC%97%90-%EC%A0%80%EC%9E%A5%ED%95%98%EA%B8%B0

 

<파일의 상태 확인하기: git status>

위에서 설명한 파일의 상태를 알고싶다면, git status 명령을 사용한다.

git status
# 파일의 상태를 알려준다.

git status -s
# 파일의 상태를 짤막하게 보여준다.

이전에 해당 파일을 폴더에서 직접 삭제했는데, 해당 작업이 stage된 적이 없다고 뜬다.

 

stage로 올리기 위해서는 먼저 파일이 수정된 Modified 상태여야한다.

 

그래서 위 삭제 내용을 잘 처리하고 기존 파일에 수정을 진행하고 git status를 다시 돌려보았다.

modified 이지만 staged는 아닌 파일을 확인할 수 있다.
가시성이 더 좋다

 

 

<파일을 staged 상태로 만들기: git add>

git add 파일명
# modified 상태의 파일을 staged 상태로 만들어줌

곧 commit될 녀석이라고 뜬다.
git add로 stage에 추가된 녀석은 초록색 M이라고 뜬다.

 

<파일의 어떤 내용이 변경/수정되었는지 확인 : git diff>

단순히 파일이 변경/수정됐다는 사실을 아는 것은 git status로 가능하지만,

구체적으로 어떤 내용이 변경/수정됐는지 확인하는 것은 git diff로 확인한다.

git diff
# modified 상태이고 staged는 아닌 경우, 변경 내용을 확인 (Staged 상태인 파일은 확인 불가)

git diff --staged
# modified 상태이고, staged인 경우, 변경 내용을 확인

git diff --cached
# git diff --staged와 완전히 동일

변경사항을 확인할 수 있지만 무슨 소린지 모르겠다...

 

<변경사항 커밋하기 : git commit>

git commit
# 수정한 것을 커밋함

git commit -m "메시지"
# 커밋하는 파일에 "메시지" 내용을 입력

git commit -a
# git add 명령을 생략하게 해줌
# 즉, staged 상태로 변환하는 과정을 생략하고 바로 commit

 

<파일 삭제하기 : git rm>

git rm 파일명.확장자명
# Tracked 상태의 파일을 Staging Area에서 삭제 (실제 파일도 삭제됨)
# 이 명령어를 수행하면 deleted라는 목록으로 Staging Area에 올라감
# Staging Area에 올라간 deleted 목록은 git commit 명령어를 입력하는 순간 완전히 삭제됨

git rm 디렉토리/\*.확장자명
# 디렉토리 내에 있는 지정한 확장자명의 파일을 모두 삭제 (*은 임의의 이름을 의미)

git에서 사용하는 파일의 상태를 공부하고, 파일의 수정부터 수정된 내용을 commit하기까지의 과정을 명령어로 살펴보았다.

간단하게 정리하면,

1. 파일을 수정함 -> git status에서 확인하면 modified 상태

2. modified 상태의 파일 -> git add로 staged 상태로 만듦

3. staged 상태의 파일 -> git commit으로 커밋

 

다음 단계는 커밋한 파일을 remote repository로 push하는 법이다.