๐Ÿ‘ฉ๐Ÿป‍๐Ÿ’ป Dev/GIT

Do it ๊นƒ·๊นƒํ—ˆ๋ธŒ | 3์žฅ

yesolz 2023. 1. 23. 14:28
728x90
ใ€ŽDo it! ๊นƒ & ๊นƒํ—ˆ๋ธŒ ์ž…๋ฌธใ€ 3์žฅ. ๊นƒ๊ณผ ๋ธŒ๋žœ์น˜
๋ฅผ ์ฐธ๊ณ ํ•˜์˜€์Šต๋‹ˆ๋‹ค

 

๋ชฉ์ฐจ

3-1 ๋ธŒ๋žœ์น˜๋ž€

3-2 ๋ธŒ๋žœ์น˜ ๋งŒ๋“ค๊ธฐ ๋ฐ ์ด๋™ํ•˜๊ธฐ

3-3 ๋ธŒ๋žœ์น˜ ์ •๋ณด ํ™•์ธํ•˜๊ธฐ

3-4 ๋ธŒ๋žœ์น˜ ๋ณ‘ํ•ฉํ•˜๊ธฐ

 


 

3-1 ๋ธŒ๋žœ์น˜๋ž€?

๋ธŒ๋žœ์น˜(branch)

๋‚˜๋ฌด๊ฐ€ ๊ฐ€์ง€์—์„œ ์ƒˆ ์ค„๊ธฐ๋ฅผ ๋ป—๋“ฏ์ด ์—ฌ๋Ÿฌ ๊ฐˆ๋ž˜๋กœ ํผ์ง€๋Š” ๋ฐ์ดํ„ฐ ํ๋ฆ„

 

๊นƒ์œผ๋กœ ๋ฒ„์ „ ๊ด€๋ฆฌ๋ฅผ ์‹œ์ž‘ํ•˜๋ฉด ๊ธฐ๋ณธ์ ์œผ๋กœ main ๋ธŒ๋žœ์น˜(๊ตฌ master ๋ธŒ๋žœ์น˜) ๋งŒ๋“ค์–ด์ง

์‚ฌ์šฉ์ž๊ฐ€ ์ปค๋ฐ‹ํ•  ๋•Œ๋งˆ๋‹ค main ๋ธŒ๋žœ์น˜๋Š” ์–ด๋–ค ๊ฒŒ ์ตœ์‹  ์ปค๋ฐ‹์ธ์ง€ ์ •๋ณด๋ฅผ ๊ฐ€์ง.

 

๊ธฐ์กด ํŒŒ์ผ์€ main ๋ธŒ๋žœ์น˜์— ๊ทธ๋Œ€๋กœ ์œ ์ง€ํ•˜๋ฉด์„œ, ์ƒˆ ๋ธŒ๋žœ์น˜์—์„œ ๊ธฐ์กด ํŒŒ์ผ ๋‚ด์šฉ์„ ์ˆ˜์ •ํ•˜๊ฑฐ๋‚˜ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Œ.

 

๋ธŒ๋žœ์น˜ ๋ถ„๊ธฐ ๊ณผ์ •

main๋ธŒ๋žœ์น˜์—์„œ ์ƒˆ ๋ธŒ๋žœ์น˜๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ์„ '๋ถ„๊ธฐ(branch)ํ•œ๋‹ค'

 

 

๋ธŒ๋žœ์น˜ ๋ณ‘ํ•ฉ ๊ณผ์ •

๋ถ„๊ธฐํ–ˆ๋˜ ๋ธŒ๋žœ์น˜๋ฅผ main ๋ธŒ๋žœ์น˜์— ํ•ฉ์น˜๋Š” ๊ฒƒ์„ '๋ณ‘ํ•ฉ(merge)ํ•œ๋‹ค'

 

3-2 ๋ธŒ๋žœ์น˜ ๋งŒ๋“ค๊ธฐ ๋ฐ ์ด๋™ํ•˜๊ธฐ

์‹ค์Šต ์ƒํ™ฉ ๋งŒ๋“ค๊ธฐ

์‹ค์Šต ์ƒํ™ฉ : ๋ฒ„์ „์ด ๋‹ค๋ฅธ ์‚ฌ์šฉ ์„ค๋ช…์„œ๋ฅผ ์ œ๊ณตํ•  ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ๋ฅผ ๋ธŒ๋žœ์น˜๋กœ ํ•ด๊ฒฐํ•˜๊ณ ์ž ํ•จ.

$ cd ~ # ํ™ˆ์œผ๋กœ ์ด๋™
$ mkdir manual # manual ๋””๋ ‰ํ„ฐ๋ฆฌ ๋งŒ๋“ฆ
$ cd manaul # manual ๋กœ ์ด๋™
$ git init # manual ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ์ €์žฅ์†Œ๋กœ ๋งŒ๋“ฆ
$ ls -al # .git ๋””๋ ‰ํ„ฐ๋ฆฌ ๋งŒ๋“ค์–ด์กŒ๋Š”์ง€ ํ™•์ธ
$ vim work.txt # vim์œผ๋กœ work.txt ๋“ค์–ด๊ฐ€์„œ content 1 ์ž…๋ ฅํ•˜๊ณ  ์ €์žฅํ•˜๊ณ  ๋‚˜์˜ด (:wq)
$ git add work.txt # ์Šคํ…Œ์ด์ง€์— ์˜ฌ๋ฆผ
$ git commit -m "work 1" # ์ปค๋ฐ‹
$ git log # ์ปค๋ฐ‹ ๋‚ด์—ญ ํ™•์ธ

(HEAD -> main) ; HEAD๊ฐ€ ํ˜„์žฌ main์ด๋ผ๋Š” ๋ธŒ๋žœ์น˜๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ณ  ์žˆ๋‹ค.

์ด๊ฒŒ ๋ถ™์€ ์ปค๋ฐ‹์ด ๊ฐ€์žฅ ์ตœ์‹  ์ปค๋ฐ‹ (ํ˜„์žฌ๋Š” work 1)

 

