명령어 목록

git 기본 명령어

명령어 설명
git status 깃 저장소의 상태 확인 명령어로, 작업 디렉터리와 스테이지 영역의 변경 사항을 보여준다.
git add 새로 생성하거나 수정된 파일을 스테이지 영역으로 올리는 명령어.
git commit 스테이지 영역에 있는 파일에 대한 버전 등록을 하는 명령어.
즉, 저장소에 스테이지 영역에 올라온 변경사항을 저장(스냅샷)하고 새로운 커밋을 만든다.
git log 커밋 이력을 확인하는 명령으로, 최신 커밋부터 순서대로 커밋 정보를 나열한다.
git show 이전 커밋과 다음 커밋 간 파일 내용 차이 확인
git rm 작업 디렉터리에서 파일을 삭제하고, 해당 삭제 작업을 스테이지 영역에 올린다.
git reset git에서 HEAD, 스테이지 영역, 작업 디렉터리의 상태를 특정 상태로 되돌리거나 초기화
git restore 작업 디렉터리의 수정된 파일이나 스테이지 영역을 이전 상태로 되돌린다

rm, reset, restore

명령어 git rm git reset git restore
작업 디렉터리 복구 O(옵션) O(옵션) O
스테이지 초기화 O O O
HEAD 이동 X O X
파일 삭제 O X X

git status

명령어 설명

깃 저장소의 상태 확인 명령어로, 작업 디렉터리와 스테이지 영역의 변경 사항을 보여준다.

기본 사용법

1
git status [option]

옵션

옵션 full name 설명
--long | long 현재의 상태를 자세히 표시한다.
git status의 기본 옵션이다.
 
--short | -s short 현재의 상태를 간단히 표시한다.
--help | -h help 도움말을 보여준다.

예시

1
2
3
4
5
# 추적되는 파일이 없는 처음 상태  
git status
>> On branch main
>> No commits yet
>> nothing to commit (create/copy files and use "git add" to track)

git add

명령어 설명

새로 생성하거나 수정된 파일을 스테이지 영역으로 올리는 명령어. untracked 혹은 modified 상태인 파일을 스테이지 영역으로 올려 커밋 준비를 한다.

기본 사용법

1
git add [files]

옵션

옵션 full name 설명
[files] - 지정한 파일들을 스테이지 영역에 추가한다.
. ./ 현재 디렉터리와 하위 디렉터리의 모든 파일을 스테이지 영역에 추가한다.
--all or -A all 전체 작업 영역의 모든 파일을 스테이지 영역에 추가한다.

예시

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 파일 생성
echo '#!/bin/bash' > test.sh

git status
>> On branch main
>> No commits yet
>> Untracked files:
>>   (use "git add <file>..." to include in what will be committed)
>>         test.sh
>> nothing added to commit but untracked files present (use "git add" to track)

# git add
git add test.sh

git status
>> On branch main
>> No commits yet
>> Changes to be committed:
>>   (use "git rm --cached <file>..." to unstage)
>>         new file:   test.sh

git commit

명령어 설명

스테이지 영역에 있는 파일에 대한 버전 등록을 진행한다. 즉, 저장소에 스테이지 영역에 올라온 변경사항을 저장(스냅샷)하고 새로운 커밋을 만든다.

기본 사용법

1
git commit [options] [message]

옵션

옵션 full name 설명
없음   커밋을 진행한다. 편집기가 열리고, 여기에 커밋 메시지를 입력해야 한다.
-m message 커밋 메시지를 지정하여 커밋을 실행한다.
-a -m or -am add, message 스테이지 등록과 커밋을 함께 실행한다.
단, 추적되지 않는 파일에 대해서는 실행이 불가능하다.
추적되지 않는 파일은 git add 후 commit을 진행해야 한다.

예시

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 파일 생성
echo '#!/bin/bash' > test.sh

# git add
git add test.sh

# git commit
git commit -m "first commit"
>> 1 file changed, 1 insertion(+)
>> create mode 100644 test.sh

# git status
git status
>> On branch main
>> nothing to commit, working tree clean

# git log
git log
>> commit 37b90cce0f841afd5e6368f02c4a7e77810bf127 (HEAD -> main)
>> Author: jongya <abc@naver.com>
>> Date:   Fri Nov 29 16:04:52 2024 +0900
>>     first commit

git log

명령어 설명

커밋 이력을 확인하는 명령으로, 최신 커밋부터 순서대로 커밋 정보를 나열한다.

기본 사용법

1
git log [option]

옵션

옵션 full name 설명
없음 - 현재 브랜치의 커밋 정보를 나열하여 커밋 이력을 표시한다.
--oneline - 커밋 정보를 한 줄로 표시한다.
--patch or -p - 커밋 정보에 파일의 변경 내용을 표시한다.
모든 커밋에 대해 커밋의 기본 정보와 이전 커밋과의 차이를 표시한다.
--graph - 문자를 연결한 그래프 형태로 커밋 이력을 그린다.
--reverse - 오래된 커밋부터 표시한다.
--graph 옵션과는 함께 사용할 수 없다.
--all - 모든 브랜치의 커밋 이력을 표시한다.
-n - 최근 n개의 커밋 이력을 표시한다.

예시

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# git log
git log
>> commit 37b90cce0f841afd5e6368f02c4a7e77810bf127 (HEAD -> main)
>> Author: jongya <abc@naver.com>
>> Date:   Fri Nov 29 16:04:52 2024 +0900
>>     first commit

