๐๊น์์ ๋ฒ์ ์ด๋?
๋ฌธ์๋ฅผ ์์ ํ๊ณ ์ ์ฅํ ๋๋ง๋ค ์๊ธฐ๋ ๊ฒ
* ์์ ํธ๋ฆฌ : ํ์ผ ์์ , ์ ์ฅ ๋ฑ์ ์์ ์ ํ๋ ๋๋ ํฐ๋ฆฌ๋ก '์์ ๋๋ ํฐ๋ฆฌ(working directory)'๋ผ๊ณ ๋ ํ๋ค.
๋ง๋ hello-git ๋๋ ํฐ๋ฆฌ๊ฐ ์์ ํธ๋ฆฌ๊ฐ ๋๋ค. ์ฆ ์ฐ๋ฆฌ ๋์ ๋ณด์ด๋ ๋๋ ํฐ๋ฆฌ๊ฐ ๋ฐ๋ก ์์ ํธ๋ฆฌ์ด๋ค.
* ์คํ ์ด์ง : ๋ฒ์ ์ผ๋ก ๋ง๋ค ํ์ผ์ด ๋๊ธฐํ๋ ๊ณณ, ์คํ ์ด์ง ์์ญ(staging area)๋ผ๊ณ ๋ถ๋ฅด๊ธฐ๋ ํ๋ค.
์๋ฅผ ๋ค์ด ์์ ํธ๋ฆฌ์์ 10๊ฐ์ ํ์ผ์ ์์ ํ๋๋ฐ 4๊ฐ์ ํ์ผ๋ง ๋ฒ์ ์ผ๋ก ๋ง๋ ๋ค๋ฉด 4๊ฐ์ ํ์ผ๋ง ์คํ ์ด์ง๋ก ๋๊ฒจ์ฃผ๋ฉด ๋๋ค.
* ์ ์ฅ์(repository) : ์คํ ์ด์ง์์ ๋๊ธฐํ๋ ํ์ผ์ ๋ฒ์ ์ผ๋ก ๋ง๋ค์ด ์ ์ฅํ๋ ๊ณณ
* ์คํ ์ด์ง์ ์ ์ฅ์๋ ๋์ ๋ณด์ด์ง ์์. ์ด๊ณณ์ ๊น์ ์ด๊ธฐํ ํ์ ๋ ๋ง๋ค์ด์ง๋ .git ๋๋ ํฐ๋ฆฌ ์์ ์จ์ ํ์ผ ํํ๋ก ์กด์ฌํ๋ ์์ญ
๐๊น์ ์ปค๋ฐํ๊ธฐ
1) hello.txt ํ์ผ ๋ฌธ์๋ฅผ ์์ ํ๊ณ ์ ์ฅํ๋ฉด ๊ทธ ํ์ผ์ [์์ ํธ๋ฆฌ]์ ์๊ฒ ๋๋ค.
2) ๊ทธ๋ฆฌ๊ณ ์์ ํ hello.txt ํ์ผ์ ๋ฒ์ ์ผ๋ก ๋ง๋ค๊ณ ์ถ์ ๋ [์คํ ์ด์ง]์ ๋ฃ๋๋ค.
3) ํ์ผ ์์ ์ ๋๋ด๊ณ ์คํ ์ด์ง์ ๋ค ๋ฃ์๋ค๋ฉด ๋ฒ์ ์ ๋ง๋ค๊ธฐ ์ํด ๊น์๊ฒ '์ปค๋ฐ(commit)' ๋ช ๋ น์ ๋ด๋ฆฐ๋ค.
4) ์ปค๋ฐ ๋ช ๋ น์ ๋ด๋ฆฌ๋ฉด ์๋ก์ด ๋ฒ์ ์ด ์์ฑ๋๋ฉฐ ์คํ ์ด์ง์ ๋๊ธฐํ๋ ํ์ผ์ด ์ ์ฅ์์ ์ ์ฅ๋๋ค.
๐ ์์ ํ ํ์ผ์ ์คํ ์ด์ง์ ์ถ๊ฐํ๊ธฐ(์คํ ์ด์ง) - git add ์ฌ์ฉ

add๋ก ํ์ผ์ ์คํ ์ด์ง ํ๊ณ ๋๋ฉด changes to be committed : ์ฆ ๊ณง ์ปค๋ฐํ ํ์ผ์์ ์๋ ค์ค๋ค.
๐ ์คํ ์ด์ง์ ์๋ ํ์ผ ์ปค๋ฐํ๊ธฐ - git commit -m"๋ฉ์ธ์ง"
- ์ปค๋ฐ์ ํ ๋๋ ๊ทธ ๋ฒ์ ์ ์ด๋ค ๋ณ๊ฒฝ ์ฌํญ์ด ์์๋์ง ํ์ธํ๊ธฐ ์ํด ๋ฉ์์ง๋ฅผ ํจ๊ป ๊ธฐ๋ก
- ๋ฉ์ธ์ง : -m์ต์ ์ ๋ถ์ฌ ๋ฉ์ธ์ง๋ฅผ ์ถ๊ฐํ๋ค.

