이전까진 Git 사용법에 대해서 add commit push 밖에 몰랐습니다. 하지만 개인, 팀 프로젝트를 하며, Git에 대한 중요성을 느끼기 시작했습니다. 지금 공부해놓지 않으면, 계속해서 미룰 거 같아서 Git에 대해 공부한 내용을 하나씩 포스팅하려고 합니다. 

 

1. add 

working directory에서 staging area로 파일을 올리기 위해서는 add를 진행해줘야 합니다. 기본적인 add 명령어를 알아보겠습니다. 

 

1-1. git add .

 

해당 명령어는 변경된 사항을 모두 staging 단계로 넘겨줍니다. 

git add .

 

1-2. git add <파일 이름>

 

위의 명령어가 변경 사항을 모두 넘기는 것이었다면, 아래의 명령어는 원하는 파일만 staging 단계로 넘길 수 있습니다. 

git add application.yml

 

1-3. git add -p 

 

파일이 untracked 파일이 아니고, 변경 사항이 있을 때 사용하면, 파일의 수정한 부분들을 staging 단계로 넘길 것인지 일일히 선택이 가능합니다. 아래의 사진의 경우 -c 밑에 -f가 추가 됐는데 해당 부분을 staging 단계로 넘길 것인지 확인하는 것입니다. 따라서 해당 기능을 사용하면, 한 파일에서도 staging 단계로 넘길 것 안 넘길 것을 결정할 수 있습니다.  y는 넘기기 n은 넘기지 않기 (나머지 생략)

 

2. Commit 

 

add가 staging 단계로 넘기는 것이었다면, commit은 staging 단계에 있는 것들을 local 저장소 단계로 넘기는 것입니다. 

 

2-1. git commit

 

위의 명령어를 입력한다면 아래의 그림처럼 윗 부분에 commit message를 입력할 수 있도록 나옵니다. 해당 부분을 입력하고 넘어간다면 local 저장소 단계로 넘어간 것입니다. 

 

2-2. git commit -m "메시지"

 

위에서 진행한 것을 한 번에 묶어서 할 수 있는 것이 git commit -m "메시지" 입니다. 명령어를 입력하면 메시지를 가지고, 바로 local 저장소 단계로 이동하게 됩니다. add와 마찬가지로 -p 옵션을 주면 하나의 파일에서도 하나씩 체크하면서 local 저장소 단계로 넘길 수 있습니다. 

 

2-3. git commit --amend

 

혹여나 commit 메시지를 잘못 입력했을 경우 git commit --amend 명령어를 이용해서 가장 최근의 commit 메시지를 수정할 수 있습니다. 

 

그리고 git commit --amend 를 입력하면 수정할 수 있는 상태가 됩니다. 

 

수정하고 git log라는 명령어를 통해서 정삭적으로 commit 메시지가 수정됐는지 확인합니다. 

 

2-4. git commit -am "메시지"

untraked 파일이 아닌 경우 즉 한 번이라도 local 저장소에 있는 파일인 경우 git commit -am "메시지"를 통해서 add와 commit을 동시에 진행할 수 있습니다.

 

 

3. reset

 

지금까지 했던 commit의 상태로 돌아가는 방법입니다. 

 

3-1. git reset --hard "돌아갈 commit의 고유한 값"

 

git log를 통해서 돌아가고 싶은 commit의 고유한 값을 복사합니다. 그리고 위의 명령어를 입력할 시 해당 commit의 시점으로 모든 것이 돌아갑니다. 따라서 변경 사항들이 사라지고 해당  commit 이후의 commit 들도 사라집니다. 물론 git reflog를 통해서 사라진 commit들도 복구를 할 수 있지만, git log를 통해서는 나오지 않습니다. 

 

3-2. git reset --mixed "돌아갈 commit의 고유한 값"

 

reset의 default 옵션이며, 별다른 옵션을 주지 않을 경우 mixed옵션으로 동작합니다. 동작은 해당 commit에 대해서 변경 부분들을 남아 있지만, 다시 add를 진행해서 staging 단계로 올려줘야 합니다. 

 

3-3. git reset --soft "돌아갈 commit의 고유한 값"

 

변경 사항들이 사라지지 않고, staging 단계에 존재하게 됩니다.

 

 

4. revert

 

git revert "돌아갈 commit의 고유한 값"

 

reset이 과거의 commit으로 돌아가며 모든 commit을 삭제하는 방식이었다면, revert는 새로운 commit을 만듭니다. 그 과정에서 지정한 commit 이후의 commit은 삭제하지 않고, 변경 사항만 삭제합니다. 이때 변경되는 내역에 대해서 새로운 commit을 형성해서 만드는 방식입니다. 즉 과거의 commit 내역이 사라지지 않고, 새로운 commit이 생기게 됩니다.  

 

5. .gitignore

 

Git의 형상 관리에서 제외할 파일들을 명시합니다. 올리면 안되는 개인정보라던지, 민감한 파일 혹은 올리지 않아도 되는 파일들이 있습니다.   

 

.gitignore에 명시하는 패턴에 대해서 알아보겠습니다

 

5-1. 파일 지정

 

application.yml -> 모든 application.yml은 git에서 관리하지 않습니다.

 

*.yml -> 확장자 명이 yml인 파일들을 관리하지 않습니다. 

5-2. 폴더 지정 

 

/application.yml -> 최상위 폴더에만 존재하는 application.yml을 관리하지 않습니다.

 

/**/application.yml -> 어떠한 폴더에 들어있는 application.yml을 관리하지 않습니다.

 

logs -> logs라는 파일의 이름 혹은 폴더와 그 안에 있는 내용을 관리하지 않습니다. 

 

logs/application.yml -> logs 폴더안에 있는 application.yml을 관리하지 않습니다. 

 

 

 

지금까지 add, commit, reset, revert, gitignore에 대해서 간략하게 알아봤습니다. 

 

 

 

'Git' 카테고리의 다른 글

Git branch, 병합(merge, rebase), commit 수정  (0) 2022.06.03