# oneline
git log --oneline
>> 37b90cc (HEAD -> main) first commit

# patch
git log --patch
>> commit 37b90cce0f841afd5e6368f02c4a7e77810bf127 (HEAD -> main)
>> Author: jongya <abc@naver.com>
>> Date:   Fri Nov 29 16:04:52 2024 +0900
>>     first commit
>> diff --git a/test.sh b/test.sh
>> new file mode 100644
>> index 0000000..a9bf588
>> --- /dev/null
>> +++ b/test.sh
>> @@ -0,0 +1 @@
>> +#!/bin/bash

# graph
git log --graph
>> commit 37b90cce0f841afd5e6368f02c4a7e77810bf127 (HEAD -> main)
>> Author: jongya <abc@naver.com>
>> Date:   Fri Nov 29 16:04:52 2024 +0900
>>     first commit # 현재는 커밋이 하나밖에 없어서 표시 안됨. 추후 확인.

# all
git log --graph
>> commit 37b90cce0f841afd5e6368f02c4a7e77810bf127 (HEAD -> main)
>> Author: jongya <abc@naver.com>
>> Date:   Fri Nov 29 16:04:52 2024 +0900
>>     first commit # 현재는 커밋이 하나밖에 없어서 표시 안됨. 추후 확인.

# n
git log -0
>> 출력 없음
git log -1
>> commit 37b90cce0f841afd5e6368f02c4a7e77810bf127 (HEAD -> main)
>> Author: jongya <abc@naver.com>
>> Date:   Fri Nov 29 16:04:52 2024 +0900
>>     first commit

git show

명령어 설명

이전 커밋과 당므 커밋 간 파일 내용의 차이를 확인하는 명령어. git loggit diff의 기능을 결합한 출력물을 제공한다.

기본 사용법

1
2
git show HEAD         # 헤드가 가리키는 커밋과 이전 커밋과의 차이를 표시
git show <commit ID>  # 지정 커밋과 이전 커밋과의 차이를 표시

옵션

옵션 full name 설명
- 특정 커밋의 정보와 함께 이전 커밋과의 차이를 표시한다.
HEAD - 헤드(현재 커밋)가 가리키는 커밋과 이전 커밋과의 차이를 표시한다.
--stat - 커밋에서 변경된 파일 목록과 통계만 표시한다.
--name-only - 변경된 파일 이름만 출력한다.
--name-status - 변경된 파일의 이름과 상태(추가, 수정, 삭제)를 표시한다.

git rm

명령어 설명

remove files from the working tree and from the index.
작업 디렉터리에서 파일을 삭제하고, 해당 삭제 작업을 스테이지 영역에 올린다.

기본 사용법

1
git rm [files]

옵션

옵션 full name 설명
--cached [files] - 파일을 버전 관리 및 스테이지 영역에서만 제거하고
실제 파일은 작업 디렉터리에 그대로 남긴다.
-r   디렉터리와 하위 파일들을 재귀적으로 삭제한다.
-f force 수정된 파일이나 스테이징된 파일도 강제로 삭제한다.

예시

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 파일 생성
echo '#!/bin/bash' > test.sh

# add
git add ./test.sh

# git rm --cached
git rm --cached test.sh
>> rm 'test.sh'

# git status
git status
>> On branch main
>> No commits yet
>> Untracked files:
>>   (use "git add <file>..." to include in what will be committed)
>>         test.sh
>> nothing added to commit but untracked files present (use "git add" to track)

git reset

명령어 설명

git에서 HEAD, 스테이지 영역, 작업 디렉터리의 상태를 특정 상태로 되돌리거나 초기화 한다. 커밋을 제거하거나, 스테이지 상태를 초기화하거나 특정 커밋으로 HEAD를 이동시킬 때 사용한다.

기본 사용법

1
git reset [commit]

옵션

옵션 full name 설명
[files] - 특정 파일만 스테이지 영역에서 제거
--soft - HEAD : 지정한 커밋으로 이동
스테이지 영역 : 그대로 유지
작업 디렉터리 : 그대로 유지
--mixed - HEAD : 지정한 커밋으로 이동
스테이지 영역 : 초기화
작업 디렉터리 : 그대로 유지
기본값
--hard - HEAD : 지정한 커밋으로 이동
스테이지 영역 : 초기화
작업 디렉터리 : 초기화

예시

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 파일 생성
echo '#!/bin/bash' > test.sh

# add
git add ./test.sh

# 위에서 이어서
# 스테이지 영역 비우기
git reset

# 상태
git status
>> On branch main
>> No commits yet
>> Untracked files:
>>   (use "git add <file>..." to include in what will be committed)
>>         test.sh
>> nothing added to commit but untracked files present (use "git add" to track)

git restore

명령어 설명

작업 디렉터리의 수정된 파일을 이전 상태로 되돌린다. 혹은 스테이지 영역을 되돌리는(스테이징된 파일을 선택적으로 제거하는) 명령어. 파일의 변경 사항을 취소하거나, 스테이지 영역에서 파일을 제거할 때 사용한다.

기본 사용법

1
git restore [options]

옵션

옵션 full name 설명
--staged - 스테이지 영역에서 제거.
--source - 특정 커밋 기준으로 복원.
[files] - 작업 디렉터리 복구. 수정된 파일을 이전 상태로 돌린다.

Reference

UNIX시스템 - 김희천,김진욱 저