3. ๊ธฐ๋ณธ ๋ช ๋ น์ด ์ ๋ณตํ๊ธฐ
[ 3.1 + 3.2 ]
git์๋ 3๊ฐ์ง ์์ ํ๊ฒฝ์ด ๋๋์ด์ ธ ์๋ค
๐ป [ local ] : ๋์ PC
- working directory : ์์ ํ์ผ ์์
- * untracked * tracked ( unmodified / modified )
- staging area : ์ด๋ ์ ๋ ์์ ํ ํ์ผ ์ฎ๊ฒจ๋๊ธฐ
- .git directory : ๋ฒ์ ๋ณ ํ์ผ ๋ณด๊ด
[ remote ]
- .git directory : ๋ฒ์ ๋ณ ํ์ผ ๋ณด๊ด(์๋ฒ)
- ๊ฐ๊ฐ์ commit : ์ค๋ ์ท๋ ์ ๋ณด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๋ HashCode๊ฐ ์์
- ์ค์ต ์ํ ํด๋ ๋ง๋ค๊ธฐ
mkdir git/ch1
- ํ ์คํธํ์ผ 3๊ฐ์ง ๋ง๋ค๊ธฐ
echo hello world! > a.txt
echo hello world! > b.txt
echo hello world! > c.txt
- addํด์ git์์ ์ถ์ ํ๊ธฐ
- ํ์ฌ statging area ์ํฉ ์์๋ณด๊ธฐ
git status
- ํ์ผ ์์ ์ git status์ ๋ณํ
echo new word > a.txt
- git rm —cached … ํ๋ฉด unstage ํ ์ ์๋ค๋ ๋์๋ง์ด ์์
- git add . ์ git add *****์ ์ฐจ์ด์
GPT๋ต๋ณ
git add . (์ ):
"git add ." ๋ช ๋ น์ ํ์ฌ ๋๋ ํฐ๋ฆฌ์ ๊ทธ ํ์ ๋๋ ํฐ๋ฆฌ์ ์๋ ๋ชจ๋ ๋ณ๊ฒฝ๋ ํ์ผ์ ์คํ ์ด์ง ์์ญ์ ์ถ๊ฐํฉ๋๋ค.
ํ์ฌ ๋๋ ํฐ๋ฆฌ ๋ฐ ํ์ ๋๋ ํฐ๋ฆฌ์ ์๋ ๋ชจ๋ ๋ณ๊ฒฝ๋ ํ์ผ์ด ์คํ ์ด์ง ์์ญ์ ์ถ๊ฐ๋๊ธฐ ๋๋ฌธ์ ์์ ๋๋ ํฐ๋ฆฌ ๋ด์ ๋ชจ๋ ๋ณ๊ฒฝ ์ฌํญ์ ์คํ ์ด์งํ๋ ค๋ฉด ์ฃผ๋ก ์ด ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํฉ๋๋ค.
์: git add .
git add * (๋ณํ):
"git add *" ๋ช ๋ น์ ํ์ฌ ๋๋ ํฐ๋ฆฌ์ ์๋ ๋ณ๊ฒฝ๋ ํ์ผ๋ง ์คํ ์ด์ง ์์ญ์ ์ถ๊ฐํฉ๋๋ค. ์๋ธ๋๋ ํฐ๋ฆฌ์ ๋ณ๊ฒฝ ๋ด์ฉ์ ์คํ ์ด์ง๋์ง ์์ต๋๋ค.
ํ์ฌ ๋๋ ํฐ๋ฆฌ์ ์๋ ํ์ผ๋ง ์คํ ์ด์งํ๋ฏ๋ก, ์์ ๋๋ ํฐ๋ฆฌ ๋ด์์ ๋ณ๊ฒฝ๋ ํ์ผ ์ค ์ผ๋ถ๋ง ์คํ ์ด์งํ๋ ค๋ ๊ฒฝ์ฐ์ ์ฌ์ฉ๋ ์ ์์ต๋๋ค.
์: git add *
์ผ๋ฐ์ ์ผ๋ก ๋๋ถ๋ถ์ ๊ฒฝ์ฐ์๋ "git add ."๋ฅผ ์ฌ์ฉํ์ฌ ํ์ฌ ๋๋ ํฐ๋ฆฌ์ ํ์ ๋๋ ํฐ๋ฆฌ์ ๋ชจ๋ ๋ณ๊ฒฝ ์ฌํญ์ ์คํ ์ด์งํ๋ฉฐ, ํ์์ ๋ฐ๋ผ "git add *"์ ๊ฐ์ ๋ช ๋ น์ ์ฌ์ฉํ์ฌ ํ์ฌ ๋๋ ํฐ๋ฆฌ์์๋ง ๋ณ๊ฒฝ๋ ํ์ผ์ ์คํ ์ด์งํ ์ ์์ต๋๋ค.
"git add ." ๋ฐ "git add *"๋ ๋ ๋ค ๋ณ๊ฒฝ๋ ํ์ผ์ ์คํ ์ด์ง ์์ญ์ ์ถ๊ฐํ๋ ๋ฐ ์ฌ์ฉ๋๋ Git ๋ช ๋ น์ด์ ๋๋ค. ๊ทธ๋ฌ๋ ์ด ๋ ๋ช ๋ น์ด ์ฌ์ด์๋ ์ฝ๊ฐ์ ์ฐจ์ด๊ฐ ์์ต๋๋ค:
[ 3.3 ]
- ์ถ์ ๋๋ฉด ์๋๋ ํ์ผ์
.gitignore
๋ก ๊ด๋ฆฌํ๊ธฐ
๐ .gitignore ํ์ผ์ ๋ค์๊ณผ ๊ฐ์ด ํจํด์ ์ถ๊ฐํ์ฌ ํน์ ํ์ผ ๋๋ ๋๋ ํฐ๋ฆฌ๋ฅผ ๋ฌด์ํ๊ธฐ
#ํน์ ํ์ผ ๋ฌด์
filename.txt
#ํน์ ๋๋ ํ ๋ฆฌ ๋ฌด์
directory/
#ํ์ฅ์ .log์ธ ๋ชจ๋ ํ์ผ ๋ฌด์
*.log
echo *.log > .gitignore
์ด๋ ๊ฒ ์ฃผ์์ ๋ฌ์์ ์ถ์ ๋๋ฉด ์๋๋ ํ์ผ์ ๊ด๋ฆฌํ ์ ์์
- WindowPoweShell์์ ์ ์ฉ ์ utf-8๋ก ๋ณ๊ฒฝํด์ค์ผ ์ธ์ ๊ฐ๋ฅํจ.
$PSDefaultParameterValues['Out-File:Encoding'] = 'utf8'
$PSDefaultParameterValues['*:Encoding'] = 'utf8'
[ 3.4 ]
git status
๋ช ๋ น์ด์ ๋ค์ํ ์ต์ . ๊ธฐ๋ณธ์ ์ผ๋ก๋ --long์ ์ฉ
- ํฐ๋ฏธ๋์ฐฝ clear๋จ์ถํค
//mac
cmd k
//window
ctrl L
- git status short ์ต์ : ํ์ฌ staging area ์ํ ๊ฐ๋จํ๊ฒ ๋ณผ ์ ์์
[ 3.5 ]
- ์์
๋๋ ํฐ๋ฆฌ ๋ด์ ๋ณ๊ฒฝ ์ฌํญ ๋ณด์ฌ์ค
(์คํ ์ด์ง ์์ญ์ ์คํ ์ด์ง๋์ง ์์ ๋ณ๊ฒฝ ์ฌํญ๊ณผ ์ด์ ์ปค๋ฐ๊ณผ์ ๋น๊ต ๊ฒฐ๊ณผ๋ฅผ ํ์)
git diff //๋ผ๊ณ ๋ง ์ ์ผ๋ฉด working directory์ ์๋ ๋ด์ฉ๋ง ์ ์ ์์
- ์คํ
์ด์ง ์์ญ์ ์๋ ๋ณ๊ฒฝ ์ฌํญ์ ๋ณด์ฌ์ค
(์คํ ์ด์ง ์์ญ์ ์คํ ์ด์ง๋ ๋ณ๊ฒฝ ์ฌํญ๊ณผ ์ด์ ์ปค๋ฐ๊ณผ์ ๋น๊ต ๊ฒฐ๊ณผ๋ฅผ ํ์)
git diff --staged
git diff --cached
[ 3.6 ]
- staging area์ ๋ณ๊ฒฝ์ฌํญ์ git-repository์ ์ฎ๊ธฐ๊ธฐ = commit
git commit -m"๋ฉ์ธ์ง"
//์ ๋ถ๋ค addํ๊ณ ๊ฐ์ ๋ฉ์ธ์ง์ ํจ๊ป commit ํ ๊บผ์ผ
git commit -am"๋ฉ์ธ์ง"
- git history ํ์ธํ๊ธฐ
git log
[ 3.7 ]
- ์ปค๋ฐ ๋จ์ : ๋ชจ๋ ํ๋ ์์ฑ, ํ์ด์ง ํ๋ ์์ฑ, ์๋ฏธ ์๋ ์ด๋ฆ ์ง์ ํ๊ธฐ
→ ํ์คํ ๋ฆฌ๋ง ๋ดค์ ๋ ๋ฐ๋ก ๊ตฌ๋ถํ ์ ์๋๋ก
- commit message : ๋ณดํต ํ์ฌํ, ๋์ฌ ex) init add fix
- fix 00 ๋ผ๋ ์ปค๋ฐ์ ๋ด์ฉ์๋ ์ ๋ง ๊ณ ์น ๋ด์ฉ ํ๋๋ง ๋ค์ด๊ฐ์ผ ํจ (๊ทธ๋ ์ง ์์ผ๋ฉด ์ฝ๋๋ฆฌ๋ทฐ, ํ์คํ ๋ฆฌ๋ฅผ ๋์๋ณผ ๋ ํท๊ฐ๋ฆผ)
[ 3.9 ]
- c.txt ํ์ผ ์์ ํ ์ญ์ ํ๋ ค๊ณ ํจ
rm c.txt
// Changes not staged for commit:
// deleted: c.txt ๋ผ๊ณ ๋จ๋ฉด์ ์ญ์ ํ๋ ํ์ผ์ ์๋์ผ๋ก staging area์ ์ฌ๋ ค์ค์ผํจ
git rm c.txt
// Changes to be committed:
// deleted: b.txt ๋ฐ๋ก ํ์ผ deleted๋ก ์ฌ๋ผ๊ฐ
- ํ์ผ์ด๋ฆ ๋ณ๊ฒฝํ๋ฉด git status์ ์ ์ฉ๋์ง ์์
mv c.txt newC.txt
//c๋ deleted, newC๋ untrctedํ์ผ๋ก ์ถ๊ฐ๋จ
git mv c.txt newC.txt
- - - - - - - - - - - - - - -
renamed: c.txt -> newC.txt
[ 3.10 ]
- git commit์ ๋ณ๊ฒฝ๋ ๋ด์ฉ ์์ธํ ๋ด์ฉ ๋ณด๊ธฐ
git log -p
git log --patch
-์ ํํ ์ด๋ค ํ์ผ์ด ์์ ๋๊ณ ์ด๋ค ๋ด์ฉ์ด ์ ๋ฐ์ดํธ ๋์๋์ง ํ์ธํ ์ ์์
-๋ณ๊ฒฝ๋ ํ์ผ ๋ด์ฉ์ ์ถ๊ฐ(+), ์ ๊ฑฐ(-), ์์ ๋ฐ ์ด๋ ๋ฑ์ด ์์ธํ ๋ํ๋จ
- git์ ๊ฐ commit์ ํ ์ค๋ก ๊ฐ๋ตํ๊ฒ ํ์
git log --oneline
- commit log๋ฅผ ์ค๋๋ ์์๋๋ก ๋ณด๊ณ ์ถ์ ๋
git log --oneline --reverse
- commit์ ํด๋๊ฐ๋ ๊ธฐ๋ณธ ์ค๊ธฐ =
Master๋ธ๋์น
- ๋ฐฉ๊ธ ๋ง commit์ ํ๋ค๋ฉด
HEAD
๋d
๋ฅผ ๊ฐ๋ฆฌํค๊ณ ์์
HEAD~2
: ๋ง์ง๋ง commit์์ 2๋ฒ์งธ commit
HEAD
์ฎ๊ธฐ๊ธฐ = commit ๋ฒ์ ๋ณ๊ฒฝํ๊ธฐ
//๋ธ๋์น ๋ณ๊ฒฝ (HEAD๋ฅผ ๋ค๋ฅธ ๋ธ๋์น๋ก ์ด๋)
git checkout <branch_name>
//์ปค๋ฐ ์ด๋ (HEAD๋ฅผ ํน์ ์ปค๋ฐ์ผ๋ก ์ด๋)
git checkout <commit_hash>
//์๋ ์ฐธ์กฐ (HEAD๋ฅผ ์๋์ ์ผ๋ก ์ด๋)
git checkout HEAD~<n>
//๋ธ๋์น ์์ฑ ๋ฐ HEAD ์ด๋ (๋ธ๋์น ์์ฑ๊ณผ HEAD ์ด๋์ ๋์์)
git checkout -b <new_branch_name>
[ 3.11 ]
git log
๋ช ๋ น์ ์ฌ์ฉํ ๋ ์ปค๋ฐ ๋ก๊ทธ์ ์ถ๋ ฅ ํ์์ ์ง์
//๊ฐ ์ปค๋ฐ์ ํ ์ค๋ก ์์ฝํ์ฌ ํ์
git log --pretty=oneline
//์ํ๋ ํ์์ ํฌ๋งท ๋ฌธ์์ด์ ์ฌ์ฉํ์ฌ ์ปค๋ฐ ๋ก๊ทธ๋ฅผ ์ถ๋ ฅ
git log --pretty=format:"<ํฌ๋งท ๋ฌธ์์ด>"
//๊ฐ ์ปค๋ฐ์ ๋ํ ์์ธ ์ ๋ณด๋ฅผ ํ์
git log --pretty=full
//full๊ณผ ์ ์ฌํ์ง๋ง ์ถ๊ฐ ์ ๋ณด(์: GPG ์๋ช
)๋ฅผ ํฌํจ
git log --pretty=fuller
//--graph ์ต์
๊ณผ ํจ๊ป ์ฌ์ฉํ์ฌ ์ปค๋ฐ ๊ทธ๋ํ๋ฅผ ๊ทธ๋ ค ํ์
git log --pretty=format:"%h %s" --graph
- ์๋ฆฌ ์ถ์ฒ ์์
log --graph --all --pretty=format:'%C(yellow)[%ad]%C(reset) %C(green)[%h]%C(reset) | %C(white)%s %C(bold red){{%an}}%C(reset) %C(blue)%d%C(reset)' --date=short
- alias๋ฅผ ์ด์ฉํด์ ์ ์ฅํด๋๋ฉด ๊ฐํธํจ
git config --global alias.histshortcut "log --graph --all --pretty=format:'%C(yellow)[%ad]%C(reset) %C(green)[%h]%C(reset) | %C(white)%s %C(bold red){{%an}}%C(reset) %C(blue)%d%C(reset)' --date=short"
- ์๊ฐํด๋ณด๋ ๋จ์ถํค์๋ ๋๋ฌด ๊ธธ์ด์ ์ญ์ ํ๊ณ ๋ค์ ์ค์ ํ ์์
cmhist
git config --global --unset alias.histshortcut //๋จ์ถํค์๋ ์ญ์
[ 3.12 ]
- log ์ฌํ
//์ต๊ทผ log 3๊ฐ๋ง
git log -3
//์ต๊ทผ log 3๊ฐ, oneline์ผ๋ก
git log --oneline -3
//ํน์ ์์ฑ์์ log๋ง
git log --authour="์์ฑ์"
//ํน์ ๋ ์ง ์ด์ ์ log๋ง
git log ---before="2023-10-07"
//commit title์ ํค์๋๊ฐ ํฌํจ๋ commit๋ง ๋ณด๊ณ ์ถ์
git log --grep="ํค์๋"
//์์ค ์ฝ๋ ์์์ ํน์ ๋ฌธ์์ด์ ๊ฒ์ํ๊ณ ์ถ์ ๋, ๊ทธ ๋ณ๊ฒฝ์ฌํญ์ ๊ฐ์ง log๋ฅผ ๋ณด๊ณ ์ถ์ ๋
git log -S "์ฐพ๊ณ ์ถ์ ํค์๋"
//๋ ์์ธํ ์๊ณ ์ถ๋ค๋ฉด patch์ ์ฝ์์ธ p๋ฅผ ๋ถ์ด๊ธฐ
got log -S "์ฐพ๋๋จ์ด" -p
//ํน์ ํ์ผ์ ์ปค๋ฐ์ ๋ณด๊ณ ์ถ์ ๋
git log ํ์ผ์ด๋ฆ.ํ์ฅ์
//๋ ์์ธํ ๋ณด๊ณ ์ถ๋ค๋ฉด
git log -p ํ์ผ์ด๋ฆ.ํ์ฅ์
//๊ฐ๋จํ ์ํ๋ง ํ์ธํ๋ค๋ฉด
git log -s ํ์ผ์ด๋ฆ.ํ์ฅ์
//HEAD์์๋ถํฐ 2๋ฒ์งธ log๊ฐ ๋ณด๊ณ ์ถ์ ๋
git log HEAD~2
//ํน์ commit ๋ด์ฉ๋ง ๋ณด๊ณ ์ถ์ ๋
git show HASHCODE์ฝ6์๋ฆฌ
//ํน์ commit ๋ด์ฉ ์ค ํน์ ํ์ผ๋ง ๋ณด๊ณ ์ถ์ ๋
git show HASHCODE ํ์ผ์ด๋ฆ.ํ์ฅ์
//2๊ฐ์ง์ HASH์ฝ๋๋ฅผ ์ด์ฉํด์ git diff ํ์ฉํ๊ธฐ
git diff HASHCODE_1 HASHCODE_2
[ 3.14 ]
git tag
== ํน์ ํ commit์ ๋ถ๋งํฌํ๋๊ฒ. ๋ณดํต ๋ฆด๋ฆฌ์ฆ ๋ฒ์ ์ ์ด์ฉํจ.
-์๋ฏธ์๊ณ ์ผ๊ด์ ์ผ๋ก ์ฌ์ฉํ๊ธฐ
[ 3.15 ]
- ํ๊ทธ ์ถ๊ฐ
git tag ํ๊ทธํค์๋
- ํน์ commit์ ํ๊ทธ ์ถ๊ฐํ ๋
git tag ํ๊ทธํค์๋ HASHCODE
- ํ๊ทธ์ ๋ถ๊ฐ์ ์ธ ์ ๋ณด๋ฅผ ๋ฃ๊ณ ์ถ์ ๋(-a), ์ด ๋ฉ์ธ์ง๋ฅผ ์ถ๊ฐํ๊ฒ ๋ค(-m)
git tag ํ๊ทธํค์๋ HASHCODE -am "release note"
- ๋ง๋ค์ด์ง ๋ชจ๋ ํ๊ทธ ํ์ธํ๊ธฐ
git tag
- ํน์ ๋ฌธ์ ํ๊ทธ ํ์ธํ๊ธฐ
git tag -l "์์ผ๋์นด๋*"
- ํ๊ทธ ์ญ์ ํ๊ธฐ
git tag -d ํ๊ทธํค์๋
- ํน์ ํ๊ทธ๋ก ์ด๋ํ๊ธฐ
git checkout ํ๊ทธํค์๋
- ๋ง๋ ํ๊ทธ๋ฅผ ์๋ฒ์ ์ ๋ก๋ ํ ๋ (์ผ๋ถ ๋๊ธฐํ)
git push origin ํ๊ทธํค์๋
- ๋ชจ๋ ํ๊ทธ๋ฅผ ์๋ฒ์ ์ ๋ก๋ ํ ๋
git push origin --tags
- ํน์ ํ๊ทธ๋ง ์ญ์
git push origin --delete ํ๊ทธ๋ฒ์
'๐๏ธ Tools' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Git] ๊ฐ์ธ ํ์ต Repository๋ฅผ ์ํ Git ์ปค๋ฐ ๋ฉ์์ง ์ปจ๋ฒค์ (0) | 2023.12.11 |
---|---|
[์ธํ ๋ฆฌ์ ์ด] ๋จ์ถํค - Window์ฉ (0) | 2023.12.02 |
[Git] ๋๋ฆผ์ฝ๋ฉ-2. ๋ฉ์ง๊ฒ ์ ์ ํ๊ธฐ (0) | 2023.11.23 |
[Figma] UXUI ๋์์ธ ์ ์ฉํ ํ๋ฌ๊ทธ์ธ (0) | 2023.11.21 |
[Git] Unix ๋ช ๋ น์ด VS PowerShell (1) | 2023.11.20 |