# ์œ„์™€ ์ด์–ด์„œ
$ vim work.txt # work.txt์— 'content 2' ์ถ”๊ฐ€ ์ž…๋ ฅ ํ›„ ์ €์žฅ
$ git commit -am "work 2" # ์Šคํ…Œ์ด์ง•๊ณผ ์ปค๋ฐ‹ ํ•œ๊บผ๋ฒˆ์— ์ฒ˜๋ฆฌ
$ vim work.txt # work.txt์— 'content 3' ์ถ”๊ฐ€ ์ž…๋ ฅ ํ›„ ์ €์žฅ
$ git commit -am "work 3"
$ git log # ์ปค๋ฐ‹ ๋กœ๊ทธ ํ™•์ธ

** ์Šคํ…Œ์ด์ง•๊ณผ ์ปค๋ฐ‹์„ ํ•œ๊บผ๋ฒˆ์— ์ฒ˜๋ฆฌํ•˜๋Š” commit -am์€ ํ•œ ๋ฒˆ์ด๋ผ๋„ ์ปค๋ฐ‹ํ•œ ์  ์žˆ๋Š” ํŒŒ์ผ์—์„œ๋งŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅ

3๊ฐœ์˜ ์ปค๋ฐ‹์ด ๋งŒ๋“ค์–ด์กŒ๊ณ , ๊ฐ€์žฅ ์ตœ์‹  ์ปค๋ฐ‹์ธ work 3์— (HEAD -> main) ํ‘œ์‹œ

 

 

์ƒˆ ๋ธŒ๋žœ์น˜ ๋งŒ๋“ค๊ธฐ

( apple, google, ms๋ผ๋Š” ๊ณ ๊ฐ์‚ฌ์—๊ฒŒ ๋‚ด์šฉ์ด ์„œ๋กœ ๋‹ค๋ฅธ ์‚ฌ์šฉ ์„ค๋ช…์„œ๋ฅผ ์ œ๊ณตํ•ด์•ผํ•˜๋Š” ์ƒํ™ฉ. )

 

$ git branch

๊นƒ์—์„œ ๋ธŒ๋žœ์น˜๋ฅผ โ‘ ๋งŒ๋“ค๊ฑฐ๋‚˜ โ‘กํ™•์ธํ•˜๋Š” ๋ช…๋ น

 

$ git branch ๋ธŒ๋žœ์น˜ ์ด๋ฆ„

์ƒˆ๋กœ์šด ๋ธŒ๋žœ์น˜ ๋งŒ๋“ค๊ธฐ

 

$ git branch # ํ˜„์žฌ ๋ธŒ๋žœ์น˜ ํ™•์ธ -> main์ด๋ผ๊ณ  ๋‚˜์˜ด
$ git branch apple # apple์ด๋ผ๋Š” ๋ธŒ๋žœ์น˜ ์ƒ์„ฑ
$ git branch # ํ˜„์žฌ ๋ธŒ๋žœ์น˜ ํ™•์ธ -> apple ๋ธŒ๋žœ์น˜ ์ถ”๊ฐ€๋จ & ์•„์ง main ๋ธŒ๋žœ์น˜์—์„œ ์ž‘์—…

* ํ‘œ์‹œ : ํ˜„์žฌ ์ž‘์—…ํ•˜๋Š” ๋ธŒ๋žœ์น˜.

(HEAD -> main, apple)

์ €์žฅ์†Œ์— main๊ณผ apple์ด๋ผ๋Š” 2๊ฐœ์˜ ๋ธŒ๋žœ์น˜๊ฐ€ ์žˆ๋‹ค,

HEAD -> main ์ด๋ฏ€๋กœ ํ˜„์žฌ ์ž‘์—…ํ•˜๋Š” ๋ธŒ๋žœ์น˜๋Š” main ๋ธŒ๋žœ์น˜ (HEAD๋Š” ์ž‘์—… ์ค‘์ธ ๋ธŒ๋žœ์น˜๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ํฌ์ธํ„ฐ)

google, ms ๋ธŒ๋žœ์น˜๊นŒ์ง€ ์ถ”๊ฐ€

 

์ด ์ƒํƒœ์—์„œ ์ƒˆ ์ปค๋ฐ‹์„ ์ถ”๊ฐ€ํ•˜๋ฉด?

main ์™ธ์— 3๊ฐœ์˜ ๋ธŒ๋žœ์น˜ ์ถ”๊ฐ€ํ–ˆ๊ณ , ํ˜„์žฌ ์ตœ์‹  ์ปค๋ฐ‹์€ work 3. ์ด ์ƒํƒœ์—์„œ ์ƒˆ๋กœ์šด ์ปค๋ฐ‹ ์ถ”๊ฐ€ํ•˜๋ฉด?

ms, google, apple ๋ธŒ๋žœ์น˜์—๋„ ์ตœ์‹  ์ปค๋ฐ‹์ด work 3 ์ด๋ผ๋Š” ๋œป.

 

$ vim work.txt # work.txt์— "main content 4' ์ถ”๊ฐ€ ์ž…๋ ฅ ํ›„ ์ €์žฅ
$ git commit -am "main work 4"
$ git log --oneline # ํ•œ ์ค„์— ํ•œ ์ปค๋ฐ‹์”ฉ ๋ณด์—ฌ์คŒ

git log --oneline ์˜ต์…˜ : ํ•œ ์ค„์— ํ•œ ์ปค๋ฐ‹์”ฉ ๋ณด์—ฌ์ฃผ๊ธฐ ๋•Œ๋ฌธ์— ์—ฌ๋Ÿฌ ์ปค๋ฐ‹์„ ํ•œ๋ˆˆ์— ํ™•์ธํ•  ๋•Œ ํŽธ๋ฆฌํ•จ

main work 4๋Š” ์•„์ง main ๋ธŒ๋žœ์น˜์—๋งŒ ์ ์šฉ๋˜์–ด ์žˆ๊ณ , ms google apple ๋ธŒ๋žœ์น˜๋Š” ์•„์ง work 3 ์ปค๋ฐ‹ ์ƒํƒœ.

์ฆ‰, ์ƒˆ๋กœ ๋งŒ๋“  ์ปค๋ฐ‹์€ ํ˜„์žฌ ๋ธŒ๋žœ์น˜(main ๋ธŒ๋žœ์น˜)์—๋งŒ ์ ์šฉ๋˜๊ณ  ๋‚˜๋จธ์ง€ ๋ธŒ๋žœ์น˜์—๋Š” ์ ์šฉ๋˜์ง€ ์•Š์Œ

