๐Ÿš€ ์šฐ์•„ํ•œํ…Œํฌ์ฝ”์Šค 6๊ธฐ ํ”„๋ฆฌ์ฝ”์Šค - 1์ฃผ์ฐจ ์˜จ๋ณด๋”ฉ ๋ฏธ์…˜: ์ˆซ์ž์•ผ๊ตฌ

์ดํ•˜์–€ยท2023๋…„ 10์›” 20์ผ
0
post-thumbnail

1๏ธโƒฃ fork & clone

  • fork ์™„๋ฃŒ


  • clon ์™„๋ฃŒ

How to...

๐Ÿ™Œ ์ฒซ๋ฒˆ์งธ, ํ„ฐ๋ฏธ๋„์—์„œ ํด๋ก  ๋ช…๋ น์–ด ์ž‘์„ฑํ•˜๊ธฐ

git clone https://github.com/{๋ณธ์ธ_์•„์ด๋””}/{์ €์žฅ์†Œ ์•„์ด๋””}.git
ex) git clone https://github.com/woowacourse/java-baseball.git



๐Ÿ™Œ ๋‘๋ฒˆ์งธ, ํด๋ก ๋œ ํด๋”๋กœ ๊ฐ€๊ธฐ!

// cloneํ•œ ํด๋”๋กœ ์ด๋™ํ•˜๋Š” ๋ฐฉ๋ฒ•
cd {์ €์žฅ์†Œ ์•„์ด๋””}
ex) cd java-baseball



๐Ÿ™Œ ์„ธ๋ฒˆ์งธ, ์ƒˆ๋กœ์šด ๋ธŒ๋žœ์น˜ ๊ตฌ์„ฑํ•˜๊ธฐ

git checkout -b {๋ณธ์ธ ์•„์ด๋””}
ex) git checkout -b javajigi




๐Ÿ˜ซ ์ฃผ์˜์‚ฌํ•ญ
์ƒˆ๋กœ์šด ๋ธŒ๋žœ์น˜ ์ƒ์„ฑ ์‹œ commit ๊ธฐ๋ก์€ main ๋ธŒ๋žœ์น˜์™€ ์ฒซ ํžˆ์Šคํ† ๋ฆฌ๊ฐ€ ๋™์ผํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, main ๋ธŒ๋žœ์น˜์˜ ์ปค๋ฐ‹์ด ์ƒˆ๋กญ๊ฒŒ ๋งŒ๋“  ๋ธŒ๋žœ์น˜์—์„œ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•ด์•ผ ํ•˜๋Š” ๊ฒƒ์ด์ฃ .


2๏ธโƒฃ ๊ธฐ๋Šฅ ๋ชฉ๋ก ์ž‘์„ฑ

docs/README.md ์— ๊ตฌํ˜„ํ•˜๊ณ ์ž ํ•˜๋Š” ๊ธฐ๋Šฅ์˜ ๋ชฉ๋ก์„ ์ž‘์„ฑํ•ด commit

๋ฌธ์ œ ๋ฐœ์ƒ

  • IntelliJ์—์„œ ๋‚ด Github ๊ณ„์ •์„ ์ฐพ๊ธด ํ–ˆ์œผ๋‚˜, Git ์„ค์ • ์ƒ ์‹ค์ œ ๋‚˜์˜ Git ๊ณ„์ •์ด ์—ฐ๋™๋˜์ง€ ์•Š์€ ๋ฌธ์ œ
    - ๋‚˜์˜ ๊ณ„์ • ๊ณ ์œ  ์•„์ด๋””๊ฐ€ ์ •ํ™•ํžˆ ๋ฌด์—‡์ธ์ง€ ๋ชฐ๋ž๋˜ ์ฑ„๋กœ ๋‹จ์ˆœํžˆ ์ด๋ฆ„์„ user.name์— ์ ์šฉํ•˜๋ฉด์„œ ๋ฐœ์ƒํ•œ ๊ฒƒ์œผ๋กœ ๋ณด์ž„.

  • IntelliJ์—์„œ Commit๊ณผ Push๊ฐ€ ์ด๋ค„์ง€๊ธด ํ–ˆ์œผ๋‚˜, missing default github account์˜ค๋ฅ˜ ๋ฐœ์ƒ

