Branch
๋ณธ๋์ ์์ค์ฝ๋๋ก ๋ถํฐ ํ์ํ ๋ ๋ฆฝ์ ์ธ ์์ ๊ณต๊ฐ
โซ Branch์ ํน์ง
- ์ต์ ์ปค๋ฐ์ ๊ฐ๋ฆฌํค๋ ์ผ์ข
์ ํฌ์ธํฐ ์ญํ ์ ํ๋ค.
- ๋งค์ฐ ๊ฐ๋ฒผ์์ ์์ฑ, ์ด๋, ๋ณํฉ(merge)์ด ๋งค์ฐ ์ฝ๋ค.
- ๋ชฉ์ ์ ๋ฐ๋ผ ๋ถ๊ธฐํ ์ ์๋ค.
master Branch
- Git์ ๊ธฐ๋ณธ์ ์ผ๋ก master ๋ธ๋์น๋ฅผ ์์ฑํ๋ค.
- master ๋ธ๋์น๋ ์ฒซ ๋ฒ์งธ ์ปค๋ฐ์ ๋ง๋ค์ด์ผ ์์ฑ๋ ์ปค๋ฐ์ ๊ฐ๋ฆฌํฌ ์ ์๋ค.
- ๋ฐ๋ผ์ $ git commit -m "···" ๋ช
๋ น์ด๋ก commit์ ์์ฑํ ํ,
ํ์ฌ ์์
์ค์ธ ๋ธ๋์น๋ฅผ ํ์ธํ๋ ๋ช
๋ น์ด[$ git branch]๋ก ํ์ธํด๋ณด๋ฉด
ํ์ฌ ์์
์ค์ธ ๋ธ๋์น๋ master์ธ ๊ฒ์ ํ์ธํ ์ ์๋ค.
๋ธ๋์น ์์ฑํ๋ ๋ฐฉ๋ฒ
โซ $ git branch ์์ฑํ _๋ธ๋์น๋ช ์ ๋ ฅ
โซ $ git branch๋ก ํ์ธํด๋ณด๋ฉด ๋ธ๋์น๊ฐ ์์ฑ๋ ๊ฒ์ ๋ณผ ์ ์๋ค.
HEAD
ํ์ฌ ์์ ์ค์ธ ๋ธ๋์น๋ฅผ ๊ฐ๋ฆฌํค๋ ์ผ์ข ์ ํฌ์ธํฐ,
ํ์ฌ ๋ธ๋์น์ ๊ฐ์ฅ ์ต์ (๋ง์ง๋ง) ์ปค๋ฐ์ ๋ํ ์ค๋ ์ท
โป ๋ง์ฝ HEAD๊ฐ ๋ค๋ฅธ ๋ธ๋์น๋ฅผ ๊ฐ๋ฆฌํค๊ฒ ๋๋ค๋ฉด?
→ ํ์ฌ ์์
์ค์ธ ๋ธ๋์น๊ฐ ๋ณ๊ฒฝ๋๋ค๋ ๊ฒ์ ์๋ฏธ!
HEAD ์ด๋์ ํ์ธํ๋ ์ค์ต
ํ์ฌ HEAD๋ ์ฒซ๋ฒ์งธ ์ปค๋ฐํ "Commit 1"์ ๊ฐ๋ฆฌํค๊ณ ์๋ค.
์ฌ๊ธฐ์ ๋๋ฒ์งธ ์ปค๋ฐ์ ์์ฑํ ํ ํ์คํ ๋ฆฌ๋ฅผ ๋ณด๋ฉด
HEAD๊ฐ ๋๋ฒ์งธ ์ปค๋ฐ ์์ผ๋ก ์ด๋ํ ๊ฒ์ ๋ณผ ์ ์๋ค.
↓
์ด๋ master ๋ธ๋์น๊ฐ ๋๋ฒ์งธ ์ปค๋ฐ์ ๊ฐ๋ฆฌํค๊ณ , master ๋ธ๋์น๋ฅผ HEAD๋ผ๋ ํฌ์ธํฐ๊ฐ ๊ฐ๋ฆฌํค๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.
๋ ์ฌ์ด ์ดํด๋ฅผ ์ํด ๊ทธ๋ฆผ์ ํตํด ๋ธ๋์น๊ฐ ์ค์ ๋ก ์ด๋ป๊ฒ ๋์ํ๋์ง ํ์ธํด๋ณด๊ฒ ๋ค.
์ฒซ๋ฒ์งธ ์ปค๋ฐ์ ์์ฑํ์ ๋๋ master๋ธ๋์น๊ฐ ์ฒซ๋ฒ์งธ ์ปค๋ฐ์ ๊ฐ๋ฆฌํค๊ณ ,
ํ์ฌ ์์
์ค์ธ ๋ธ๋์น๊ฐ master์ด๋ฏ๋ก HEAD๋ผ๋ ํฌ์ธํฐ๋ master๋ฅผ ๊ฐ๋ฆฌํค๋ ํํ๊ฐ ๋์๋ค.
๋๋ฒ์งธ ์ปค๋ฐ์ ์๋ก ์์ฑํ๋ฉด ์์ฑ๋จ๊ณผ ๋์์ master๋ธ๋์น๋ Commit 2๋ฅผ ๊ฐ๋ฆฌํค๊ฒ ๋๊ณ ,
์ดํ ๋ค๋ฅธ ๋ธ๋์น๋ก ๋ณ๊ฒฝ์ด๋ ์ด๋ํ์ง ์๊ณ master๋ธ๋์น์์ ์์
ํด์์ผ๋ฏ๋ก HEAD๋ master๋ธ๋์น๋ฅผ ๊ณ์ ๊ฐ๋ฆฌํค๋ ํํ๊ฐ ๋๋ค.
(*์ดํ master๋ธ๋์น์์ ์ปค๋ฐ์ ์๋ก ์์ฑํ๊ฒ ๋๋ฉด ์๋์ผ๋ก ๊ฐ์ฅ ๋ง์ง๋ง ์ปค๋ฐ์ ๊ฐ๋ฆฌํค๊ฒ ๋๋ค)
์์์ ์ค๋ช
ํ ๋ฐฉ๋ฒ๋๋ก ๋ธ๋์น๋ฅผ ์์ฑํ๋ฉด,
โซ $ git branch ์์ฑํ _๋ธ๋์น๋ช ์ผ๋ก ๋ธ๋์น๋ฅผ ์์ฑํ ํ
โซ $ git branch๋ก ํ์ฌ ์์ ์ค์ธ ๋ธ๋์น๋ฅผ ํ์ธํด๋ณด๋ฉด ์ฌ์ ํ master๋ธ๋์น๋ฅผ ๊ฐ๋ฆฌํค๊ณ ์์์ ํ์ธํ ์ ์๋ค.
โซ $ git log๋ก ํ์คํ ๋ฆฌ๋ฅผ ํ์ธํด๋ณด๋ฉด HEAD๋ master๋ธ๋์น๋ฅผ ๊ฐ๋ฆฌํค๊ณ ์๊ณ , feature-login์ ์์ฑ๋ง ๋ ์ํ์์ ๋ณผ ์ ์๋ค.
์ด๋ฅผ ๊ทธ๋ฆผ์ผ๋ก ๋ณด๋ฉด
feature-login์ ์ต์ ์ปค๋ฐ์ธ Commit 2๋ฅผ ๊ฐ๋ฆฌํค๊ณ , ํ์ฌ ์์ ์ค์ธ ๋ธ๋์น๋ master์ด๋ฏ๋ก
HEAD๋ ์ฌ์ ํ master๋ธ๋์น๋ฅผ ๊ฐ๋ฆฌํค๊ฒ ๋๋ค.
๋ธ๋์น ์ด๋
๋ธ๋์น๋ฅผ ์ด๋ํ ๋๋ $ git checkout ์ด๋ํ _๋ธ๋์น๋ช ์ด๋ ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ๋ค. ๋ฐ๋ผ์ ๋ธ๋์น๋ฅผ feature-login์ผ๋ก ์ด๋ํด๋ณด๊ฒ ๋ค.
โซ $git checkout feature-login ๋ช ๋ น์ด๋ฅผ ์คํํ๋ฉด ํ์ฌ ์์ ์ค์ธ ๋ธ๋์น(๋ฏผํธ์๊ธ์จ)๊ฐ ๋ณ๊ฒฝ๋์๋ค.
โซ $ git branch ๋ช ๋ น์ด๋ก ํ์ฌ ๋ธ๋์น๊ฐ ๋ณ๊ฒฝ๋ ๊ฒ์ ๋ณผ ์ ์๋ค.
โซ $ git log ๋ช ๋ น์ด๋ก ํ์คํ ๋ฆฌ๋ฅผ ๋ณด๋ฉด HEAD๊ฐ feature-login์ ๊ฐ๋ฆฌํค๊ณ ์๋ค.
์ด๋ฅผ ๋ค์ ๊ทธ๋ฆผ์ผ๋ก ๋ณด๋ฉด
HEAD๊ฐ ๊ฐ๋ฆฌํค๋ ๋์์ด ์ผ → ์ค ๋ก ๋ณํ๊ฒ ๋ ๊ฒ์ ๋ณผ ์ ์๋ค.
โซ ์ดํ ์ธ๋ฒ์งธ ์ปค๋ฐ์ ์์ฑํ ํ Git์ ํ์คํ ๋ฆฌ๋ฅผ ๋ณด์
์ ๊ทธ๋ฆผ๊ณผ ์ด์ด์ ํ์ธํด๋ณด์
์ธ๋ฒ์งธ ์ปค๋ฐ์ด ์์ฑ๋จ๊ณผ ๋์์ feature-login๋ธ๋์น์ HEAD๋ Commit 3์ ๊ฐ๋ฆฌํค๋ ํํ๊ฐ ๋์๋ค.
โป ์ฌ๊ธฐ์ ์ ๊น!
· ํ์ฌ์ ๋ธ๋์น์์ master๋ธ๋์น๋ก ์ด๋ํ๋ค๋ฉด Commit 3์ LoginService.java๊ฐ ์กด์ฌํ ๊น?
โซ No! ๊ฐ๊ฐ์ ๋ธ๋์น๋ ์๋ก๊ฐ ๋
๋ฆฝ๋ ๊ณต๊ฐ์ด๊ธฐ ๋๋ฌธ์ merge๋ฅผ ํ๊ธฐ ์ ๊น์ง๋ ๋ณ๋๋ก ์ด์์ด ๋์ด์ผ ํ๋ค.
์ด์ด์ ๋ค๋ฒ์งธ ์ปค๋ฐ์ ์์ฑํด๋ณด๊ฒ ๋ค.
$git checkout master ๋ช ๋ น์ด๋ก master๋ธ๋์น๋ก ์ด๋ํ๋ฉด HEAD๊ฐ master๋ธ๋์น๋ฅผ ๊ฐ๋ฆฌํค๊ฒ ๋๊ณ ,
์ฌ๊ธฐ์ ๋ ๋ค๋ฒ์งธ ์ปค๋ฐ์ ์์ฑํ๋ฉด master๋ Commit 4๋ฅผ ๊ฐ๋ฆฌํค๊ฒ ๋๋ค.
์ด๋์ Git ํ์คํ ๋ฆฌ๋ ์๋์ ๊ฐ๋ค.
๊ทธ๋ฌ๋, ๋ธ๋์น์ ์๊ด์์ด ๋ชจ๋ ๋ธ๋์น๋ฅผ ๊ทธ๋ํ ํ์์ผ๋ก ๋ณด๊ณ ์ถ๋ค๋ฉด $ git log --all --graph ๋ช ๋ น์ด๋ฅผ ์คํํ๋ฉด ๋๋ค.
Git์๋ ๋ธ๋์น๋ฅผ ์์ฑํจ๊ณผ ๋์์ ๋ฐ๋ก ํด๋น ๋ธ๋์น๋ก ์ด๋ํ๋ ๋ช ๋ น๋ ์กด์ฌํ๋ค.
์ด๋ $ git checkout -b ๋ธ๋์น์ด๋ฆ ์ด๋ค.
์ด๋, checkout๋ช ๋ น์ด๋ก ๋ธ๋์น ์ด๋์ ํ๊ธฐ ๋๋ฌธ์ HEAD๋ ์๋ก ์์ฑํ ๋ธ๋์น๋ฅผ ๊ฐ๋ฆฌํค๊ณ ์์ง๋ง,
์์ง issue๋ธ๋์น์์ ์์ฑํ ์ปค๋ฐ์ด ์์ผ๋ฏ๋ก issue๊ฐ ๊ฐ๋ฆฌํค๋ ๋์์ ์๋ค.
โซ ์๋กญ๊ฒ ๋ค์ฏ๋ฒ์งธ ์ปค๋ฐ์ ์์ฑํ ํ ํ์คํ ๋ฆฌ๋ฅผ ํ์ธํด๋ณด์
๋ค์ฏ๋ฒ์งธ ์ปค๋ฐ์ ์์ฑํ์๊ณ , ์ด๋ฅผ issue๋ธ๋์น๊ฐ ๊ฐ๋ฆฌํค๊ฒ ๋์๋ค.
์ฝ๋ํ๋ ์ Java ์น ๊ฐ๋ฐ ์ฒดํ๋จ ํ๋ ์ค '์ค๋ฌด์๊ฐ ์๋ ค์ฃผ๋ Git ํ์ฉํ ํ๋ก์ ํธ ๊ด๋ฆฌ' ์ด๋ฌ๋ ๊ฐ์๋ฅผ ๋ฃ๊ณ ์์ฑํ์์ต๋๋ค :)
์ฝ๋ํ๋ ์ URL: https://www.codepresso.kr/
'๐ ๊ธฐํ > ์ฝ๋ํ๋ ์ ์ฒดํ๋จ_BE' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Git] Tag์ ์ข ๋ฅ ๋ฐ Tag ์์ฑํ๊ธฐ (0) | 2022.01.17 |
---|---|
[Git] Branch์ ์ดํด | Merge | Conflict ํด๊ฒฐํ๊ธฐ (0) | 2022.01.17 |
[Java] ๋ฐ๋ณต๋ฌธ | for | while | ๋ฐ๋ณต๋ฌธ ์ ์ด (0) | 2022.01.12 |
[Java] ๋ฐฐ์ด(Array) (0) | 2022.01.12 |
[Java] ์กฐ๊ฑด๋ฌธ | ๋ ผ๋ฆฌ ์ฐ์ฐ์ (0) | 2022.01.12 |