* ์ปค๋ฐ‹์„ ํ•œ ์ค„๋กœ ํ‘œ์‹œํ•  ๊ฒฝ์šฐ ์ปค๋ฐ‹ ํ•ด์‹œ 7์ž๋ฆฌ : ์ปค๋ฐ‹ ํ•ด์‹œ๋Š” ๊ธธ๊ธฐ ๋•Œ๋ฌธ์— ์•ž์˜ 7์ž๋ฆฌ๋กœ ์ปค๋ฐ‹์„ ๊ตฌ๋ณ„ํ•  ์ˆ˜ ์žˆ์Œ

 

๋ธŒ๋žœ์น˜ ์ „ํ™˜ํ•˜๊ธฐ  git switch

๋ธŒ๋žœ์น˜๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ๋ผ๋ฉด ๊ฐ๊ฐ ์„œ๋กœ ๋‹ค๋ฅธ ์ปค๋ฐ‹ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Œ -> ๋ธŒ๋žœ์น˜๋ฅผ ์˜ค๊ฐ€๋ฉด์„œ ์ž‘์—…ํ•ด์•ผ ํ•จ

git switch ๋‹ค์Œ ๋ธŒ๋žœ์น˜ ์ด๋ฆ„ : '๋ธŒ๋žœ์น˜๋ฅผ ์ „ํ™˜ํ•˜๋‹ค', ํ˜„์žฌ ๋ธŒ๋žœ์น˜์—์„œ ๋‹ค๋ฅธ ๋ธŒ๋žœ์น˜๋กœ ์ด๋™ํ•˜๋Š” ๊ฒƒ (* ๊ตฌ checkout)

$ git switch apple # apple ๋ธŒ๋žœ์น˜๋กœ ์ „ํ™˜
$ git log --oneline # ํ˜„์žฌ ๋ธŒ๋žœ์น˜์˜ ์ปค๋ฐ‹ ๋กœ๊ทธ ํ™•์ธ (apple ๋ธŒ๋žœ์น˜๋กœ ๋ฐ”๊ฟจ์„ ๋•Œ ์–ด๋–ค ๋ณ€ํ™”๊ฐ€ ์ƒ๊ธฐ๋Š”์ง€ ํ™•์ธ)
$ cat work.txt # work.txt ํŒŒ์ผ ๋‚ด์šฉ ํ™•์ธ

apple ๋ธŒ๋žœ์น˜ ๋งŒ๋“ค๊ธฐ ์ „๊นŒ์ง€ main ๋ธŒ๋žœ์น˜์— ์žˆ๋˜ ์ปค๋ฐ‹๋“ค์€ ๊ทธ๋Œ€๋กœ apple ๋ธŒ๋žœ์น˜์—๋„ ์ ์šฉ

work 3์ด apple, ms, google ๋ธŒ๋žœ์น˜์˜ ์ตœ์‹  ์ปค๋ฐ‹

์ปค๋ฐ‹ ํ•ด์‹œ์—์„œ HEAD๊ฐ€ apple์„ ๊ฐ€๋ฆฌํ‚ด

์ตœ์‹  ์ปค๋ฐ‹์ด work 3์ด๊ธฐ ๋•Œ๋ฌธ์— content 3๊นŒ์ง€ ์žˆ์Œ

main content 4๋Š” apple ๋ธŒ๋žœ์น˜๋ฅผ ๋ถ„๊ธฐํ•œ ํ›„์— main ๋ธŒ๋žœ์น˜์— ์ถ”๊ฐ€๋œ ์ปค๋ฐ‹์ด๊ธฐ ๋•Œ๋ฌธ์— apple ๋ธŒ๋žœ์น˜์— ์˜ํ–ฅ X

 

 

** checkout?

checkout ๋ช…๋ น์—์„œ ํ•˜๋˜ ๊ธฐ๋Šฅ์„ restore์™€ switch๋กœ ๋‚˜๋ˆ”. ์•„์ง checkout ๋ช…๋ น๋„ ์‚ฌ์šฉ์€ ๊ฐ€๋Šฅํ•จ

- restore : ์ˆ˜์ • ์‚ฌํ•ญ์ด๋‚˜ ์Šคํ…Œ์ด์ง• ์ทจ์†Œํ•  ๋•Œ

- switch : ๋ธŒ๋žœ์น˜๋ฅผ ์ „ํ™˜ํ•  ๋•Œ

 

 

3-3 ๋ธŒ๋žœ์น˜ ์ •๋ณด ํ™•์ธํ•˜๊ธฐ

๋ธŒ๋žœ์น˜๋งˆ๋‹ค ๋งŒ๋“ค์–ด์ง„ ์ปค๋ฐ‹์ด ์„œ๋กœ ์–ด๋–ค ๊ด€๊ณ„๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๋ฐฉ๋ฒ• & ๋ธŒ๋žœ์น˜ ์‚ฌ์ด์˜ ์ฐจ์ด์ ์„ ํ™•์ธํ•˜๋Š” ๋ฐฉ๋ฒ•

 

์ „ํ™˜ํ•œ ๋ธŒ๋žœ์น˜์—์„œ ์ปค๋ฐ‹ํ•˜๊ธฐ

$ vim work.txt # work.txt์— 'apple content 4' ์ถ”๊ฐ€ ์ž…๋ ฅ ํ›„ ์ €์žฅ
$ vim apple.txt # apple.txt ๋งŒ๋“ค๊ณ  'apple content 4' ์ž…๋ ฅ ํ›„ ์ €์žฅ
$ git add . # ํ˜„์žฌ ์ €์žฅ์†Œ์—์„œ ์ˆ˜์ • ๋‚ด์šฉ ์žˆ๋Š” ํŒŒ์ผ์„ ํ•œ๊บผ๋ฒˆ์— ์Šคํ…Œ์ด์ง•
$ git commit -m "apple work 4" # ์ปค๋ฐ‹
$ git log --oneline # ์ปค๋ฐ‹ ์ €์žฅ ๋‚ด์—ญ ํ™•์ธ

(HEAD -> apple) : ํ˜„์žฌ apple ๋ธŒ๋žœ์น˜๋กœ ์ „ํ™˜, ์ตœ์‹  ์ปค๋ฐ‹์€ apple work 4

 

๋ธŒ๋žœ์น˜์™€ ์ปค๋ฐ‹ ๊ด€๊ณ„ ์•Œ์•„๋ณด๊ธฐ