ํ•ด๊ฒฐ

Settings... > Version Control >Github

  • ๊ธฐ์กด์— ๋œจ๋˜ Github ๊ณ„์ •์„ โž– ๊ธฐํ˜ธ๋กœ ์ง€์šฐ๊ณ  ๋‹ค์‹œ Token์„ ์‚ฌ์šฉํ•˜์—ฌ ๋กœ๊ทธ์ธ
    (๋ฐœ๊ธ‰ํ•œ ํ† ํฐ์€ ์ธํ…”๋ฆฌ์ œ์ด์— ๋ถ™์—ฌ๋„ฃ๊ธฐ ํ•˜๋ฉด ๋จ)
  • ๊ณ„์ • ์„ ํƒ ํ›„ โœ”๏ธ๊นŒ์ง€ ํ™•์‹คํžˆ ํ•ด์ฃผ์–ด์•ผ ํ•จ.

ํ† ํฐ ๋ฐœ๊ธ‰ ๋ฐฉ๋ฒ•

  • Github Settings ํด๋ฆญ


  • ํ•˜๋‹จ Developer settings ํด๋ฆญ


  • Personal access tokens > Tokens (classic) > Grnerate new token ํด๋ฆญ


  • Generate new token (classic) ํด๋ฆญ


  • ์ด๋ฆ„์„ ์„ค์ •ํ•ด์ฃผ๊ณ , Expiration์€ ๋ฐ˜๋“œ์‹œ No ecpiration์œผ๋กœ ์„ค์ •, ๊ถŒํ•œ์€ ๋ชจ๋“  ๋ถ€๋ถ„์„ ์ฒดํฌํ•ด์ฃผ์–ด ๊ถŒํ•œ ํ—ˆ์šฉํ•ด์ฃผ๊ธฐ


  • Generate token ํด๋ฆญํ•ด ์ƒ์„ฑ


  • ์ƒ์„ฑ์„ ๋งˆ์น˜๋ฉด ํ† ํฐ์ด ๋‚˜์˜ค๋Š”๋ฐ, ์ด๊ฒƒ์€ ๋ฐ˜๋“œ์‹œ ๋ฐ”๋กœ ๋ณต์‚ฌํ•ด๋‘ฌ์•ผ ํ•จ.
    ์ผํšŒ์„ฑ์œผ๋กœ ๋ณด์—ฌ์ฃผ๊ธฐ ๋•Œ๋ฌธ์ž„.

๐Ÿšจ ๊ณ„์ • ์„ ํƒ ํ›„ โœ”๏ธ๊นŒ์ง€ ํ™•์‹คํžˆ ํ•ด์ฃผ์–ด์•ผ ํ•จ-> ์ด๊ฒƒ์ด ์›์ธ!

โœ… ์ฐธ๊ณ 

  • ๊นƒํ—ˆ๋ธŒ ํ˜„์žฌ ๊ณ„์ • ์ •๋ณด ํ™•์ธ ํ•˜๋Š” ๋ฒ•
git config user.name
git config user.email
  • ๊ณ„์ • ์ •๋ณด ์ˆ˜์ •
git config --global user.name {์•„์ด๋””}
git config --global user.email {์ด๋ฉ”์ผ}

  • ๋ณธ์ธ์˜ ๊ฒฝ์šฐ, ๊ณ„์ • ์ •๋ณด๊ฐ€ ์‹ค์ œ Github ๊ณ„์ •๊ณผ ์—ฐ๊ฒฐ๋˜์ง€ ์•Š๋Š” ๋ฌธ์ œ์˜€์Œ.

  • ํ•ด๊ฒฐ ํ›„, ๊ณ„์ •์— ๋งˆ์šฐ์Šค๋ฅผ ๊ฐ€์ ธ๋‹ค๋Œ€๋ฉด ์ด๋ ‡๊ฒŒ ์‹ค์ œ Git ๊ณ„์ •์ด ์—ฐ๋™๋˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Œ.

๋˜ ๋‹ค๋ฅธ ๋ฌธ์ œ ์ƒํ™ฉ ๋ฐœ์ƒ