- ๋ฐฉ๊ธ ์ปค๋ฐํ ๋ฉ์ธ์ง ์์ ํ๊ธฐ - git commit --amend
๐ ๋ฒ์ ์ด ์ ๋๋ก ๋ง๋ค์ด ์ก๋์ง ํ์ธ - git log
- ์ปค๋ฐํ ๋ฒ์ ์ ๋ํ ์ค๋ช ์ด ๋์ด(์ปค๋ฐ์ ๋ง๋ ์ฌ๋, ๋ง๋ ์๊ฐ, ์ปค๋ฐ ๋ฉ์ธ์ง)

๐ ์คํ ์ด์ง๊ณผ ์ปค๋ฐ ํ๊บผ๋ฒ์ ์ฒ๋ฆฌํ๊ธฐ - git commit -am "๋ฉ์ธ์ง"
- ํ๋ฒ์ด๋ผ๋ ์ปค๋ฐํ ์ ์ด ์๋ ํ์ผ์ ๋ค์ ์ปค๋ฐํ ๋๋ง ์ฌ์ฉ ๊ฐ๋ฅ
- ์์ ๋ ํ์ผ์ ์ ์ฅ ํ ๋ค์ ์คํ ์ด์ง+์ปค๋ฐ ์ฒ๋ฆฌ

๐ git log ๋ด ์ปค๋ฐ ๋ก๊ทธ ์ดํด๋ณด๊ธฐ
- HEAD -> master : ์ต์ ๋ฒ์
- commit ์ ์๋ฌธ๊ณผ ์ซ์ ๊ธด ๋ฌธ์์ด : ์ปค๋ฐ์ ๊ตฌ๋ณํ๋ ์์ด๋ (์ปค๋ฐ ํด์, ๊น ํด์)
๐ ๋ณ๊ฒฝ ์ฌํญ ํ์ธํ๊ธฐ - git diff
- ์์ ํธ๋ฆฌ <-> ์คํ ์ด์ง, ์คํ ์ด์ง<->repository ๋น๊ต