git log --branches ์˜ต์…˜ : ๋ธŒ๋žœ์น˜๋งˆ๋‹ค ์ตœ์‹  ์ปค๋ฐ‹์„ ๋ณผ ์ˆ˜ ์žˆ์Œ

$ git log --oneline --branches

 

git log --graph ์˜ต์…˜ : ๋ธŒ๋žœ์น˜์™€ ์ปค๋ฐ‹ ๊ด€๊ณ„๋ฅผ ๊ทธ๋ž˜ํ”„ ํ˜•ํƒœ๋กœ ํ‘œ์‹œ

$ git log --oneline --branches --graph

์ปค๋ฐ‹ ๋‚ด์—ญ ์™ผ์ชฝ์— ์žˆ๋Š” ์ˆ˜์ง์„ (|, /) : ์ปค๋ฐ‹๊ณผ ์ปค๋ฐ‹์˜๊ด€๊ณ„

 

- (apple ๋ธŒ๋žœ์น˜) apple work 4 ์ปค๋ฐ‹์˜ ๋ถ€๋ชจ๋ฅผ ๋”ฐ๋ผ๊ฐ€๋ฉด work 3 ์ปค๋ฐ‹. work 3์ปค๋ฐ‹ ๋‹ค์Œ apple work 4 ์ปค๋ฐ‹์ด ๋งŒ๋“ค์–ด์กŒ๋‹ค!

- (main ๋ธŒ๋žœ์น˜) main work 4 ์ปค๋ฐ‹์˜ ๋ถ€๋ชจ๋ฅผ ๋”ฐ๋ผ๊ฐ€๋ฉด work 3 ์ปค๋ฐ‹.

- apple ๋ธŒ๋žœ์น˜์˜ ์ปค๋ฐ‹๊ณผ main ๋ธŒ๋žœ์น˜์˜ ์ปค๋ฐ‹์ด ๊ฐ™์€ ๋ถ€๋ชจ ์ปค๋ฐ‹.

main ๋ธŒ๋žœ์น˜๋‚˜ apple ๋ธŒ๋žœ์น˜๋Š” work 3 ์ปค๋ฐ‹๊นŒ์ง€๋Š” ๊ฐ™๊ณ  ๊ทธ ์ดํ›„๋ถ€ํ„ฐ ๋ธŒ๋žœ์น˜๋งˆ๋‹ค ๋‹ค๋ฅธ ์ปค๋ฐ‹์„ ๋งŒ๋“ค์—ˆ๋‹ค!

 

๋ธŒ๋žœ์น˜ ์‚ฌ์ด์˜ ์ฐจ์ด์ 

๋ธŒ๋žœ์น˜๋งˆ๋‹ค ์ปค๋ฐ‹์ด ์Œ“์—ฌ ๊ฐˆ์ˆ˜๋ก ๋ธŒ๋žœ์น˜ ์‚ฌ์ด์— ์ฐจ์ด๋ฅผ ํ™•์ธํ•˜๊ธฐ ์–ด๋ ค์›€

git log์—์„œ ๋ธŒ๋žœ์น˜ ์ด๋ฆ„ ์‚ฌ์ด์— ๋งˆ์นจํ‘œ 2๊ฐœ(..) ๋ฅผ ๋„ฃ๋Š” ๋ช…๋ น์œผ๋กœ ๋ธŒ๋žœ์น˜ ๊ฐ„ ์ฐจ์ด ํ™•์ธ ๊ฐ€๋Šฅ

๋งˆ์นจํ‘œ ์™ผ์ชฝ์— ์žˆ๋Š” ๋ธŒ๋žœ์น˜๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์˜ค๋ฅธ์ชฝ ๋ธŒ๋žœ์น˜์™€ ๋น„๊ต

$ git log main..apple

$ git log main..apple : main ๋ธŒ๋žœ์น˜์—๋Š” ์—†๊ณ  apple ๋ธŒ๋žœ์น˜์—๋งŒ ์žˆ๋Š” ์ปค๋ฐ‹ ๋ณด์—ฌ์คŒ

 

$ git log apple..main

$ git log apple..main : apple ๋ธŒ๋žœ์น˜์—๋Š” ์—†๊ณ  main ๋ธŒ๋žœ์น˜์—๋งŒ ์žˆ๋Š” ์ปค๋ฐ‹ ๋ณด์—ฌ์คŒ

 

 

3-4 ๋ธŒ๋žœ์น˜ ๋ณ‘ํ•ฉํ•˜๊ธฐ

'๋ธŒ๋žœ์น˜ ๋ณ‘ํ•ฉ(merge)' : ๋ธŒ๋žœ์น˜ ์ž‘์—…์„ ๋งˆ๋ฌด๋ฆฌํ•˜๊ณ  ๊ธฐ์กด ๋ธŒ๋žœ์น˜์™€ ํ•ฉ์น˜๊ธฐ 

์—ฌ๋Ÿฌ ์ƒํ™ฉ๋งˆ๋‹ค ๋ณ‘ํ•ฉํ•˜๋Š” ๋ฐฉ๋ฒ• & ๋ณ‘ํ•ฉํ•˜๋ฉด์„œ ๋ธŒ๋žœ์น˜ ์‚ฌ์ด์— ์ถฉ๋Œ์ด ์žˆ์„ ๋•Œ ํ•ด๊ฒฐ๋ฐฉ๋ฒ•

 

์„œ๋กœ ๋‹ค๋ฅธ ํŒŒ์ผ ๋ณ‘ํ•ฉํ•˜๊ธฐ

( ๋ถ„๊ธฐํ•œ ๋ธŒ๋žœ์น˜์— ์„œ๋กœ ๋‹ค๋ฅธ ๋ฌธ์„œ๊ฐ€ ์žˆ์„ ๋•Œ )

 

$ git init ๋””๋ ‰ํ„ฐ๋ฆฌ ์ด๋ฆ„ : ์ƒˆ๋กœ์šด ๋””๋ ‰ํ„ฐ๋ฆฌ ๋งŒ๋“ค๊ณ  ์ €์žฅ์†Œ๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜๋Š” ๊ณผ์ •์„ ํ•œ๊บผ๋ฒˆ์— ์ฒ˜๋ฆฌ

