혼자 적어보는 노트

[Git] Git의 공간 다루기 / commit / add / diff / stash 본문

기타

[Git] Git의 공간 다루기 / commit / add / diff / stash

jinist 2022. 2. 3. 07:45

git의 4가지 공간

 

1. Working directory (작업공간)

- 실제 프로젝트를 하고 있는 공간
- untracked : git에서 추적하고 있지 않은 파일, add된 적 없는 파일. ignore된 파일 포함.
- tracked : git에서 추적하고 있는 파일중 수정된 파일. add된 적 있는 파일.

 

2. Staging area

- add 할 경우 working directory에서 staging area로 이동.

- 즉, 커밋하기 전 add로 파일들을 올려놓은 공간

 

3. Repository (저장소)

- Local Repository : 로컬저장소. 내 pc에 있는 파일이 저장되는 저장소

- Remote Repository : 원격저장소. 서버에서 관리하고 공유되는 저장소


4. Stash

- 임시적으로 작업사항을 저장해 놓은 공간

 


 

status

파일이 추가되거나 변경,삭제 된 내역을 볼 수 있다.

git status

 

commit 하기 전 staging area에 파일 올리기

 

파일 한 개 staging area에 올리기

git add 파일명

모든 파일 staging area에 올리기

 

git add .

 

같은 파일의 수정된 부분을 나누어서 add하기

아래의 명령어로 수정된 부분을 확인하면서 선택하여 add를 할 수 있다.

git add -p

옵션 설명보기 : ? / y or n 로 add할 부분과 하지 않을 부분을 나눌 수 있다.

 

 

git에서 파일을 지우거나 파일명을 변경했을 때 working directory에 남아있는데
아래의 명령어들로 파일 삭제/파일명 수정 시 바로 add까지 시켜줄 수 있다.

 

파일을 삭제함과 동시에 staging area로 이동(add)

git rm [파일명]

 

파일의 이름을 변경함과 동시에 staging area로 이동(add)

git mv [파일명] [변경할파일명]

 

add한 파일 되돌리기

아래의 명령어로 Staging area에 올린 파일을 다시 Working directory로 옮길 수 있다.

git restore --staged [파일명]

 

수정한 파일을 이전 커밋 상태로 되돌리기

커밋을 추가하고 파일을 수정한 다음 해당 파일의 코드를 다시 이전 커밋상태로 돌리고 싶을 때 사용 가능하다.

git restore [파일명]

 

특정 파일을 특정 커밋의 상태로 되돌리기

git restore --source=[커밋해시] [파일명]

 


 

commit

git commit -m "메세지"

따옴표 안에 커밋 메세지를 적어줄 수 있다.

 

add와 commit 한 번에 하기

git commit -am "메세지"

새로 추가된 파일 없이 수정된 파일만 있을 경우 add없이 커밋을 한 번에 할 수 있다.

 

변경사항을 확인하며 commit 하기

git commit -v

 

📄 최근 변경한 커밋 메세지 수정 & 최근 변경한 커밋에 변경사항 추가 

* 최근 커밋한 메세지에 오타 발견 및 바로 수정할 때

* 최근 커밋에 추가 사항이 생겼는데 따로 커밋하기 애매할 때

git commit --amend
git commit --amend -m "[수정할 메세지]"

 

commit 히스토리 조회하기

git log

커밋 내역, 커밋이름, 메세지, 커밋 날짜 등을 시간순으로 확인할 수 있다.

 

commit 1673c46740d80abadf5b7b49251cf541ab07fc47
Author: jinist94 <325days@naver.com>
Date:   Thu Feb 3 05:41:48 2022 +0900

    commit3

commit 001706ae9fddff0408b69f4964527edba55a070a
Author: jinist94 <325days@naver.com>
Date:   Thu Feb 3 05:40:07 2022 +0900

    commit2

commit e9d7dba8f722c3ffcc56de09453143ded1ca4c59
Author: jinist94 <325days@naver.com>
Date:   Thu Feb 3 05:39:24 2022 +0900

    commit1

커밋이 많아지면 스크롤이 길어지는데 줄여서 확인 하는 방법도 있다.

 

한 줄로 log 확인 하기

git log --oneline // log를 한줄로 표시
git log --oneline -n 3 // log의 최근 3개 표시

 


 

파일 변경 내역 확인하기 / diff

 

commit된 파일상태와 현재 상태 비교

git diff

 

commit된 파일상태와 stage의 (add된) 파일 상태 비교

git diff --staged

 

commit간의 상태 비교하기

git diff [비교할커밋해시1] [비교할커밋해시2]

 

이전 commit과 현재 커밋 비교

git diff HEAD~

 

branch간의 커밋 비교

git diff [비교할 브랜치명2] [비교할 브랜치명2]

 

 


 

stash

stash를 이용하면 커밋되지 않은 변경사항을 임시 공간에 보냈다가 다시 꺼내서 쓸 수 있다.

 

git stash

git에서 추적하고 있지 않은 untracked 파일은 add를 해 주어야 stash에 보낼 수 있다.

 

메세지와 함께 stash

git stash -m '[메시지]'

 

stash 리스트 보기

$ git stash list
stash@{0}: On main: Modify User // 메시지를 적었을 경우
stash@{1}: WIP on main: 0be77c7 Update friend.txt // 메시지를 생략한 경우

위로 쌓이면서 저장되는 방식이다.

 

 

📂 stash된 내역 불러오기

 

stash list에서 내역을 삭제하지 않고 적용

git stash apply [스태시 넘버]

//예시
git stash apply stash@{0}

스태시넘버 생략 시 최근 스태시가 적용된다.

 

 

스태시 적용과 동시에 list에 있는 해당 내역 삭제

git stash pop [스태시 넘버]

//예시
git stash pop stash@{0}

스태시넘버 생략 시 최근 스태시가 적용된다.

 

 

브랜치에 stash + pop 적용

*새로운 브랜치에 stash를 적용하여 충돌이 예상되는 부분을 수정 후 merge하는 방법도 있다.

git stash branch [브랜치명]

 

stash 삭제

git stash drop [스태시 넘버]

스태시 넘버 생략 시 최근 스태시가 삭제된다.

 

 

stash list 전체 삭제

git stash clear
Comments