์šฐ์„  push ํ•˜์ง€ ์•Š์€ commit์„ IntelliJ์—์„œ ์‚ญ์ œํ•˜๋Š” ๋ฐฉ๋ฒ•
1. ์‚ญ์ œ๋ฅผ ์›ํ•˜๋Š” commit์„ ํด๋ฆญํ•˜๊ณ , ๋งˆ์šฐ์Šค ์˜ค๋ฅธ์ชฝ์„ ๋ˆŒ๋Ÿฌ Reset Current Branch to Here... ํด๋ฆญ
(์ด ์‚ฌ์ง„์€ ์ด๋ฏธ ์‚ญ์ œ ์„ฑ๊ณต ํ›„์— ์บก์ณํ•ด ํ˜„์žฌ ์„ ํƒ๋œ commit์€ ๋ฌธ์ œ commit์ด ์•„๋‹˜์„ ์•Œ๋ฆฝ๋‹ˆ๋‹ค.)





2. ์›ํ•˜๋Š” reset ๊ฐ•๋„ ์„ ํƒ ๋ฐ Reset ํด๋ฆญ

soft : commit ์ด์ „ ์ƒํƒœ๋กœ ๋Œ์•„๊ฐ€๊ธฐ
mixed(default) : add ์ „์œผ๋กœ ๋Œ์•„๊ฐ€๊ธฐ
hard : ํŒŒ์ผ์ด ์„ ํƒํ•œ ์ปค๋ฐ‹ ์ƒํƒœ๋กœ ๋˜๋Œ์•„๊ฐ„๋‹ค.
keep : ํŒŒ์ผ์€ ์„ ํƒํ•œ ์ปค๋ฐ‹ ์ƒํƒœ๋กœ ๋˜๋Œ์•„๊ฐ€์ง€๋งŒ ๋กœ์ปฌ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์€ ๊ทธ๋Œ€๋กœ ์œ ์ง€๋œ๋‹ค.





  1. ๋งŒ์•ฝ hard ๋ชจ๋“œ๋กœ resetํ–ˆ์Œ์—๋„ commit์ด ์‚ญ์ œ๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ
  • IntelliJ์˜ Terminal์—์„œ ์ง„ํ–‰

  • git log --oneline์œผ๋กœ commit ๊ธฐ๋ก ํ™•์ธ

  • ์‚ญ์ œ๋˜์ง€ ์•Š์€ ์ด์œ ๋Š”, HEAD๋กœ ์„ค์ •๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์ผ ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์Œ.
    (์˜ˆ๋ฅผ ๋“ค๋ฉด ์ด๋Ÿฐ ์‹)

  • git reset --hard HEAD~{์ˆœ์„œ}๋ฅผ ์ž…๋ ฅํ•ด์ฃผ๋ฉด, HEAD๊ฐ€ ์ด์ „ ์ปค๋ฐ‹์œผ๋กœ ๋Œ์•„๊ฐ.
    ๋ณธ์ธ์˜ ๊ฒฝ์šฐ, HEAD๊ฐ€ ๋งจ ์œ„์— ์žˆ์—ˆ๊ธฐ ๋•Œ๋ฌธ์— 1์„ ์ ์šฉํ•จ.



  1. ๊ฒฐ๊ณผ -> ์‚ญ์ œ ์™„๋ฃŒ!

๋ฌธ์ œ ์ƒํ™ฉ

  • Forkํ•œ ๋ ˆํฌ์ง€ํ„ฐ๋ฆฌ์— commit์„ ์ง„ํ–‰ํ•ด๋„ ์ž”๋””๊ฐ€ ์‹ฌ์–ด์ง€์ง€ ์•Š๋Š”๋‹ค...?

    ๊ทธ๋™์•ˆ Github๋ฅผ ์ด์šฉํ•œ ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŽ์ด ์ง„ํ–‰ํ•˜์ง€ ์•Š์•„ ํƒˆ๋ชจ...๋ผ๊ธฐ ๋ณด๋‹ค๋Š” ๋ฏผ๋จธ๋ฆฌ์— ๊ฐ€๊น์ง€๋งŒ ๊ทธ๋ž˜๋„ ์ง€๊ธˆ๋ถ€ํ„ฐ ์ž”๋””๋ฅผ ์‹ ๊ฒฝ์“ฐ๊ณ ์ž ์—ด์‹ฌํžˆ ํ–ˆ๋Š”๋ฐ...
    ์–ด๋””๊ฐ”์„๊นŒ์š”...?๐Ÿ˜ข

ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•