$ git init manual-2 # ์ƒˆ๋กœ์šด ๋””๋ ‰ํ„ฐ๋ฆฌ ๋งŒ๋“ค๊ธฐ & ์ €์žฅ์†Œ ์ดˆ๊ธฐํ™” ํ•œ๋ฒˆ์— !
$ cd manual-2 # manual-2 ๋””๋ ‰ํ„ฐ๋ฆฌ๋กœ ์ด๋™
$ ls -al # .git/ ๋””๋ ‰ํ„ฐ๋ฆฌ ๋งŒ๋“ค์–ด์กŒ๋Š”์ง€ ํ™•์ธ

$ vim work.txt # work.txt ๋งŒ๋“ค๊ณ  '1' ์ž…๋ ฅ ํ›„ ์ €์žฅ
$ git add work.txt
$ git commit -m "work 1"

ํ˜„์žฌ ; 1. HEAD๊ฐ€ main ๋ธŒ๋žœ์น˜๋ฅผ ๊ฐ€๋ฆฌํ‚ด 2. main์ด work 1 ์ปค๋ฐ‹์„ ๊ฐ€๋ฆฌํ‚ด

 

$ git branch o2 # 'o2' ๋ธŒ๋žœ์น˜ ์ƒ์„ฑ
$ vim main.txt # (ํ˜„์žฌ main ๋ธŒ๋žœ์น˜) 'main 2' ์ž…๋ ฅ ํ›„ ์ €์žฅ
$ git add main.txt # ์Šคํ…Œ์ด์ง•
$ git commit -m "main work 2" # ์ปค๋ฐ‹

 

$ git switch o2 # o2 ๋ธŒ๋žœ์น˜๋กœ ์ „ํ™˜
$ vim o2.txt # o2.txt ๋งŒ๋“ค๊ณ  '2' ์ž…๋ ฅ ํ›„ ์ €์žฅ
$ git add o2.txt # ์Šคํ…Œ์ด์ง•
$ git commit -m "o2 work 2" # ์ปค๋ฐ‹
$ git log --oneline -branches --graph # ํ˜„์žฌ ์ปค๋ฐ‹ ์ƒํƒœ ํ™•์ธ

 

 

$ git merge ๊ฐ€์ ธ์˜ฌ-๋ธŒ๋žœ์น˜-์ด๋ฆ„

# ์ด์ œ๋ถ€ํ„ฐ ๋ณ‘ํ•ฉ!
$ git switch main # ๋ธŒ๋žœ์น˜๋ฅผ ๋ณ‘ํ•ฉํ•˜๋ ค๋ฉด ๋จผ์ € main ๋ธŒ๋žœ์น˜๋กœ ์ „ํ™˜
$ git merge o2 # main ๋ธŒ๋žœ์น˜๋ฅผ ๊ธฐ์ค€์œผ๋กœ o2 ๋ธŒ๋žœ์น˜๋ฅผ ๊ฐ€์ ธ์™€ ๋ณ‘ํ•ฉ

git merge ์‹คํ–‰ ์‹œ, ๋น”์ด ์ž๋™์œผ๋กœ ์‹คํ–‰๋˜๋ฉด์„œ 'Merge branch o2' ๋ผ๋Š” ์ปค๋ฐ‹ ๋ฉ”์‹œ์ง€ ๋‚˜ํƒ€๋‚จ.

๋ธŒ๋žœ์น˜๋ฅผ ๋ณ‘ํ•ฉํ•˜๋ฉด์„œ ๋งŒ๋“ค์–ด์ง„ ์ปค๋ฐ‹ ๋ฉ”์‹œ์ง€, ์ˆ˜์ •ํ•ด๋„ ๋˜๊ณ  ๊ทธ๋Œ€๋กœ ์จ๋„ ๋จ (esc :wq)

 

$ ls - al (ํ˜„์žฌ main)

ls -al ๋ช…๋ น์„ ์‚ฌ์šฉํ•ด ํ™•์ธํ•ด๋ณด๋ฉด o2 ๋ธŒ๋žœ์น˜์— ์žˆ๋˜ o2.txt ํŒŒ์ผ์ด main ๋ธŒ๋žœ์น˜์— ํ•ฉ์ณ์ง„ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Œ

 

git log ๋ช…๋ น์œผ๋กœ ํ™•์ธํ•ด๋ณด๋ฉด 

o2 work 2 ์ปค๋ฐ‹์ด main ๋ธŒ๋žœ์น˜์— ๋ณ‘ํ•ฉ๋˜๋ฉด์„œ 'Merge branch o2' ๋ผ๋Š” ์ปค๋ฐ‹์ด ์ƒˆ๋กœ ์ƒ๊น€.

 

** ๋นจ๋ฆฌ ๊ฐ๊ธฐ ๋ณ‘ํ•ฉ (fast-forward merge)

main ๋ธŒ๋žœ์น˜์—์„œ ๋ธŒ๋žœ์น˜๋ฅผ ๋ถ„๊ธฐํ•œ ํ›„์— main ๋ธŒ๋žœ์น˜์— ์•„๋ฌด ๋ณ€ํ™”๊ฐ€ ์—†๋‹ค๋ฉด (์ƒˆ๋กœ์šด ์ปค๋ฐ‹ ๋งŒ๋“ค์ง€ ์•Š์•˜๋‹ค๋ฉด)

๋ถ„๊ธฐํ•œ ๋ธŒ๋žœ์น˜์—์„œ ๋งŒ๋“  ์ตœ์‹  ์ปค๋ฐ‹์„ main ๋ธŒ๋žœ์น˜๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๊ฒŒ๋งŒ ํ•˜๋ฉด ๋จ (git merge)

git merge ๋ช…๋ น์œผ๋กœ ๋‹จ์ˆœํžˆ ํฌ์ธํ„ฐ๋งŒ ์›€์ง์ธ ๊ฒƒ์œผ๋กœ ์ปค๋ฐ‹ ๋ฉ”์‹œ์ง€ ์ฐฝ ์—ด๋ฆฌ์ง€ ์•Š์Œ

 

 

์„œ๋กœ ๋‹ค๋ฅธ ๋ธŒ๋žœ์น˜์—์„œ ํ•œ ๋ฌธ์„œ์˜ ๋‹ค๋ฅธ ๋ถ€๋ถ„์„ ์ˆ˜์ •ํ–ˆ์„ ๋•Œ ๋ณ‘ํ•ฉํ•˜๊ธฐ

