๋ฒ์ ๊ด๋ฆฌ ์ํํธ์จ์ด
๊ฐ์ฅ ๋์ค์ ์ผ๋ก ์ฐ์ธ๋ค
// ์์
ํ์ผ์ ํฐ๋ฏธ๋๋ก ์ด๊ณ
git config --global user.email "???@???.com"
git config --global user.name "username"
// ์์
ํด๋๋ฅผ vscode๋ก ์ด๊ณ
git init
git init ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํ๋ฉด git์ด ์์ ํด๋๋ฅผ ์ฃผ์ํ๋ค
git add ํ์ผ๋ช
.ํ์ฅ์
git commit -m '์ฝ๋ฉํธ'
add ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํด staging area ๋ก ํ์ผ์ ์ ์ฅํด๋๋ ๊ณผ์ ์ ์คํ ์ด์ง,
์คํ ์ด์ง ๋ ํ์ผ์ repository๋ก ์ด๋ ์ํค๋๊ฒ (commit)์ ๋ฒ์ ์์ฑํ๋ค ๋ผ๊ณ ํ๋ค
๊ตณ์ด add ์ commit ์ ๋๋๋ ์ด์ ๋
๋ชจ๋ ํ์ผ์ ๋ค ์ ์ฅํ์ง ์์๋ ๋๊ธฐ ๋๋ฌธ
์๋ฅผ ๋ค์ด ์ด๋ฏธ์ง ํ์ผ์ ์ด์ง๊ฐํ๋ฉด ๋ณ๊ฒฝ๋์ง ์๊ธฐ๋๋ฌธ์ ๋งค๋ฒ ์ ์ฅํด ์ค ํ์๊ฐ ์๋ค
git add . // ๋ชจ๋ ํ์ผ ์คํ
์ด์ง
git status // ์ด๋ค ํ์ผ์ ์คํ
์ด์ง ํด ๋์๋์ง, ์์ ์ด ๋์๋์ง ์ ์ ์์
git log --all --oneline // ์ง๊ธ๊น์ง ์ปค๋ฐ ํ ๋ด์ฉ ํ์ธ
git diff // ์ต๊ทผ ๋ณ๊ฒฝ์ฌํญ ์๋ ค์ค
git difftool // vim ์ ์ด์ฉํ ๋ณ๊ฒฝ์ฌํญ ์๋ ค์ค
git difftool '์ปค๋ฐid' '์ปค๋ฐid' // ์ปค๋ฐid๋ฅผ ์
๋ ฅํด์ ํน์ ๋ฒ์ ๋ผ๋ฆฌ์ ์ฐจ์ด์ ์ ์๋ ค์ค
git graph ๋ฅผ ์ฌ์ฉํ๋ฉด ํจ์ฌ ๋ ๊น๋ํ๊ฒ ๋ณผ ์ ์๋ค
์ด๋ฐ์์ผ๋ก
commit์ ๋ณต์ฌ๋ณธ ๋ง๋ค๊ธฐ
git branch '์ด๋ฆ'
// '์ด๋ฆ' ์ด๋ผ๋ ์ด๋ฆ์ผ๋ก ์ต๊ทผ ์ปค๋ฐ์ ์ฌ๋ณธ์ ๋ง๋ฌ
git switch '์ด๋ฆ'
// '์ด๋ฆ' ์ด๋ผ๋ branch๋ก ์ด๋
gitgraph
๋ก ๋ณธ branch
secondbranch ์์ ์์ ์ ํ๋ค๊ฐ
master ๋ก ๋ณ๊ฒฝํ๋ฉด?
๋ธ๋์น๋ฅผ ๋ณต์ ํ๋ ๋ถ๊ธฐ๋ก ๋๋์ ๊ฐ๋ค
master ๋ธ๋์น๋ก ์ด๋ ํ ํ
git merge '๋์ ๋ธ๋์น'
// ์ด๋ ๊ฒ ์
๋ ฅํ๋ฉด ๋์๋ธ๋์น๊ฐ master ๋ธ๋์น์ ๋ณํฉ(merge)๋๋ค !
gitgraph
๋ก ๋ณธ merge
์์๋ค!
๊ทธ๋ ๋ค๋ฉด
๋ธ๋์น์ ๋ธ๋์น์ ๋ธ๋์น์โฆโฆ
์ด๋ฐ์์ผ๋ก๋ ๋ง๋ค ์ ์์๊น ?
๋ ๊ฒ ๊ฐ์์ ๋ฐ๋ก ํด๋ดค๋ค
๋๋ฌด ์์๋ค !
๋ณํฉํ ๋ ๋๊ฐ์ ํ์ผ์ ์์ ํด ๋ณํฉํ๊ฒ ๋๋ฉด conflict error ๊ฐ ๋ฐ์ํ๋ค
๊ฐ๋ฐํ๋ ๊ณผ์ ์์, ํ๋์ ๊ธฐ๋ฅ์ ๋ํ ๋ณ๊ฒฝ ์๊ตฌ์ฌํญ์
๋ฐ์ํ๊ธฐ ์ํด ํน์ ํ์ผ์ ๋ณ๊ฒฝํ๊ฒ ๋๊ณ ์ด๋ ํด๋น ํ์ผ๊ณผ ์ ๋ณด๋ฅผ
์ฃผ๊ณ ๋ฐ๋ ๋ค๋ฅธ ํ์ผ๋ก ์ ํ๋์ด ์ถ๊ฐ์ ์ธ ๋ณ๊ฒฝ ์์ ์ ์ํ๊ฒ ๋๋ค. ์ด ๋,
์ฌ๋ฌ ๊ฐ๋ฐ์๋ค์ด ์๋ก ํ์ํ์ง ์์ ์ฑ ๋ค๋ฅธ ๊ธฐ๋ฅ์ ๋์ ๋ณ๋ ฌ์ ์ผ๋ก
๋ณ๊ฒฝํ๋ค๊ฐ ๋์ผํ ํ์ผ์ ๋ณ๊ฒฝํ ๊ฒฝ์ฐ ๋ณํฉ ์ถฉ๋(merge conflict)์ด ๋ฐ์ํ
์ ์๋ค(Berzins and Dampier, 1996). ์ด๋ ๊ฒ ํ์ผ ๊ฐ ์ ๋ณด ๊ตํ์ผ๋ก ์ธํด
์ข ์์ฑ์ด ์กด์ฌํ๋ ์์คํ ์ ๋์ ๋ณ๋ ฌ์ ์ผ๋ก ๊ฐ๋ฐํ๋ค๊ฐ ์ถฉ๋์ด ๋ฐ์ํ๋
์ํฉ์ ๊ทธ๋ฆผ 1.3๊ณผ ๊ฐ์ด ํํํ ์ ์๋ค. ๋ณํฉ ์ถฉ๋์ ์ ํ์๋ ๊ตฌ๋ฌธ ์ถฉ๋,
์๋ฏธ ์ถฉ๋, ๊ตฌ์กฐ ์ถฉ๋ ๋ฑ์ด ์์ผ๋ฉฐ ์ด๋ก ์ธํด ํ์ผ ๋ด์์ ์ถฉ๋์ด ๋ฐ์ํ
์ ์๋ค(Mens, 2002). ์ด๋ฅผ ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ๋ก ์ ๋ํ ์ฐ๊ตฌ๋ก๋ ์ถฉ๋์ด ๋ฐ์ํ
์ดํ ์์ ๋ ๋ด์ญ์ ์ถ๊ฐ๋ก ์์ ํ๊ฑฐ๋ ์ ๊ฑฐํจ์ผ๋ก์จ ํด๊ฒฐํ๋
์ ๋ต(Munson and Dewan, 1994; Edwards, 1997), ์ถฉ๋์ ๋ฐ์์ํจ ๋ ๊ฐ๋ฐ์๊ฐ
๊ฐ์์ ๋ฒ์ ์ ํตํฉํ๊ธฐ ์ํด ํ๋ ฅํ๋ ๋ฐฉ๋ฒ๋ก (Brosch et al., 2009) ๋ฑ ๋ณํฉ
์ถฉ๋์ ๋ํ ์ฐ๊ตฌ๊ฐ ํ๋ฐํ ์ด๋ฃจ์ด์ ธ ์๋ค.
(์ถ์ฒ) : Identifying Potentially Conflicting Files by Predicting Change Probability using Software Change Log Data( ์ํํธ์จ์ด์ ํ์ผ ๋ณ๊ฒฝ ํ๋ฅ ์์ธก์ ํตํ ์ถฉ๋ ๊ฐ๋ฅ์ฑ์ด ์๋ ํ์ผ์ ์๋ณ - ์ด์ฃผ์ฉ)
๋ ผ๋ฌธ์ ๋ค ์ฝ์ด๋ณด๊ธฐ์ ์์ ์ง์์ผ๋ก ๋๋ฌด ์ด๋ ค์ ๊ณ
๋ด๊ฐ ์ป๊ณ ์ ํ๋ ์์ ์ ๊ฐ๋ฐ์๋ค์ ๊ฐ๋ฐํ์ ๊ณผ์ ์์ ๊ฐ์ด ๋์๋ค๋ฐ์ ์ผ๋ก ๊ฐ๋ฐํ๋๋ฐ
์๋ฅผ๋ค์ด ์คํ์์ค ํ๋ก๊ทธ๋จ์ ๊ฒฝ์ฐ ์๋ก ํ์ํ์ง ์๊ณ ๋ค๋ฅธ ๊ธฐ๋ฅ์ ๋์์ ๋ณ๋ ฅ์ ์ผ๋ก ๊ฐ๋ฐํ๋ค๊ฐ
๊ฐํน ๋์ผํ ํ์ผ์ ๋ณ๊ฒฝํ๋ฉด ์ถฉ๋์ด ์ผ์ด๋๋ค๋ ๊ฒ์ด๋ค
ํฐ๋ฏธ๋ ์ํฉ์ ์ด๋ ๋ค
์์ชฝ์ด master branch
์๋ซ์ชฝ์ด conflictTest branch ์ธ๋ฐ
๋ณํฉํ๋ ค๊ณ ํ๋๊น ์ค๋ฅ๊ฐ ๋ฐํํ๋ค๋ ๊ฒ์ด๋ค
vscode ๋ ๊ณ ๋ง๊ฒ๋ 4๊ฐ์ง ์ต์ ์ผ๋ก conflict error ๋ฅผ ํด๊ฒฐํ ์ ์๊ฒ ์ต์ ์ ๋ง๋ค์ด ๋์๋ค
Accept Current Change
- HEAD, ๊ธฐ์กด(master) ๋ธ๋์น๋ฅผ ์ ์ฉ
Accept Incoming Change
- ๋ณ๊ฒฝ๋ ๋ถ๋ถ์ ์ ์ฉ. ๋ณํฉ ๋์์ด ๋ ๋ธ๋์น์ ๋ด์ฉ์ ์ ์ฉ
Accept Both Change
- ๋ ๋ค ์ ์ฉ
- ๋ฐฉ์์ด ์กฐ๊ธ ํน์ดํ๋ฐ ๋ณ๊ฒฝ๋ ๋ถ๋ถ ๋ ๋ค๋ฅผ ํ๊บผ๋ฒ์ ์ ์ฉํ๋ค
Compare Change
- error ๋ถ๋ถ์ ๋น๊ต๋ถ์ ํ ์ ์๊ฒ ๋ณด์ฌ์ค
์ง๊ธ๊น์ง ๋ฐฐ์ ๋ ๋ฐฉ์์ 3-way merge ๋ผ๊ณ ํ๋๋ฐ
๋ง์ฝ HEAD ๋ธ๋์น์ ์์ ์ฌํญ์ด ์๊ณ
์์ ํ ๋ธ๋์น๋ฅผ HEAD ๋ธ๋์น์ ๋ณํฉํ๊ณ ์ถ๋ค๋ฉด
์ถ์ฒ : https://backlog.com/git-tutorial/kr/stepup/stepup1_4.html
์ด๋ฐ์์ผ๋ก ์์ ํ ๋ธ๋์น(bugfix)๋ฅผ HEAD ๋ธ๋์น(master)๋ก ๋ฐ๊ฟ์ค์ผ๋ก์จ ๊ฐ๋จํ๊ฒ ๋ณํฉํ ์ ์๋ค
gitgraph
๋ก fast-forward merge ๋ฅผ ํ๋ ค๊ณ ํ๋ฉด ์ด๋ฐ ์ฐฝ์ด ๋จ๋๋ฐ
Create a new commit even if fast-forward is possible
(fast-forward ๊ฐ ๊ฐ๋ฅํ๋๋ผ๋ ์ ์ปค๋ฐ์ ๋ง๋ค๊น์?)
์ต์ ์ ์ฒดํฌํด์ ํ๋ฉด
์ฒดํฌํ์๋์ ์ฒดํฌํ์ง ์์์๋์ ์ฐจ์ด
๊ฐ์ ๋ก fast-forward merge ๋ฅผ ํ๊ณ ์ถ์ ๋ ์ด๋ค
์ ์ํฉ์ฒ๋ผ HEAD ๋ธ๋์น์ ์์ ์ฌํญ์ด ์๋ค๋ฉด ๋ฐ๋ก ํ ์ ์์ง๋ง
๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ์๋
์ ๊ท๋ธ๋์น์ ์์์ ์ HEAD ๋ธ๋์น ์ต๊ทผ ์ปค๋ฐ์ผ๋ก ์ฎ๊ธด ๋ค์ ๋ณํฉํ๋ค
์ ์ด๊ฑธ ์ฐ๋๋ฉด
์ ๋ถ 3-way merge ๋ฅผ ํ๋ฉด ๋ณต์กํ๊ณ log ์ถ๋ ฅ์ ๋ณํฉ๋ ๋ค๋ฅธ ๋ธ๋์น๋ค์ ์ปค๋ฐ๋ด์ฉ๋ ์ถ๋ ฅ๋์
์์๋ณด๊ธฐ ํ๋ค์ด์ ๊ทธ๋ ๋ค๊ณ ํ๋ค
์ถ๊ฐ๋ก squash and merge ํ๋ ๋ฐฉ๋ฒ๋ ์๊ณ
์ถ๊ฐ๋ก
๋ก์ปฌ ๋ฆฌํฌ์งํ ๋ฆฌ์ ํ์ผ์ ๋ฆฌ๋ชจํธ ๋ฆฌํฌ์งํ ๋ฆฌ๋ก ์ฌ๋ฆฌ๋ ๊ฒ์ 'ํธ์(Push)'
๋ฆฌ๋ชจํธ ๋ฆฌํฌ์งํ ๋ฆฌ์์ ๋ก์ปฌ ๋ฆฌํฌ์งํ ๋ฆฌ๋ก ๋ด๋ ค๋ฐ๋ ๊ฒ์ 'ํ(Pull)'
๋ผ๊ณ ํ๋๋ฐ
์ด๋ฌํ ๋ช ๋ น์ ์ด์ฉํด์ ๊ฐ์ ธ์ฌ์๋, ์ฌ๋ฆด์๋ ์๋ค.
vscode ์๋ ์ฌ๊ธฐ์ ์ฝ๊ฒ ํ ์ ์๋ค
์ค๋ฅ๊ฐ ์ ๋ง์ ๋ง ๋ง์ด ๋ฌ๋ค
์ ๋ง๋ก ์ ๋ง๋ก ๋ง์ด๋ฌ๋ค
์๋ ์ ๋ง ์ง์ง๋ก ๋ง์ด๋ฌ๋ค
ํ๋ ํด๊ฒฐํ๋ฉด ํ๋ ์ค๋ฅ๋จ๋ ์์ค
๊ถ๊ธํด์ ์ด๊ฒ์ ๊ฒ ๊ฑด๋๋ ค๋ณธ๊ฒ ๋ฌธ์ ๋ผ๋ฉด ๋ฌธ์ ์ผ ์ ์๊ฒ ๋ค ๐
๋ญ๋ง ์๋ชป ๋๋ฅด๋ฉด ์ปค๋ฐ์ด ๊ฐ์๊ธฐ ์๋๋ค
๊ฒฝ๋ก๊ฐ ์๋ชป๋๋ค๊ณ ํ์ง๋ฅผ ์๋, ๋๋ ํ ๋ฆฌ๋ฅผ ์ฐพ์ ์ ์๋ค๊ณ ํ์ง๋ฅผ ์๋
์ฒ์ ์จ๋ณด๋ ๊ฑฐ๋ผ๊ณ ํด๋ ํ๋๋ง ๋ฑ ์๋ชป๊ฑด๋๋ ค๋ ์ค๋ฅ๊ฐ ๋๋ค๋
์ ๋ง ๋๋จํ ๋ฌด์ญ์ง ์์ ์ ์์๋ค
๊ทธ๋ผ์๋ ๊ฐ๋ฐ์๊ฐ ๊น์ ๋ค๋ฃฐ ์ ์๋ค๋ฉด ํ์ฌ์์ ๋ชป์ด๋ค๊ณ ํ ์ ๋๋ก ์ค์ํ๊ธฐ์
์ธ์ ๊ฐ๋ ๊ผญ ์ ๋๋ก ๊ณต๋ถํด์ผ๊ฒ ๋ค๊ณ ์๊ฐํ๋ค
์ค๋์ ํํ ๋ฆฌ์ผ์ด๊ณ ์ ๋ง ๊ฐ๋จํ ๊ธฐ๋ฅ๋ค๋ง ๋ฐฐ์ ์ง๋ง ๋ง์ด๋ค
๋ฒ์ ๊ด๋ฆฌ, ๊ณผ๊ฑฐ๋ก ๋์๊ฐ ์ ์๋ค๋ ์
๋ง์น ํ์๋จธ์ ์ ํ๊ณ ์ฌํํ๋ ๋๋์ด ๋๋ฌด ๋ญ๋ง์ ์ด๋ค
์ค์ ๋ก๋ ์ฝ๋๋ฅผ ์ด์ ์ผ๋ก ๋๋๋ฆฐ๋ค๋๊ฒ ๊ทธ๋ ๊ฒ ์ข์ ์๋ฏธ๊ฐ ์๋ ๊ฒ ๊ฐ์ง๋ง ๐ซข