Mirror Push

๋ฐฑ์—”๋“œ์˜ ์ตœ์Šน์ค€๋‹˜๊ป˜์„œ ๊ณต์œ ํ•ด์ฃผ์…จ๋‹ค! ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค๐Ÿ˜Š
๐Ÿ”— [Git] Forkํ•œ ๋ ˆํฌ์ง€ํ† ๋ฆฌ์˜ ์ปค๋ฐ‹์„ ์ž”๋””์— ๋ฐ˜์˜ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด? Git Mirror Push (feat. ์šฐํ…Œ์ฝ”)

  1. commit ๋ณต์‚ฌ์šฉ ๋ ˆํฌ์ง€ํ„ฐ๋ฆฌ ์ƒ์„ฑ


  2. ๋‚ด๊ฐ€ forkํ•ด์„œ ์ž‘์—…ํ•˜๋˜ ๋ ˆํฌ์ง€ํ„ฐ๋ฆฌ url ๋ณต์‚ฌ


  3. ๋กœ์ปฌ ํ™˜๊ฒฝ์— bare clone!
    git clone --bare https://github.com/๊นƒํ—ˆ๋ธŒID/๋ ˆํฌ์ง€ํ„ฐ๋ฆฌ๋ช….git

    -> ์ˆ˜์ • : ํด๋” ์ด๋ฆ„์ด ๊ฐ™์•„ ํ—ท๊ฐˆ๋ฆด ๊ฒƒ ๊ฐ™์•„ ํด๋” ์กฐ์ •


๐Ÿง bare clone์ด ๋ญ”๊ฐ€์š”?

  • ๊ฐœ๋ฐœ์ž๊ฐ€ ์ž‘์—…ํ•  ํ•„์š”๊ฐ€ ์—†๋Š” ๋‹จ์ˆœํ•œ ๋ฐฑ์—…์ด๋‚˜ ๊ณต์œ  ๋ชฉ์ ์œผ๋กœ ์‚ฌ์šฉ(์›๊ฒฉ ์ €์žฅ์†Œ)


  1. Mirror push ์ง„ํ–‰
$ cd forkedRepository.git
$ git push --mirror https://github.com/userID/newRepository.git

-> commit ๊ธฐ๋ก ๋ฏธ๋Ÿฌ๋ง ์™„๋ฃŒ!




++ ์ถ”๊ฐ€
5. ๊ทธ๋ž˜๋„ ์ž”๋””๊ฐ€ ์‹ฌ์–ด์ง€์ง€ ์•Š์•„์š”๐Ÿ˜ฑ
-> ์ด๋•, ํ˜„์žฌ ์ƒˆ๋กœ ๋งŒ๋“  ๋ ˆํฌ์ง€ํ„ฐ๋ฆฌ์˜ defalut branch๋ฅผ ์ปค๋ฐ‹ ๊ธฐ๋ก์ด ์žˆ๋Š” branch๋กœ ๋ณ€๊ฒฝํ•˜๋ฉด ๋œ๋‹ค!!

  • branch์—์„œ View all branches ํด๋ฆญ


  • Default branch์—์„œ โ†”๏ธ ํด๋ฆญ


  • โ†”๏ธ ํด๋ฆญ


  • default๋กœ ์„ค์ •ํ•˜๊ณ  ์‹ถ์€ ๋ธŒ๋žœ์น˜๋ช… ํด๋ฆญ ํ›„ Update




  1. ๊ฒฐ๊ณผ๋Š”? ์„ฑ๊ณต โœ…
profile
์–ธ์  ๊ฐ€ ๋‚ด ์ฝ”๋“œ๋กœ ์„ธ์ƒ์— ๊ธฐ์—ฌํ•  ์ˆ˜ ์žˆ๋„๋ก, BE ๊ฐœ๋ฐœ ๊ธฐ๋ก ๋…ธํŠธโ˜˜๏ธ

0๊ฐœ์˜ ๋Œ“๊ธ€