( ๊ฐ™์€ ๋ฌธ์„œ์—์„œ ์„œ๋กœ ๋‹ค๋ฅธ ๋ถ€๋ถ„์„ ์ˆ˜์ •ํ–ˆ์„ ๋•Œ )

main ๋ธŒ๋žœ์น˜์™€ o2 ๋ธŒ๋žœ์น˜ ์–‘์ชฝ์—์„œ work.txt ํŒŒ์ผ์„ ์ˆ˜์ •ํ–ˆ์ง€๋งŒ ๋ฌธ์„œ ์•ˆ์˜ ์ˆ˜์ • ์œ„์น˜๋Š” ๋‹ค๋ฅธ ์ƒํ™ฉ.

์ด ์ƒํ™ฉ์—์„œ ๋ณ‘ํ•ฉํ•˜๊ธฐ

 

$ git switch main # main ๋ธŒ๋žœ์น˜๋กœ ์ „ํ™˜ (main ๋ธŒ๋žœ์น˜์— ํ•ฉ์น˜๊ธฐ ์œ„ํ•ด)
$ git merge o2 # o2 ๋ธŒ๋žœ์น˜๋ฅผ main ๋ธŒ๋žœ์น˜๋กœ ๋Œ๊ณ ์˜ด
$ cat work.txt # work.txt ํŒŒ์ผ ํ™•์ธ

main ๋ธŒ๋žœ์น˜์˜ ์ˆ˜์ • ๋‚ด์šฉ๊ณผ o2 ๋ธŒ๋žœ์น˜์˜ ์ˆ˜์ • ๋‚ด์šฉ์ด ํ•˜๋‚˜์˜ ํŒŒ์ผ์— ํ•ฉ์ณ์ง !

๊ฐ™์€ ๋ฌธ์„œ๋กœ ์„œ๋กœ ๋‹ค๋ฅธ ์œ„์น˜๋ฅผ ์ˆ˜์ •ํ–ˆ์„ ๊ฒฝ์šฐ ์ž๋™์œผ๋กœ ํ•ฉ์ณ์ฃผ๋Š” ๊ธฐ๋Šฅ์ด ์žˆ๋‹ค !

 

์„œ๋กœ ๋‹ค๋ฅธ ๋ธŒ๋žœ์น˜์—์„œ ํ•œ ๋ฌธ์„œ์˜ ๊ฐ™์€ ๋ถ€๋ถ„์„ ์ˆ˜์ •ํ–ˆ์„ ๋•Œ ๋ณ‘ํ•ฉํ•˜๊ธฐ

๊นƒ์—์„œ๋Š” ์ค„ ๋‹จ์œ„๋กœ ๋ณ€๊ฒฝ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•จ

์„œ๋กœ ๋‹ค๋ฅธ ๋ธŒ๋žœ์น˜์—์„œ ๊ฐ™์€ ๋ฌธ์„œ์˜ ๊ฐ™์€ ์ค„์„ ์ˆ˜์ •ํ–ˆ์„ ๊ฒฝ์šฐ,

๋ธŒ๋žœ์น˜๋ฅผ ๋ณ‘ํ•ฉํ•˜๋ฉด ๋ธŒ๋žœ์น˜ ์ถฉ๋Œ(conflict)์ด ๋ฐœ์ƒํ•จ.

์–ด๋–ค ๊ฒฝ์šฐ์— ๋ธŒ๋žœ์น˜ ์ถฉ๋Œ์ด ์ƒ๊ธฐ๋Š”์ง€ & ์ถฉ๋Œ์„ ์–ด๋–ป๊ฒŒ ํ•ด๊ฒฐํ•˜๋Š”์ง€

 

manual-4์˜ work.txt
main ๋ธŒ๋žœ์น˜์—์„œ work.txt ์ˆ˜์ •
o2 ๋ธŒ๋žœ์น˜์˜ work.txt ์ˆ˜์ •

main ๋ธŒ๋žœ์น˜์™€ o2 ๋ธŒ๋žœ์น˜ ์–‘์ชฝ์—์„œ work.txt ํŒŒ์ผ์˜ ์ˆ˜์ • ์œ„์น˜๊ฐ€ ๊ฐ™์Œ

 

git merge ๋ช…๋ น์„ ์‹คํ–‰ํ–ˆ์„ ๋•Œ์ฒ˜๋Ÿผ ๋น”์ด ์ž๋™์œผ๋กœ ์—ด๋ฆฌ์ง€ ์•Š๊ณ  ๊ฒฝ๊ณ  ๋ฉ”์‹œ์ง€ ๋‚˜ํƒ€๋‚จ.

work.txt๋ฅผ ์ž๋™ ๋ณ‘ํ•ฉํ•˜๋Š” ๋™์•ˆ ์ถฉ๋Œ์ด ๋ฐœ์ƒํ–ˆ๋‹ค.

(๋งŒ์ผ ํŒŒ์ผ์„ ์—ฌ๋Ÿฌ ๊ฐœ ๋ณ‘ํ•ฉํ–ˆ๋‹ค๋ฉด ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•œ ํŒŒ์ผ ์™ธ์— ๋‹ค๋ฅธ ํŒŒ์ผ์€ ์ž๋™์œผ๋กœ main ๋ธŒ๋žœ์น˜์— ๋ณ‘ํ•ฉ๋จ)

 

์ถฉ๋Œ์ด ์ƒ๊ธด ๋ฌธ์„œ๋Š” ์ž๋™์œผ๋กœ ๋ณ‘ํ•ฉ๋  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ

์‚ฌ์šฉ์ž๊ฐ€ ์ถฉ๋Œ ๋ถ€๋ถ„์„ ์ง์ ‘ ํ•ด๊ฒฐ ํ›„ ์ปค๋ฐ‹ํ•ด์•ผ ํ•จ.

 

vim work.txt๋กœ ์ถฉ๋Œ ๋ถ€๋ถ„ ํ™•์ธ

<<<<<<< HEAD์™€ ๊ฐ€์šด๋ฐ ๊ฐ€๋กœ์ค„(=======) ์‚ฌ์ด์˜ ๋‚ด์šฉ์€ ํ˜„์žฌ ๋ธŒ๋žœ์น˜์ธ main ๋ธŒ๋žœ์น˜์—์„œ ์ˆ˜์ •ํ•œ ๋‚ด์šฉ

