git add, commit 실습

커밋 실습

(1) 첫 번째 커밋

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# 파일 생성
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
>> 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

(2) 두 번째 커밋

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
# 파일 수정
echo "echo Hello Linux"

# 파일 내용 확인
cat ./test.sh
>> \#!/bin/bash
>> echo Hello Linux

# git status
>> On branch main
>> Changes not staged for commit:
>>   (use "git add <file>..." to update what will be committed)
>>   (use "git restore <file>..." to discard changes in working directory)
>>         modified:   test.sh      # modified : repo 에 등록된 추적되는 파일이 수정됨
>> no changes added to commit (use "git add" and/or "git commit -a")

# git commit
git commit -am "second commit"           # add 와 commit 을 한 번에
>> [main cbf9cc6] second commit
>>  1 file changed, 1 insertion(+)

# git log
git log --oneline
>> cbf9cc6 (HEAD -> main) second commit  # 두 번째 커밋
>> 37b90cc first commit                  # 첫 번째 커밋

(3) 세 번째 커밋

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
# 파일 수정
echo 'echo $0 $1 $2' >> test.sh

# 파일 내용 확인
cat ./test.sh
>> \#!/bin/bash
>> echo Hello Linux
>> echo $0 $1 $2

# git status
git status -s
>> M test.sh  # M : 빨간색 - 수정됨 / 초록색 - 수정전

# git commit
git commit -am "third commit"
>> [main c175163] third commit
>>  1 file changed, 1 insertion(+)

# git log --graph  
git log --graph --oneline
>> * c175163 (HEAD -> main) third commit
>> * cbf9cc6 second commit
>> * 37b90cc first commit

git log --graph
>> * commit c175163158d0e78f259b64ffb76b72a985e7f697 (HEAD -> main)
>> | Author: jongya <abc@naver.com>
>> | Date:   Fri Nov 29 16:50:33 2024 +0900
>> | 
>> |     third commit
>> | 
>> * commit cbf9cc608bbd1656ba9008c7e25c94493700a91b
>> | Author: jongya <abc@naver.com>
>> | Date:   Fri Nov 29 16:46:08 2024 +0900
>> | 
>> |     second commit
>> | 
>> * commit 37b90cce0f841afd5e6368f02c4a7e77810bf127
>>   Author: jongya <abc@naver.com>
>>   Date:   Fri Nov 29 16:04:52 2024 +0900
>>   
>>       first commit

커밋간 차이 보기

커밋간 차이를 볼 때에는 git show <commit ID> 또는 git show HEAD, 혹은 전체 커밋의 차이를 보고 싶을 때에는 git log --patch 명령어를 사용한다.

-git show <commit ID> : 지정 커밋과 이전 커밋의 차이를 보여준다.
-git show HEAD : 현재 커밋과 이전 커밋의 차이를 보여준다.
-git log --patch : 전체 커밋에서 파일 간 차이를 보여준다.

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
# 어떤 커밋들이 있는지 확인
git log --oneline
>> c175163 (HEAD -> main) third commit
>> cbf9cc6 second commit
>> 37b90cc first commit

# 커밋 지정 확인 (second)
>> commit cbf9cc608bbd1656ba9008c7e25c94493700a91b
>> Author: jongya <abc@naver.com>
>> Date:   Fri Nov 29 16:46:08 2024 +0900
>> 
>>     second commit
>> 
>> diff --git a/test.sh b/test.sh
>> index a9bf588..29446b0 100644
>> --- a/test.sh
>> +++ b/test.sh
>> @@ -1 +1,2 @@
>>  \#!/bin/bash
>> +echo Hello Linux

# 현재 커밋(HEAD) 확인
>> commit c175163158d0e78f259b64ffb76b72a985e7f697 (HEAD -> main)
>> Author: jongya <abc@naver.com>
>> Date:   Fri Nov 29 16:50:33 2024 +0900
>> 
>>     third commit
>> 
>> diff --git a/test.sh b/test.sh
>> index 29446b0..20c3a07 100644
>> --- a/test.sh
>> +++ b/test.sh
>> @@ -1,2 +1,3 @@
>>  \#!/bin/bash
>>  echo Hello Linux
>> +echo $0 $1 $2

# 로그 전체는 너무 길어서 생략

Reference

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