Git Commit
Commit์ด๋ ์ด๋ ํ ํฌ์ธํธ์์ ํ์์ ๊ธฐ๋กํ๋ ๊ฒ
๊ทธ๋์ Commit์ ์คํํ๊ธฐ ์ ์, ์ด๋ ํ ์ฝ๋, ์ด๋ ํ ํ์ผ๋ค์ ํ์์ผ๋ก ๊ธฐ๋กํ ์ง ์ ๋ณํ๋ ์์ ์ ์ํํด์ผ ํ๋ค.
SVN์
Commit
๊ณผ๋ ์ ํ ๋ค๋ฅธ ๊ธฐ๋ฅ์ด๋ค.
SVN์Revision
์ด๋ผ๊ณ ์๊ฐํ๋ฉด ๋๋ค.
์ ๋ณ ์์
Tracked Changes
- ์ด๋ ํ ํ์ผ(๋๋ ํฐ๋ฆฌ)๊ฐ ํ์์ผ๋ก ๋ฑ๋ก๋๋ฉด, ๊ทธ ์ดํ๋ถํฐ Git์์๋ ํด๋น ํ์ผ(๋๋ ํฐ๋ฆฌ)์ Trackingํ๊ธฐ ์์ํ๋ค.
- ์ด๋ ๊ฒ Tracking ํ๊ณ ์๋ ํ์ผ(๋๋ ํฐ๋ฆฌ) ์ค์์ ์์ ์ฌํญ์ด ๋ฐ์ํ ๋ชฉ๋ก์ ์๋ฏธํ๋ค.
- ๋ณดํต์ ํ์ผ(๋๋ ํฐ๋ฆฌ) ์์ /์ด๋/์ญ์ ๋ ๊ฒฝ์ฐ์ ํด๋น
Untracked List
- ํ์ ๋ฑ๋ก์ด ๋์ง ์์ ํ์ผ(๋๋ ํฐ๋ฆฌ) ๋ชฉ๋ก
- ๋ณดํต์ ํ์ผ(๋๋ ํฐ๋ฆฌ) ์ถ๊ฐ๋ ๊ฒฝ์ฐ์ ํด๋น
Stage
Commit
์ํ ์ ํ์์ผ๋ก ๊ธฐ๋กํ ํ์ผ์ด๋ ์ฝ๋ ๋ฑ์ ๋ฆฌ์คํธ- Tracked changes, untracked list์์ ํ์์ผ๋ก ๊ธฐ๋กํ ๊ฒ๋ค์ ์ ๋ณํ์ฌ Stage๋ก ์ด๋์ํด
๊ด๋ จ ๋ช ๋ น์ด
- add
- del
- commit
- rm
- status
- tag
add
### Add to stage ###
# Tracked changes์ Untracked list์ ํน์ ํ์ผ(๋๋ ํฐ๋ฆฌ)๋ฅผ Stage์ ์ถ๊ฐ
$ git add [files or dirs]
# Tracked changes์ Untracked list์ ๋ชจ๋ ํ์ผ(๋๋ ํฐ๋ฆฌ)๋ฅผ Stage์ ์ถ๊ฐ
$ git add -A
del
### Delete from stage ###
# Stage์ ์๋ ํน์ ํ์ผ(๋๋ ํฐ๋ฆฌ)๋ฅผ Stage์์ ์ ์ธ
$ git del [files or dirs]
# Stage์ ์๋ ๋ชจ๋ ํ์ผ(๋๋ ํฐ๋ฆฌ)๋ฅผ Stage์์ ์ ์ธ
$ git del -A
commmit
### Restore stage ###
$ git commit
์ปค๋งจ๋๋ฅผ ์คํํ๋ฉด, ์๋ํฐ๊ฐ ์คํ๋๋ฉด์ Commit ๋ฉ์ธ์ง๋ฅผ ์์ฑํ๋ ํ๋ฉด์ผ๋ก ์๋ ์ ํ๋ฉ๋๋ค.
์ด ๋ ์คํ๋๋ ์๋ํฐ๋ Repo config์ core.editor์ ์ค์ ๋ ์๋ํฐ์
๋ฉ์์ง๋ฅผ ๋ชจ๋ ์์ฑํ ํ, ์๋ํฐ๋ฅผ ์ข ๋ฃํ๋ฉด Commit ์๋ฃ
Commit ๋ฉ์ธ์ง๋ฅผ ์์ฑํ๋ ๋ฐฉ๋ฒ์ ๋ค์์ ๋ค๋ฃฐ ์์ .
Commit์ด ์๋ฃ๋๋ฉด History๊ฐ ๊ธฐ๋ก๋๋๋ฐ, $ git log
์ปค๋งจ๋๋ก ํ์ธํ ์ ์๋ค.
๋ํ ๊ฐ Commit๋ง๋ค Commit number๊ฐ ๋ถ์ฌ๋๋๋ฐ ์ด ๋ํ log ์ปค๋งจ๋๋ก ํ์ธํ ์ ์๋ค(๋นจ๊ฐ์ ํ์ดํ).
rm
### Remove from tracked list
# ํน์ ํ์ผ(๋๋ ํฐ๋ฆฌ)๋ฅผ Tracked list์์ ์ ์ธ์ํด๊ณผ ๋์์ ์ญ์
$ git rm [files or dirs]
# ํน์ ํ์ผ(๋๋ ํฐ๋ฆฌ)๋ฅผ Tracked list์์ ์ ์ธ๋ง ์ํค๊ณ ์ญ์ ๋ ํ์ง ์์
$ git rm --cached [files or dirs]
status
### Check unstaged list ###
$ git status
# Staged files
Changes to be committed:
deleted: file_a
# Tracked changes
Changes not staged for commit:
modified: file_b
# Untracked list
Untracked files:
file_c
file_d
tag
# Register tag
$ git tag <tag-name>
# Example
$ git tag v0.0.0
# Check tags
$ git tag
ํน์ Commit ํฌ์ธํธ์์ Tag๋ฅผ ๋จ๊ธธ ์ ์๋ค.
๋ณดํต์ ๋ฒ์ ๋ช ์ ๊ธฐ๋กํ ๋ ์ฌ์ฉ๋๋ค.
Commit Rule
$ git commit
์ ์คํํ๋ฉด, Commit ๋ฉ์ธ์ง๋ฅผ ์์ฑํด์ผ ํ๋ค.
๊ฐ์ ํ๊ฒฝ์ ๋ง๊ฒ ์์ฑํ๋ฉด ๋์ง๋ง, ์ผ๋จ ๋จผ์ Global conventional commit rule์ ์๊ฐํ๊ณ ์ ํ๋ค.
Global conventional commit rule
๊ธฐ๋ณธ ํ์ ๋ค์๊ณผ ๊ฐ๋ค.
type : title
body(์๋ต ๊ฐ๋ฅ)
footer(์๋ต ๊ฐ๋ฅ)
-
type
Commit์ ํ์ ์ ์ ์ํ๋ค. ์ด ์ปค๋ฐ๋ฃฐ์์ ์ ์ํ ๋ชฉ๋ก์ ๋ค์๊ณผ ๊ฐ๋ค.
- feat : ์๋ก์ด ๊ธฐ๋ฅ์ ๋ํ ์ปค๋ฐ
- fix : ๋ฒ๊ทธ ์์ ์ ๋ํ ์ปค๋ฐ
- build : ๋น๋ ๊ด๋ จ ํ์ผ ์์ ์ ๋ํ ์ปค๋ฐ
- chore : ๊ทธ ์ธ ์์ํ ์์ ์ ๋ํ ์ปค๋ฐ
- ci : CI ๊ด๋ จ ์ค์ ์์ ์ ๋ํ ์ปค๋ฐ
- docs : ๋ฌธ์ ์์ ์ ๋ํ ์ปค๋ฐ
- style : ์ฝ๋ ์คํ์ผ ๋๋ ํฌ๋งท ๋ฑ์ ๋ํ ์ปค๋ฐ
- refactor : ์ฝ๋ ๋ฆฌํฉํ ๋ง์ ๋ํ ์ปค๋ฐ
- test : ํ ์คํธ ์ฝ๋ ์์ ์ ๋ํ ์ปค๋ฐ
-
title
Commit์ ์ ๋ชฉ์ ์ ์ํ๋ค.
-
body
ํ์ ์ ๋ณธ๋ฌธ ๋ฐ ์ธ๋ถ ๋ด์ฉ์ ๋ช ์ํ๋ค.
๋ํ ์๋ต ๊ฐ๋ฅํ๋ค.
-
footer
์ฌ์กฑ์ ๋จ๊ธด๋ค.
์๋ต๋ ๊ฐ๋ฅํ๋ค.
ํ์ง๋ง ๋ณดํต ํด๋น Commit๊ณผ ์ฐ๊ด๋ Issue tracker ID๋ฅผ ๋ช ์ํ๋ค.
-
close #
์ผ๊ฐ์ด ์๋ฃ๋์์์ ๋ํ๋
-
resolved #
์ด์๊ฐ ํด๊ฒฐ๋์์์ ๋ํ๋
-
refs #
ํ์ฌ ์งํ ์ค์ธ ์ผ๊ฐ(or ์ด์)๋ฅผ ๋ํ๋
-
related to # # #...
๊ด๋ จ ์ผ๊ฐ๋ค์ ๋ํ๋(๋ณต์ ์ง์ ๊ฐ๋ฅ)
-
์ด Rule์์ ์ ์ํ๋ 7๊ฐ์ง ๊ท์น์ ๋ค์๊ณผ ๊ฐ๋ค.
title
๊ณผbody
๋ ๋น ํ์ผ๋ก ๊ตฌ๋ถํ๋ค.title
์ 50์ ์ด๋ด๋ก ์ ํํ๋ค.title
์ฒซ ๊ธ์๋ ๋๋ฌธ์๋ก ์์ฑํ๋ค.title
๋์ ๋ง์นจํ๋ฅผ ๋ฃ์ง ์๋๋ค.title
์ ๋ช ๋ น๋ฌธ์ผ๋ก ์ฌ์ฉํ๋ฉฐ ๊ณผ๊ฑฐํ์ ์ฌ์ฉํ์ง ์๋๋ค.body
์ ๊ฐ ํ์ 72๊ธ์ ๋ด๋ก ์ ํํ๋ค.- ์ด๋ป๊ฒ ๋ณด๋ค๋ ๋ฌด์๊ณผ ์๋ฅผ ์ค๋ช ํ๋ค.
์์๋ ๋ค์๊ณผ ๊ฐ๋ค.
fix : Segmentation fault ํ์ ํด๊ฒฐ
For๋ฌธ์์ ๋ฐฐ์ด์ ์ต๋ ์ธ๋ฑ์ค๋ฅผ ์ด๊ณผํ์ฌ ์ ๊ทผํ๋ ๊ฒ์ ์์
- main.c 723์ค ์ฐธ๊ณ
resolved #4431
Ignore File
์ด๋ฆ ๊ทธ๋๋ก Git์์ ์์ ์ ๊ฒฝ์ ์ฐ์ง ์์๋ ๋ ํ์ผ ๋ชฉ๋ก์ ๋ช
์ํ ์ ์๋ค. ์ด ํ์ผ์ ๋ช
์๋ ํ์ผ๋ค์ $ git status
๋ช
๋ น์ด๋ฅผ ์คํ๋๋ฉด ์ถ๋ ฅ๋๋ Untracked files ์๋ ์ ์ธ๋๋ค.
Ignore file์ Git repo์์ .gitignore
ํ์ผ์ ์์ฑํ๊ณ , ๋ฌด์ํ ํ์ผ(๋๋ ํฐ๋ฆฌ) ๋ฆฌ์คํธ๋ฅผ ํ์ผ์ ์์ฑํ๋ฉด ๋๋ค. ๊ฐ๊ฐ ๊ฐํ์ผ๋ก ๊ตฌ๋ถํด์ค๋ค.
ํ์ค์์์ผ๋ก Glob ํจํด์ ์ฌ์ฉํ๋ค.
๋ฆฌ์คํธ ์ค์ ๋ฌด์๋ฅผ ์ทจ์ํ๊ณ ์ถ์ ๊ฒ ์๋ค๋ฉด, ์ญ์ ํ๊ฑฐ๋ ๋งจ ์์ #์ ์ถ๊ฐํด์ค๋ค.
Github standard
C, Jave ๋ฑ ๊ฐ ์ฝ๋ ํฌ๋งท๋ง๋ค ์ปดํ์ผ ๋ฑ ์์ ์ ์์ฑ๋๋ ๋ถ์ฐ๋ฌผ๋ค(๋ฐ์ด๋๋ฆฌ ๋ฑ)์ด ์กด์ฌํ๋ค. ํ์ง๋ง, ํ์๊ด๋ฆฌ๋ ์ฝ๋ ๊ด๋ฆฌ๋ฅผ ์ฃผ๋ก ํ๊ธฐ ๋๋ฌธ์ ์ด๋ฌํ ๋ถ์ฐ๋ฌผ๋ค์ ํ์์๋ ์กด์ฌ์ด๋ค.
๊ทธ๋์ Github์์๋ ๊ฐ ์ฝ๋ ํฌ๋งท ๋ณ Ignore file์ ์ ์ํ์ฌ ์ ๊ณตํ๋ค. ๊ทธ๋์ ๋ณดํต ์ฌ๊ธฐ์ ์ ๊ณตํ๋ Ignore file์ ๋ฐํ์ผ๋ก ๊ฐ์์ ํ๊ฒฝ์ ๋ง๊ฒ ์ปค์คํ ํ์ฌ ์ฌ์ฉํ๋ค.
Github ์์์ ์ฌ์ฉํ๋ ค๋ฉด ๋ค์ด๋ก๋ ๋ฐ์์ ์ด๋ฆ์ .gitignore
๋ก ๋ณ๊ฒฝํ๋ฉด ๋๋ค.
C.gitignore
# Prerequisites
*.d
# Object files
*.o
*.ko
*.obj
*.elf
# Linker output
*.ilk
*.map
*.exp
# Precompiled Headers
*.gch
*.pch
# Libraries
*.lib
*.a
*.la
*.lo
# Shared objects (inc. Windows DLLs)
*.dll
*.so
*.so.*
*.dylib
# Executables
*.exe
*.out
*.app
*.i*86
*.x86_64
*.hex
# Debug files
*.dSYM/
*.su
*.idb
*.pdb
# Kernel Module Compile Results
*.mod*
*.cmd
.tmp_versions/
modules.order
Module.symvers
Mkfile.old
dkms.conf
Author And Source
์ด ๋ฌธ์ ์ ๊ดํ์ฌ(Git Commit), ์ฐ๋ฆฌ๋ ์ด๊ณณ์์ ๋ ๋ง์ ์๋ฃ๋ฅผ ๋ฐ๊ฒฌํ๊ณ ๋งํฌ๋ฅผ ํด๋ฆญํ์ฌ ๋ณด์๋ค https://velog.io/@juni-test/Git-Commit์ ์ ๊ท์: ์์์ ์ ๋ณด๊ฐ ์์์ URL์ ํฌํจ๋์ด ์์ผ๋ฉฐ ์ ์๊ถ์ ์์์ ์์ ์ ๋๋ค.
์ฐ์ํ ๊ฐ๋ฐ์ ์ฝํ
์ธ ๋ฐ๊ฒฌ์ ์ ๋
(Collection and Share based on the CC Protocol.)
์ข์ ์นํ์ด์ง ์ฆ๊ฒจ์ฐพ๊ธฐ
๊ฐ๋ฐ์ ์ฐ์ ์ฌ์ดํธ ์์ง
๊ฐ๋ฐ์๊ฐ ์์์ผ ํ ํ์ ์ฌ์ดํธ 100์ ์ถ์ฒ ์ฐ๋ฆฌ๋ ๋น์ ์ ์ํด 100๊ฐ์ ์์ฃผ ์ฌ์ฉํ๋ ๊ฐ๋ฐ์ ํ์ต ์ฌ์ดํธ๋ฅผ ์ ๋ฆฌํ์ต๋๋ค