๊ฐ€๋กœ์ค„(=======)๊ณผ >>>>>>> o2 ์‚ฌ์ด์˜ ๋‚ด์šฉ์€ o2 ๋ธŒ๋žœ์น˜์—์„œ ์ˆ˜์ •ํ•œ ๋‚ด์šฉ

์–‘์ชฝ ๋ธŒ๋žœ์น˜์˜ ๋‚ด์šฉ์„ ์ฐธ๊ณ ํ•˜๋ฉด์„œ ๋‚ด์šฉ์„ ์ง์ ‘ ์ˆ˜์ •ํ•ด์•ผ ํ•จ!

 

์›ํ•˜๋Š” ํ˜•ํƒœ๋กœ ๋‚ด์šฉ ์ˆ˜์ •ํ•˜๊ณ , ์ˆ˜์ • ๋๋‚˜๋ฉด ๋ฌธ์„œ์— ์žˆ๋˜ <<<<<<< HEAD, >>>>>>> o2, ======= ์‚ญ์ œํ•˜๊ณ ,

๋ฌธ์„œ ์ €์žฅ ํ›„ ํŽธ์ง‘๊ธฐ ์ข…๋ฃŒ

์ดํ›„ ์ˆ˜์ •ํ•œ work.txt๋ฅผ ์Šคํ…Œ์ด์ง€์— ์˜ฌ๋ฆฌ๊ณ  ์ปค๋ฐ‹ํ•˜๋ฉด ๋ !

์ „์ฒด ๊ณผ์ •

 

** ๋ณ‘ํ•ฉ ๋ฐ ์ถฉ๋Œ ํ•ด๊ฒฐ ํ”„๋กœ๊ทธ๋žจ

ํ”„๋กœ์ ํŠธ์˜ ๊ทœ๋ชจ๊ฐ€ ํด์ˆ˜๋ก ๋ธŒ๋žœ์น˜๊ฐ€ ๋งŽ์œผ๋ฏ€๋กœ ๋ธŒ๋žœ์น˜์—์„œ ๋ณ‘ํ•ฉํ•  ํŒŒ์ผ๋„ ๋งŽ์•„์ง€๋ฏ€๋กœ ๊ทธ๋งŒํผ ์ถฉ๋Œ๋„ ๋งŽ์•„์ง

๊ทธ๋ž˜์„œ ๊นƒ์˜ ๋ธŒ๋žœ์น˜ ๋ณ‘ํ•ฉ์„ ์ž๋™์œผ๋กœ ์ฒ˜๋ฆฌํ•ด์ฃผ๊ณ  ์ถฉ๋Œ์„ ํ•ด๊ฒฐํ•ด ์ฃผ๋Š” ํ”„๋กœ๊ทธ๋žจ์ด ๋งŽ๋‹ค.

๋ณ‘ํ•ฉ ์•Œ๊ณ ๋ฆฌ์ฆ˜์—๋Š” 2 way merge์™€ 3 way merge๊ฐ€ ์žˆ๋Š”๋ฐ,

3 way merge๊ฐ€ ํ›จ์”ฌ ํšจ์œจ์ ์ด๋ฏ€๋กœ ์ด๋ฅผ ์ง€์›ํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ ์„ ํƒํ•˜๋Š” ๊ฒŒ ์ข‹๋‹ค.

P4Merge ๋ฌด๋ฃŒ, ์‚ฌ์šฉ ํŽธ๋ฆฌ, ๋ณ‘ํ•ฉ ๊ธฐ๋Šฅ ์ข‹์Œ
๋‹จ์ถ•ํ‚ค๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๋‹จ์ 
meld ๋ฌด๋ฃŒ, ์˜คํ”ˆ์†Œ์Šค
ํŒŒ์ผ ๋น„๊ต ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์ง์ ‘ ํŽธ์ง‘๋„ ๊ฐ€๋Šฅ
Kdiff3 ๋ฌด๋ฃŒ, ์‚ฌ์šฉ ํŽธ๋ฆฌ, ๋ณ‘ํ•ฉ ๊ธฐ๋Šฅ ์ข‹์Œ
ํ•œ๊ธ€ ๊นจ์ ธ๋ณด์ผ ์ˆ˜ ์žˆ๋‹ค๋Š” ๋‹จ์ 
Araxis Merge ์œ ๋ฃŒ
์šฉ๋Ÿ‰ ํฐ ํŒŒ์ผ์—์„œ ์ž˜ ๋™์ž‘ํ•จ

 

 

๋ณ‘ํ•ฉ ๋๋‚œ ๋ธŒ๋žœ์น˜ ์‚ญ์ œ

๋ธŒ๋žœ์น˜๋ฅผ ๋ณ‘ํ•ฉํ•œ ํ›„ ๋” ์ด์ƒ ์‚ฌ์šฉํ•˜์ง€ ์•Š์€ ๋ธŒ๋žœ์น˜๋Š” ๊นƒ์—์„œ ์‚ญ์ œ

๋‹จ, ๋ธŒ๋žœ์น˜๋ฅผ ์‚ญ์ œํ•˜๋”๋ผ๋„ ์™„์ „ํžˆ ์ง€์›Œ์ง€๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋ฉฐ, ๊ฐ™์€ ์ด๋ฆ„์˜ ๋ธŒ๋žœ์น˜๋ฅผ ๋งŒ๋“ค๋ฉด ์˜ˆ์ „ ๋‚ด์šฉ ๋‹ค์‹œ ๋ณผ ์ˆ˜ ์žˆ์Œ

 

$ git branch # ํ˜„์žฌ ์ €์žฅ์†Œ์— ์–ด๋–ค ๋ธŒ๋žœ์น˜ ์žˆ๋Š”์ง€ ํ™•์ธ
$ git switch main # ๋ธŒ๋žœ์น˜๋ฅผ ์‚ญ์ œํ•˜๊ธฐ ์œ„ํ•ด main์œผ๋กœ ์ด๋™
$ git branch -d o2 # o2 ๋ธŒ๋žœ์น˜ ์‚ญ์ œ
$ git branch # ๋ธŒ๋žœ์น˜ ์‚ญ์ œ๋˜์—ˆ๋Š”์ง€ ํ™•์ธ

