[Git] 6.3. 기본 CLI 명령어 살펴보기

업데이트:

카테고리:

태그: , , , , ,

기본적인 git 명령어들

$ git add 파일1 파일 2 ...

- 파일들을 스테이지에 추가
- 새로 생성한 파일을 스테이지에 추가하고 싶다면 반드시 add 명령 시리행

$ git commit

- 스테이지에 있는 파일들을 커밋

$ git commit -a

- add 명령을 생략하고 바로 커밋하고 싶을 때 사용
- 변경된 파일과 삭제된 파일은 자동으로 스테이징, 커밋
- untracked 파일은 커밋되지 않는다는 것에 주의

$ git pull

- 원격저장소의 변경사항을 워크트리에 반영
- git fetch + git merge 명령

$ git fetch [원격저장소별명] [브랜치이름]

- 원격저장소의 브랜치와 커밋들을 로컬저장소와 동기화
- 옵션을 생략하면 모든 원격저장소에서 모든 브랜치를 가져옴

$ git merge 브랜치이름

- 지정한 브랜치의 커밋들을 현재 브랜치 및 워킹트리의 반영


간단한 텍스트 파일 생성하고 확인

tmdgn@ASUSSH MINGW64 ~/Documents/hello-git-cli (master)
$ echo "hello git" # 화면에 큰 따옴표(" ") 안의 텍스트를 보여준다.
hello git

tmdgn@ASUSSH MINGW64 ~/Documents/hello-git-cli (master)
$ echo "hello git" > file1.txt # 큰 따옴표 안의 텍스트로 file1.txt 파일 생성

tmdgn@ASUSSH MINGW64 ~/Documents/hello-git-cli (master)
$ ls
file1.txt

tmdgn@ASUSSH MINGW64 ~/Documents/hello-git-cli (master)
$ git status
On branch master

No commits yet

Untracked files:
(use "git add <file>..." to include in what will be committed)
file1.txt

nothing added to commit but untracked files present (use "git add" to track)

image

$ git status 라는 명령어로 상태를 보면 file1.txt 라는 파일이 생성되었고, untracked 상태임을 확인할 수 있다. 이를 스테이지에 추가해보자.


생성한 파일 스테이지에 추가하기

tmdgn@ASUSSH MINGW64 ~/Documents/hello-git-cli (master)
$ git add file1.txt
warining: LF will be replaced by CRLF in file1.txt.
The file will have its original line endings in your working directory.

tmdgn@ASUSSH MINGW64 ~/Documents/hello-git-cli (master)
$ git status
On branch master

No commits yet

Changes to be committed:
(use "git rm --cached <file>..." to unstage)
new file: file1.txt

우리가 만든 file1.txt 파일이 스테이지 영역에 추가된 것을 볼 수 있다. git add <file> 명령을 커밋에 포함할 수 있다는 내용을 볼 수 있다.

image


reset 명령으로 스테이징 취소하기

위 실행결과의 아래 부분을 보면 git rm --cached <file> ... 명령으로 스테이지에서 내릴 수 있다(unstage)라는 메시지가 있다. 하지만 이보다 더 자주 사용하는 명령어가 있다. 바로 git reset [파일명] ...이다.

  • 워킹트리는 그대로 두고 해당 파일을 스테이지에서 내린다.
  • 스테이지에서 내리는 작업을 ‘언스테이징(unstaging)’이라고 한다.

아래 명령어를 이용해 git bash에서 unstaging해보자.

tmdgn@ASUSSH MINGW64 ~/Documents/hello-git-cli (master)
$ git status
On branch master

No commits yet

Changes to be committed:
(use "git rm --cached <file>..." to unstage)
new file: file1.txt # 변경내용이 스테이지에 올라간 상태

tmdgn@ASUSSH MINGW64 ~/Documents/hello-git-cli (master)
$ git reset "file1.txt" # file1.txt 파일 언스테이징

tmdgn@ASUSSH MINGW64 ~/Documents/hello-git-cli (master)
$ git status
On branch master

No commits yet

Untracked files:
(use "git add <file>..." to include in what will be committed)
file1.txt # unstaging되어 스테이지에서 내려간 상태

nothing added to commit but untracked files present (use "git add" to track)

