본문 바로가기
Code/개발지식

[Git] 차근차근 Git 명령어 1) - init, status, add, commit, log, diff

by 코드포휴먼 2020. 7. 29.

버전관리 도구 git 의 주요 명령어를 실습과 함께 정리한다. 

설치과정은 생략하니 설치과정이 필요하다면 아래 영상을 참고한다.

window에서 설치, mac에서 설치, unix/linux에서 설치

 

 

git init

현재 폴더(프로젝트 폴더)에 작업을 시작하겠다.

git 을 치면 사용할 수 있는 명령어가 나오는데, working area를 시작하는 명령어에는 cloneinit이 있다. 

git init을 치면 현재 폴더를 빈 Git 저장소초기화한다. 

 

현재 디렉토리의 파일목록을 확인하면 .git 디렉토리가 확인되면 저장소가 잘 생성된 것이다.

.git 디렉토리에는 앞으로 생성되는 버전 정보들이 저장되는 곳이다.

이 폴더를 삭제하면 마지막 소스코드만 남고 버전 정보들이 지워지니 주의하자.

 

 

git status

추적되고 있는 파일 및 폴더를 확인한다.
Untracked files 항목은 프로젝트 폴더에 존재하지만 버전관리 히스토리가 없는 파일을 의미한다.

f1.txt 파일을 생성하고 source : 1이라 입력했다. 

(vim으로 파일을 생성할 경우 i를 입력 -> 코드 작성 -> esc -> :wq! 로 작성 및 작업 종료가 가능하다.)

cat 명령어로 파일 내역을 확인하면 입력한 내용을 볼 수 있다.

 

현재 상태에서 git status 명령을 하면 f1.txt가 버전관리 되고 있지 않다고 말해준다.

 

 

git add 파일명

git이 버전관리를 하도록 알려준다.

버전관리 할 파일을 add해서 git 에게 알려준다. 

 

그 후 상태를 확인하면 새로운 파일로 뜬 것을 볼 수 있다. 

 

 

git add * 

모든 파일을 add 한다.

앞서 add한 방식은 버전관리 해야하는 파일을 명확하게 명시한 경우다.

* 을 사용한다면 모든 파일을 버전관리하겠다는 의미다.

 

 

git commit -m "커밋메시지"

새로운 버전을 생성한다.
커밋 메시지는 버전이 왜 만들어졌는지(파일이 왜 변경됐는지)의 이유를 담는다.

git은 버전을 관리할 수 있는 툴이다. 

버전을 만들면 이전 버전으로 되돌아가거나 변경사항의 이력을 추적할 수 있다.

버전은 "의미있는" 변화를 뜻한다. 하나의 작업 또는 기능이 완결된 상태다. 

예를 들어 코딩을 하던 중에 멈추고 약속장소에 나간다면 그 때의 상태는 버전에 해당하지 않으니 commit을 하면 안 된다.

 

commit 전에는 프로젝트의 버전을 내가 작성한 것이라고 알려주기 위해 계정을 설정한다. 

이제부터의 버전들은 이름과 이메일을 포함한 버전이 되므로 누가 작업했는지 구분할 수 있다. 

 

앞서 작성한 f1.txt를 커밋해보겠다. 

먼저 git commit만 치면 vim이 실행되고 현재 어떤 상태인지 주석으로 알려준다. (git status 한 것과 동일)

vim이 실행되면 i를 입력 -> 코드 작성 -> esc -> :wq! 커밋메시지를 작성할 수 있다. 

 

그러나 일일이 이렇게 작업하긴 불편하다. 

commit 뒤-m을 작성하여 "커밋메시지" 를 이어 작성하면 불필요한 vim 실행을 방지할 수 있다.

 

 

git commit -am "커밋메시지"

add 를 생략하고 커밋메시지와 commit 한다.

vim을 이용해 f1.txt를 수정해본다.

 

상태를 확인하면 처음과 달리 f1.txt 앞에 modified라고 뜨는 것이 보인다.

수정된 사항이 추적되지 않고 있다는 뜻이다. 

 

커밋할 시에 -am 옵션을 사용하면 git add f1.txt 명령을 하지 않고 커밋할 수 있다. 

 


※ commit 으로 버전을 만들기 전에 add 를 하는 이유는? - stage area

add명령은 'commit 대기 상태로 보낸다'는 의미다. 

commit 명령 commit 대기 상태에 있는 파일만 버전으로 만든다. 

이러한 commit 대기 상태를 stage area라고 한다. 

따라서 파일을 명시해서 add하면 이후에 commit 하고 싶은 파일만 커밋할 수 있게 된다. 

 

예를 들어 여러 파일을 작성 중에 있다고 가정한다.

f1.txt를 카피한 f2.txt를 만든다.

 

그리고 내용을 수정한다. 아래는 파일의 내역을 cat 명령어로 확인한 모습이다.

 

상태를 확인하면 f1.txt의 수정사항과 f2.txt 파일이 추적되지 않는다고 나온다.

 

이때 선택적으로 f1.txt만 add 해본다. (git에게 f1.txt만 버전관리 하도록 알려준다)

add한 파일만이 commit되기 때문에 Changes to be committed에는 f1.txt만 해당된다.

 

commit을 완료하면 add했던 f1.txt에 관한 버전이 생성된다.

상태를 확인하면 f2.txt는 추적되지 않은 파일로 남아있게 된다.


 

git log

모든 파일의 버전 기록을 확인한다.

git log 명령어를 통해 버전 작성자 작성 날짜를 확인할 수 있다. 

또한 commit 아이디도 확인할 수 있다. 이 아이디를 이용하면 추후에 이전 버전으로 돌아갈 수 있다. 

 

 

git log -p

버전 기록과 버전 간의 차이를 확인한다.

+++ b/f1.txt가 최신 버전의 f1.txt를 의미하며, 초록색 코드가 추가된 부분을 나타낸다.

q를 누르면 로그창을 빠져나올 수 있다.

 

 

git log 커밋ID

특정 커밋 이전의 버전 기록을 확인한다. 

커밋아이디를 특정하면 해당 커밋이전의 커밋 기록을 볼 수 있다.

 

 

git log 파일명

특정 파일의 버전 기록을 확인한다.

f2.txt를 커밋한 이후 f2.txt 변경사항만 확인해본다.

 

 

git diff 

commit 전에 이전 버전과의 차이를 확인한다.

f1.txt를 수정하고 상태를 확인한다.

 

git diff 명령을 통해 commit 하기 전에 이전 버전과의 차이를 확인할 수 있다.

 

 

git diff 커밋ID..커밋ID

커밋 간의 차이를 확인한다.

 

커밋아이디를 반대로 주면 그 차이를 반대로 보여준다.

 

 

다음 포스트에서 이어진다. 


출처 

생활코딩 <지옥에서 온 GIT>

https://www.youtube.com/playlist?list=PLuHgQVnccGMA8iwZwrGyNXCGy2LAAsTXk

댓글