[Git] 6.3. 기본 CLI 명령어 살펴보기
카테고리: Git
기본적인 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)
$ 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>
명령을 커밋에 포함할 수 있다는 내용을 볼 수 있다.
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
명령으로 파일 내용이 변경되었는지 확인하는 것이다. 즉, 파일의 내용은 그대로 두고 단지 언스테이징만을 한다는 것을 확인할 수 있다.
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 명령어였다.
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 해시 체크섬 값을 사용하는데, 전 세계에서 유일한 값을 가진다.
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 시작하기, 한빛미디어, 정호영,진유림
댓글남기기