๐๋ฒ์ ์ ํ์ผ ์ํ ์์๋ณด๊ธฐ
- tracked : ๊น์ด ์ถ์ ํ๊ณ ์๋ ํ์ผ, ํ ๋ฒ ์ปค๋ฐ๋ ํ์ผ์ ๊น์ด ๊ณ์ ํ์ผ ์์ ์ฌ๋ถ๋ฅผ ํธ์
- untracked : ํ๋ฒ๋ ๊น์์ ๋ฒ์ ๊ด๋ฆฌ๋ฅผ ํ์ง ์์ ์์ ๋ด์ญ ์ถ์ ์ด ๋์ง ์๋ ํ์ผ
๐๋ฒ์ ๊ด๋ฆฌ์์ ํ์ผ ์ ์ธํ๊ธฐ
๋ฒ์ ๊ด๋ฆฌ์ค์ธ ๋๋ ํฐ๋ฆฌ ์์์ ๊ด๋ฆฌํ์ง ์์ ํน์ ํ์ผ ๋๋ ๋๋ ํฐ๋ฆฌ๊ฐ ์๋ค๋ฉด .gitignore ํ์ผ์ ๋ง๋ค์ด ๋ชฉ๋ก์ ์ง์ ํ๋ค.
ex) ๊ฐ์ธ์ ์ผ๋ก ๋ฉ๋ชจํ ํ์ผ, ํ๋ก๊ทธ๋จ ์ฌ์ฉ ์ค ์๋์ผ๋ก ์์ฑ๋ swp ํ์ผ, ๋ฐฑ์ ํ์ผ ๋ฑ
.gitignore ํ์ผ ์์ ๋ค์๊ณผ ๊ฐ์ด ํ์ผ, ๋๋ ํฐ๋ฆฌ, ํน์ ํ์ฅ์์ ํ์ผ์ ์ ์ด๋๋ฉด ํด๋น๋ง ๋ฒ์ ๊ด๋ฆฌ์์ ์ ์ธ์ํจ๋ค.
mynote.txt
temp/
.swp
-> mynote๋ผ๋ ํ ์คํธํ์ผ, temp๋ผ๋ ๋๋ ํฐ๋ฆฌ, swp๋ฅผ ํ์ฅ์๋ก ๊ฐ์ง๋ ๋ชจ๋ ํ์ผ์ ์ ์ธ
๐๋ฒ์ ๋ง๋๋ ๋จ๊ณ๋ง๋ค ํ์ผ ์ํ ์์๋ณด๊ธฐ
- ํ ์ปค๋ฐ์ ๋๊ฐ์ง ํ์ผ์ ์ปค๋ฐํ๋ฉด์ ๋ฉ์ธ์ง๋ฅผ ์ ์๋ค๋ฉด ๊ทธ ๋ฉ์ธ์ง๋ ๋ ํ์ผ ๋ชจ๋์ ์ ์ฉ๋๋ค.
- git log --stat์ ์ด์ฉํ๋ฉด ์ปค๋ฐ ๋ฉ์ธ์ง์ ๊ด๋ จ๋ ํ์ผ์ด ๋์ด๋๋ค.
๐unmodified, modified, staged ์ํ
- unmodified : ์์ ๋์ง ์์ ์ํ (working tree clean)
- modified : ์์ ๋ง ๋์ด์๋ ์ํ, ์คํ ์ด์ง์ ์ฌ๋ผ๊ฐ์ง ์์ ์ํ
- staged : gid add๋ก ์คํ ์ด์ง์ ์ฌ๋ ค์ ธ์๊ณ , ์ปค๋ฐ์ด ๋์ง ์์ ์ํ (Changes to be committed)
* ์ปค๋ฐ์ด ๋๋ ํ์ผ์ ๋ค์ unmodified๋ก ๋์๊ฐ๋ค.
๐์์ ํธ๋ฆฌ์์ ์์ ํ ํ์ผ ๋๋๋ฆฌ๊ธฐ - git checkout/ git restore
hello.txt์ ๋ด์ฉ์ ์์ ํ git status๋ฅผ ํ์ธํด๋ณด๋ฉด modified : hello.txt๊ฐ ๋์จ๋ค.
๊ทธ๋ฆฌ๊ณ ๊ทธ ์์ use "git store <file>..."to discard changes in working directory๋ผ๊ณ ๋์์๋ค.
git restore hello.txt๋ผ๊ณ ์ ๋ ฅํ๋ฉด ๋ง์ง๋ง์ผ๋ก ์์ ํ๋ ์ฌํญ์ด ์ฌ๋ผ์ง๋ค.
๐์คํ ์ด์ง ๋๋๋ฆฌ๊ธฐ - git reset HEAD ํ์ผ ์ด๋ฆ
hello.txtํ์ผ์ ์์ ํ ํ git add๋ก ์คํ ์ด์งํ๋ค.
git reset HEAD ํ์ผ ์ด๋ฆ์ ์ฌ์ฉํ๋ฉด
Unstaged changes after reset์ด๋ผ๋ ๋ฉ์ธ์ง๊ฐ ๋์จ๋ค.
๊ทธ ํ ๋ค์ git status๋ฅผ ํ์ธํ๋ฉด
Changes not staged for commit ์ด๋ผ๋ ๋ฉ์ธ์ง๊ฐ ๋จ๋ฉฐ ํ์ผ์ด ์คํ ์ด์ง ์ฌ๋ผ๊ฐ๊ธฐ ์ ์ํ๋ก ๋์์จ ๊ฒ์ ์ ์ ์๋ค.
๐์ปค๋ฐ ๋๋๋ฆฌ๊ธฐ - git reset HEAD^^ (cmder์์๋ ^^๋ก ํด์ผ more? ์ด๋ผ๋ ์ค๋ฅ๊ฐ ์๋จ)
- git reset HEAD^^ ๊ฐ์ฅ ์ต๊ทผ์ ํ ์ปค๋ฐ์ ๋๋๋ฆฌ๊ธฐ
- git reset (๊ฐ๊ณ ์ํ๋)์ปค๋ฐํด์ : ํน์ ์ปค๋ฐ์ผ๋ก ๋๋๋ฆฌ๊ธฐ (์ด๋ ํน์ ์ปค๋ฐ์ด ๊ฐ์ฅ ์ต๊ทผ ์ปค๋ฐ์ด ๋๋ฉฐ ๊ทธ ์ดํ ์์ ํ ๊ฒ์ ์ฌ๋ผ์ง)
-git revert (์ทจ์ํ๋ ค๋)์ปค๋ฐํด์ : ์ปค๋ฐ ๋๋๋ฆด ๋ ์ทจ์ํ ์ปค๋ฐ์ ๋จ๊ฒจ๋๊ธฐ
'Python > Git & GitHub' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Do it! Git&Git hub ์ ๋ฌธ] 04 ๊นํ๋ธ๋ก ๋ฐฑ์ ํ๊ธฐ (0) | 2022.07.17 |
---|---|
[Do it! Git&Git hub ์ ๋ฌธ] 03 ๊น๊ณผ ๋ธ๋์น (0) | 2022.07.17 |
[Do it! Git&Git hub ์ ๋ฌธ] 01 ๊น ์์ํ๊ธฐ (0) | 2022.07.16 |