์ €์žฅ์†Œ์˜ ๊ธฐ๋ณธ ๋ธŒ๋žœ์น˜๋Š” main์ด๋ฏ€๋กœ ๋ธŒ๋žœ์น˜๋ฅผ ์‚ญ์ œํ•˜๋ ค๋ฉด main ๋ธŒ๋žœ์น˜์—์„œ ํ•ด์•ผ ํ•จ.

 

๋ธŒ๋žœ์น˜ ์‚ญ์ œ 'delete'

git branch -d ๋ธŒ๋žœ์น˜-์ด๋ฆ„

git branch -D ๋ธŒ๋žœ์น˜-์ด๋ฆ„ : main ๋ธŒ๋žœ์น˜์— ๋ณ‘ํ•ฉํ•˜์ง€ ์•Š์€ ๋ธŒ๋žœ์น˜๋„ ๊ฐ•์ œ๋กœ ์‚ญ์ œ

 

์‚ญ์ œํ•œ ๋ธŒ๋žœ์น˜์™€ ๊ฐ™์€ ์ด๋ฆ„์œผ๋กœ ๋‹ค์‹œ ๋ธŒ๋žœ์น˜๋ฅผ ๋งŒ๋“ค๋ฉด ์˜ˆ์ „ ์ž‘์—… ๋‚ด์šฉ ๊ทธ๋Œ€๋กœ ๋‚˜ํƒ€๋‚จ

์ฆ‰, ๋ธŒ๋žœ์น˜ ์‚ญ์ œ๋Š” ์ €์žฅ์†Œ์—์„œ ์™„์ „ํžˆ ์—†์• ๋Š” ๊ฒŒ ์•„๋‹ˆ๋ผ, ๊นƒ์˜ ํ๋ฆ„ ์†์—์„œ ๊ฐ์ถ”๋Š” ๊ฒƒ!

 

cherry-pick์œผ๋กœ ๋ณ‘ํ•ฉํ•˜๊ธฐ

'cherry-pick' ๋˜ ํ•˜๋‚˜์˜ ๋ณ‘ํ•ฉ ๋ฐฉ๋ฒ•

main ๋ธŒ๋žœ์น˜์™€ topic ๋ธŒ๋žœ์น˜๋ฅผ ํ•ฉ์น˜๊ธด ํ•˜๋Š”๋ฐ,

๋ธŒ๋žœ์น˜ ์ „์ฒด๊ฐ€ ์•„๋‹ˆ๋ผ topic ๋ธŒ๋žœ์น˜ ์ค‘ ํŠน์ • ๋ฒ„์ „์˜ ๋ณ€๊ฒฝ ๋‚ด์šฉ๋งŒ ํ•ฉ์น˜๋ ค๊ณ  ํ•  ๋•Œ ์‚ฌ์šฉ.

topic ๋ธŒ๋žœ์น˜์— ์žˆ๋Š” ๋‹ค๋ฅธ ๋ฒ„์ „๋“ค์€ ํ•ฉ์ณ์ง€์ง€ ์•Š์Œ

main ๋ธŒ๋žœ์น˜์— topic ๋ธŒ๋žœ์น˜๋ฅผ cherry-pick ํ–ˆ์„ ๋•Œ

 

ํ„ฐ๋ฏธ๋„์—์„œ๋Š” ์„ธ๋ฏธ์ฝœ๋ก (;)์œผ๋กœ ๊ตฌ๋ถ„ํ•ด์„œ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋ช…๋ น ํ•œ๊บผ๋ฒˆ์— ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Œ

touch : ๋นˆ ํŒŒ์ผ์„ ๋งŒ๋“ฆ

$ touch init.txt; git add init txt; git commit -m "init"
// init.txt ํŒŒ์ผ ๋งŒ๋“ฆ ; ์Šคํ…Œ์ด์ง• ; ์ปค๋ฐ‹

git log --all ์˜ต์…˜ : ์ตœ์‹  ์ปค๋ฐ‹ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋ชจ๋“  ์ปค๋ฐ‹์„ ๋‹ค ๋ณด์—ฌ์ฃผ๊ธฐ ์œ„ํ•œ ์˜ต์…˜

 

$ git branch topic
$ git log --oneline --all --graph

$ touch m1; git add m1; git commit -m "m1"
$ touch m2; git add m2; git commit -m "m2"
$ git log --oneline --all --graph

$ git switch topic
$ touch t1; git add t1; git commit -m "t1"
$ touch t2; git add t2; git commit -m "t2"
$ touch t3; git add t3; git commit -m "t3"
$ git log --oneline --all --graph

ํ˜„์žฌ 2๊ฐœ์˜ ๋ธŒ๋žœ์น˜๊ฐ€ ์žˆ๋Š”๋ฐ,

topic ๋ธŒ๋žœ์น˜์˜ t2 ๋ฒ„์ „์—์„œ ์ ์šฉํ–ˆ๋˜ ๋‚ด์šฉ์„ main ๋ธŒ๋žœ์น˜์—๋„ ์ ์šฉํ•˜๊ณ  ์‹ถ์„ ๋•Œ

์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด cherry-pick.

topic ๋ธŒ๋žœ์น˜์˜ ์—ฌ๋Ÿฌ ๋ฒ„์ „ ์ค‘ ํ•˜๋‚˜๋ฅผ ๊ณจ๋ผ์™€์„œ ๋ณ‘ํ•ฉ

 

 

$ git switch main
$ git cherry-pick 0000000

์šฐ์„  ๋ณ‘ํ•ฉ๋  ๋ธŒ๋žœ์น˜์ธ main ๋ธŒ๋žœ์น˜๋กœ ์ „ํ™˜.

$ git cherry-pick ์ฒด๋ฆฌํ”ฝํ• -ํ•ด์‹œ

 

 

main ๋ธŒ๋žœ์น˜์— ์–ด๋–ค ํŒŒ์ผ์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๊ณ 

๊นƒ ๋กœ๊ทธ ํ™•์ธ

ls; git log

topic ๋ธŒ๋žœ์น˜์—์„œ t2๊ฐ€ ์žˆ๊ณ , main ๋ธŒ๋žœ์น˜์—๋„ t2๊ฐ€ ์ถ”๊ฐ€๋จ

 

728x90