tmdgn@ASUSSH MINGW64 ~/Documents/hello-git-cli (master)
$ ls
file1.txt

tmdgn@ASUSSH MINGW64 ~/Documents/hello-git-cli (master)
$ cat file1.txt
hello git

cat file1.txt 명령으로 파일 내용이 변경되었는지 확인하는 것이다. 즉, 파일의 내용은 그대로 두고 단지 언스테이징만을 한다는 것을 확인할 수 있다.

image


CLI로 첫 번째 커밋 생성

tmdgn@ASUSSH MINGW64 ~/Documents/hello-git-cli (master)
$ git add file1.txt
warning: LF will be replaced by CRLF in file1.txt.
The file will have its original line endings in your working directory

tmdgn@ASUSSH MINGW64 ~/Documents/hello-git-cli (master)
$ git status
On branch master

No commits yet

Changes to be committed:
  (use "git rm --cached <file>..." to unstage)
        new file:   file1.txt


tmdgn@ASUSSH MINGW64 ~/Documents/hello-git-cli (master)
$ git commit    # 커밋 실행, VSC가 열리면 커밋 메시지 입력 후 저장&닫기
hint: Waiting for your editory to close the file...
.
.
.
[master (root-commit) b45b44d] 첫 번째 커밋
 1 file changed, 1 insertion(+)
 create mode 100644 file1.txt

교재에서는 $ git commmit 명령어만을 사용하여 VSC를 실행하여 커밋 메시지를 넣고 commit 하라고 하였으나, vSC를 이용해 본 학습 정리를 열고 있는 탓인지 몰라도 오류가 발생하였다. 그래서 커밋 메시지를 바로 넣는 $ git commit -m "커밋 메시지" 를 이용해서 바로 커밋을 했다. 앞의 GUI 학습 과정에서 알고 있었던 git 명령어였다.

image


CLI로 log 살펴보기

$ git log 명령어로 git 커밋 히스토리를 확인해보겠다.

tmdgn@ASUSSH MINGW64 ~/Documents/hello-git-cli (master)
$ git status
On branch master
nothing to commit, working tree clean

tmdgn@ASUSSH MINGW64 ~/Documents/hello-git-cli (master)
$ git log --oneline --graph --all --decorate

- b45b44d (HEAD -> master) 첫 번째 커밋

커밋 히스토리에 보이는 앞의 16진수 7자리 숫자는 커밋 체크섬 혹은 커밋 아이디이다. SHA1 해시 체크섬 값을 사용하는데, 전 세계에서 유일한 값을 가진다.

image


git log의 다양한 옵션

git log

- 현재 브랜치의 커밋 이력을 확인

git log -n<숫자>

- 전체 커밋 중에서 최신 n개의 커밋만 확인
- 아래의 다양한 옵션들과 함께 사용 가능

git log --oneling --graph --decorate --all

- 자주 사용하는 옵션으로 간결하고 멋지게 보여준다.
- --oneline : 커밋 메시지를 한 줄로 요약해서 보여줌. 생략하면 자세히 표시
- --graph : 커밋 옆에 브랜치의 흐름을 그래프로 보여줌. GUI와 유사
- --decorate : 원래는 --decorate=short 옵션을 의미. 브랜치와 태그 등의 참조를 간결히 표시
- all : all 옵션이 없는 경우 HEAD와 관계없는 옵션은 보여주지 않는다.


좋은 커밋 메시지의 7가지 규칙

1. 제목과 본문을 빈 줄로 분리
2. 제목은 50자 이내
3. 제목에는 마침표를 쓰지 않는다
4. 제목을 영어로 쓸 경우 첫 글자는 대문자로
5. 제목을 영어로 쓸 경우 동사원형(현재형)으로 시작
6. 본문을 72자 단위로 줄바꿈
7. '어떻게' 보다 '무엇'과 '왜'를 설명


도움말 기능 사용

$ git help <명령어>를 이용해 명령의 자세한 옵션들을 볼 수 있다. 아래의 명령어를 사용해보자.

$ git help status
$ git help commit
$ git help add


Reference

  • 팀 개발을 위한 Git GitHub 시작하기, 한빛미디어, 정호영,진유림

댓글남기기