https://sectumsempra.tistory.com/109
์์์ ์์ฑํ ๊ธ ๋ค์ ๋จ๊ณ์ ๊ฐ์์ด๋ค. ์ด ๊ฐ์์์๋ ๋ธ๋์น ์์ฑ ๋ฐ ๋ณํฉ์ ๋ํด ์ค์ ์ ์ผ๋ก ๋ค๋ฃฌ๋ค.
Git ๋ธ๋์น์ ์ดํด
๐ก branch๋?
๐กbranch๋?
๋ณธ๋์ ์์ค์ฝ๋๋ก๋ถํฐ ํ์ํ ๋ ๋ฆฝ์ ์ธ ์์ ๊ณต๊ฐ์ผ๋ก, ์ต์ ์ปค๋ฐ์ ๊ฐ๋ฆฌํค๋ ์ผ์ข ์ ํฌ์ธํฐ์ด๋ค.
๐กhead๋?
ํ์ฌ ๋ธ๋์น๋ฅผ ๊ฐ๋ฆฌํค๋ ์ผ์ข ์ ํฌ์ธํฐ์ด๋ค.
์ ์ํ์์ ๋๋ฒ์งธ ์ปค๋ฐ์ ์์ฑํ๋ฉด ์๋์ ๊ฐ์ด ๋๋ค.
๋ ์ฌ๊ธฐ์ feature-login์ด๋ผ๋ ๋ธ๋์น๋ฅผ ์์ฑํ๋ฉด ์๋์ ๊ฐ์ ์ํ๊ฐ ๋๋ค.
git branch feature-login
์ด์ feature-login๋ธ๋์น์์ ์๋ก์ด ํ์ผ์ ๋ง๋ค๊ณ ์ปค๋ฐ์ ํ๋ฉด ์๋์ ๊ฐ์ด ๋๋ค.
master๋ธ๋์น๋ก ์ฒดํฌ์์ ํ git log๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํ๋ฉด ์๋์ ๊ฐ์ด ๋๋ค.
์ฌ๊ธฐ์ ์ ์ ์๋ ์ฌ์ค์ ๋ค์๊ณผ ๊ฐ๋ค.
1. Head๋ checkout ๋์ ๋ธ๋์น๋ก ์ด๋ํ๋ค.
2. ๋ก์ปฌ ์ ์ฅ์์ ์ํ๋ HEAD๊ฐ ๊ฐ๋ฆฌํค๋ ๋ง์ง๋ง ์ปค๋ฐ์ด ์ต์ ์ด ๋๊ณ ์์ ๋๋ ํ ๋ฆฌ์ ํ์ผ ์ํ๋ ๋ณ๊ฒฝ๋๋ค.
Merge ์ค์ต
์ค์ต์ ์ํด master ๋ธ๋์น์ “commit 4”๋ฅผ ์ถ๊ฐํ๋ค. ํ์ฌ master branch์ log๋ฅผ ์ฐ์ด๋ณด๋ฉด ์๋์ ๊ฐ์ด ๋์จ๋ค.
ํ์ฌ ์ํ๋ฅผ ๊ทธ๋ฆผ์ผ๋ก ๋ํ๋ด๋ฉด ์๋์ ๊ฐ๋ค.
์ด์ git checkout -b issue๋ฅผ ์ ๋ ฅํด issue๋ธ๋์น๋ฅผ ๋ง๋ค์ด๋ณด์. ๊ทธ๋ฆฌ๊ณ “Commit 5๋ฅผ ๋ง๋ค๋ฉด ์๋์ ๊ฐ์ด ๋๋ค.
// issue๋ผ๋ ์ด๋ฆ์ ๋ธ๋์น๋ฅผ ๋ง๋ค๊ณ issue ๋ธ๋์น๋ก checkout
git checkout -b issue
์ด์ issue ๋ธ๋์น๋ฅผ master๋ก ๋ณํฉ์ํฌ ๊ฒ์ด๋ค. ์ฐ์ master ๋ธ๋์น๋ก checkout ํ๊ณ , git merge issue๋ฅผ ์ ๋ ฅํ๋ฉด ๋๋ค. ๋ฐ๋์ ๊ธฐ์ค์ด ๋๋ ๋ธ๋์น๋ก ์ด๋ํด์ ๋ณํฉํด์ผํ๋ค.
git checkout master
git merge issue
์ ๋ช ๋ น์ด๋ฅผ ์คํํ ๋ค log๋ ์๋์ ๊ฐ๋ค.
์ด์ ๊ฐ์ด ๋ธ๋์น์ ์์น๋ง ์ต์ ์ปค๋ฐ์ผ๋ก ์ด๋์ํค๋ ๋ฐฉ์์ Fast-forward Merge๋ผ๊ณ ํ๋ค. ์ด์ ์ฌ์ฉํ์ง ์๋ issue๋ธ๋์น๋ฅผ ์ง์ฐ๋๋ก ํ์
//issue ๋ธ๋์น ์ญ์
git branch -d issue
Fast-forward Merge vs 3-way Merge
์ด๋ฒ์๋ 3-way Merge์ ๋ํด ์์๋ณด๋๋ก ํ์. ๋ ๋ฐฉ์์ ์ฐจ์ด์ ์ ์๋์ ๊ฐ๋ค.
๐ก Fast-forward Merge
→๋ธ๋์น์ ์์น๋ง ์ต์ ์ปค๋ฐ์ผ๋ก ์ด๋์ํค๋ ๋ฐฉ์
๐ก3-way Merge
→3๊ฐ์ง ์ปค๋ฐ์ ๋ชจ๋ ๊ณ ๋ คํ์ฌ ๋ณํฉํ๋ ๋ฐฉ์.
1.master์ feature-login๋ธ๋์น์ ๊ณตํต ๋ถ๋ชจ ์ปค๋ฐ
2.master๋ธ๋์น์ ์ต์ ์ปค๋ฐ
3.feature-login ๋ธ๋์น์ ์ต์ ์ปค๋ฐ
์ฐ์ ์๋ ์ฝ๋๋ค์ ์ ๋ ฅํด feature-login์ commit 6์ ๋ง๋ค๊ณ master๋ธ๋์น์์ ๋ณํฉ์ ์๋ํด๋ณด์.
git checkout feature-login
vi MainService.java
git add MainService.java
git commit -m "Commit 6 on feature-login branch"
git checkout master
git merge feature-login
๊ทธ๋ฌ๋ฉด ์ถฉ๋์ด ๋ฐ์ํ๋ค.
์ถฉ๋์ ์ด์ ๋ git status ๋ช ๋ น์ด๋ฅผ ํตํด ์ ์ ์๋ค.
์ถฉ๋์ ํด๊ฒฐ
์ถฉ๋์ ํด๊ฒฐ ๋ฐฉ๋ฒ์๋ 2๊ฐ์ง๊ฐ ์๋ค.
- ์ง์ Mergeํ๊ธฐ
- Mergetool ์ฌ์ฉํ๊ธฐ
1. ์ง์ Mergeํ๊ธฐ
์ฐ์ vi MainService.java๋ฅผ ์ ๋ ฅํ์ฌ ํ์ผ์ ์ด์ด๋ณด๋ฉด ์ด๋๊ฐ ์ถฉ๋ํ๋์ง ์ ์ ์๋ค.
<<<<,====,>>>>๋ฑ ์ ์ ๊ฐ ์์ฑํ์ง ์์ ๊ธฐํธ๋ค์ด ๋ค์ด๊ฐ์๋ค. ์ด๊ฒ์ ์ด๋์ ์ถฉ๋์ด ๋ฐ์ํ๋์ง ์๋ ค์ฃผ๋ ๊ธฐํธ์ด๋ค. ์ด๋ฅผ ๋ณด๊ณ ์ถฉ๋์ด ๋ฐ์ํ ๋ถ๋ถ์ ๋์ผํ๊ฒ ๋ฐ๊ฟ์ฃผ๊ณ ๋ค์ merge๋ฅผ ์๋ํ๋ฉด ์ถฉ๋์ด ๋ฐ์ํ์ง ์๋๋ค.
2. mergetool ์ฌ์ฉํ๊ธฐ
git mergetool์ด๋ผ๊ณ ์ ๋ ฅํ๊ณ vimdiff๋ฅผ ์ ๋ ฅํ๋ฉด ์๋์ ๊ฐ์ ์ฐฝ์ ๋ณผ ์ ์๋ค.
์ด์ ๋งจ ๋ฐ์ ์ฐฝ์์ ์ญ์ ๋ฅผ ์ํ๋ ์ค์ ์ปค์๋ฅผ ๋๊ณ d๋ฅผ 2๋ฒ ๋๋ฅด๋ฉด ํด๋น ๋ผ์ธ์ ์ง์ธ ์ ์๋ค. <<<,===,>>>๋ฑ์ด ์๋ ๋ผ์ธ์ ๋ชจ๋ ์ญ์ ํ์. ์ปค์๋ ๋ฐฉํฅํค๋ก ์์ง์ผ ์ ์๋ค.
์ด๋ ๊ฒ ์ง์ด ํ์๋ esc, :wq๋ฅผ ์ ๋ ฅํด ์ ์ฅํ๊ณ ์ข ๋ฃํ์. ๋๋จธ์ง 3๊ฐ์ ์ฐฝ์ ์ ์ฅ ์์ด ์ข ๋ฃํ ๊ฒ์ด๋ :q๋ฅผ ์ ๋ ฅํด์ฃผ์.
์ด์ MainService.javaํ์ผ์ ์ด์ด ๋ณํฉ์ด ์ ๋์๋์ง ํ์ธํด๋ณด์.
๋ณํฉ์ด ์ ๋์์์ ํ์ธํ์ผ๋ ์ปค๋ฐ์ ์ถ๊ฐํด์ฃผ๋ฉด ๋ณํฉ ๋์ด๋ค.
๐์ฝ๋ํ๋ ์ Java ์น ๊ฐ๋ฐ ์ฒดํ๋จ ํ๋์ผ๋ก ์ ๊ณต๋ฐ์ ๊ฐ์์ ๋๋ค.
๐์ฝ๋ํ๋ ์์์ "์ค๋ฌด์๊ฐ ์๋ ค์ฃผ๋ Git ํ์ฉํ ํ๋ก์ ํธ ๊ด๋ฆฌ" ๊ฐ์๋ฅผ ์๊ฐ ํ ์์ฑํ ๊ธ์ ๋๋ค.
๐์ฝ๋ํ๋ ์ ๋ฐ๋ก๊ฐ๊ธฐ ๋งํฌ : https://www.codepresso.kr/
'๋์ธํ๋ > CodePresso' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์ฝ๋ํ๋ ์ ์ฒดํ๋จ 5 : SW ์ ์ง๋ณด์์ฑ ํฅ์์ ์ํ Clean Code (0) | 2022.01.24 |
---|---|
์ฝ๋ํ๋ ์ ์ฒดํ๋จ 4-1 : Java ํ๋ก๊ทธ๋๋ฐ ์ด๊ธ (0) | 2022.01.18 |
์ฝ๋ํ๋ ์ ์ฒดํ๋จ : 2. ์ฒ์ ์์ํ๋ Java ํ๋ก๊ทธ๋๋ฐ (0) | 2022.01.14 |
์ฝ๋ํ๋ ์ ์ฒดํ๋จ : 1. ์ค๋ฌด์๊ฐ ์๋ ค์ฃผ๋ Git ์ ๋ฌธ (0) | 2022.01.13 |
์ฝ๋ํ๋ ์ ์ฒดํ๋จ : ๊ฐ์ (0) | 2022.01.12 |
๋๊ธ