๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ Today I Learned/GitHub & git

[GitHub & git] ํ˜‘์—… ๋ฐฉ๋ฒ•

by Joseph Seong 2023. 12. 26.

 

 

 

 

[GitHub & git] ํ˜‘์—… ๋ฐฉ๋ฒ•

 

 

ํŒ€์žฅ (์ดˆ๊ธฐ ์„ธํŒ…)

 

1. ์ž‘์—…ํ•  ํด๋” ์ƒ์„ฑ

 

2. ์ž‘์—… ํ™˜๊ฒฝ ๊ตฌ์„ฑํ•˜๊ธฐ

 

git init	 // ํ•ด๋‹น ํด๋”๋กœ ๋“ค์–ด๊ฐ€์„œ (initialize empty Git repository in ~~~ ์ด๋ผ๊ณ  ๋‚˜์˜ค๋ฉด ์„ฑ๊ณต)
ls -al		 // .git ์ด๋ผ๋Š” ํด๋”๊ฐ€ ์žˆ์œผ๋ฉด ํ•ด๋‹น ํ”„๋กœ์ ํŠธ์—์„  ๋” ์ด์ƒ git init ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•  ํ•„์š”๊ฐ€ ์—†์Œ

 

3. GitHub ๋ ˆํฌ์ง€ํ† ๋ฆฌ(Repository) ์ƒ์„ฑ

 

4.  ์›๊ฒฉ ์ €์žฅ์†Œ์— commit, push ํ•˜๊ธฐ

 

git remote add origin ๋ณต์‚ฌํ•œ ์›๊ฒฉ์ €์žฅ์†Œ URL  // ๊ฐ„๋‹จํ•˜๊ฒŒ pushํ•˜๊ฒŒ ์œ„ํ•ด ๋ณต์‚ฌํ•œ ์ฃผ์†Œ๋ฅผ origin์ด๋ผ๊ณ  ๋ช…๋ช…ํ•˜๊ฒ ๋‹ค!
git branch -M main   // ๊ธฐ๋ณธ ๋ธŒ๋žœ์น˜ ์ด๋ฆ„์„ master์—์„œ main์œผ๋กœ ๋ฐ”๊ฟ”์ฃผ๋Š” ๋ช…๋ น์–ด
git push -u origin master

git add . 
git commit -m "์ปค๋ฐ‹ ๋ฉ”์„ธ์ง€"
git push origin main

 

5. dev ๋ธŒ๋žœ์น˜ ์ƒ์„ฑ

 

git switch -c dev	// ๋กœ์ปฌ์—์„œ dev ๋ธŒ๋žœ์น˜ ์ƒ์„ฑ (๋˜๋Š” git checkout -b dev)
git push origin dev	// github์—๋„ ๋ฐ˜์˜

 

6. Github์—์„œ dev ๋ธŒ๋žœ์น˜๋ฅผ default๋กœ ์„ค์ •

  • main ๋ธŒ๋žœ์น˜๋Š” ๋ฐฐํฌ์šฉ, dev ๋ธŒ๋žœ์น˜๋Š” ๋ฐฐํฌ ์ „ ํ•ฉ์น˜๊ธฐ์šฉ!
  • SettingsDefault Branch ์—์„œ ์•„๋ž˜ ๋ฒ„ํŠผ ํด๋ฆญ

 

 

7.  ํŒ€์›๋“ค์„ ๋Œ€ํ‘œ์ž github์˜ collaborator(ํ˜‘๋ ฅ์ž)๋กœ ๋“ฑ๋กํ•˜๊ธฐ

  • github ๋ ˆํฌ์ง€ํ† ๋ฆฌSettingsCollaboratorsAdd people ํด๋ฆญ

 

 

8.  username ์ด๋‚˜ email ๋“ฑ์„ ์ด์šฉํ•˜์—ฌ ํŒ€์›๋“ค์„ ์ดˆ๋Œ€

 


 

ํŒ€์›

 

1. ์ด๋ฉ”์ผ ์ดˆ๋Œ€์žฅ ์ˆ˜๋ฝ

 

2. ๋ณธ์ธ ์ปดํ“จํ„ฐ์— ํด๋” ์ƒ์„ฑ

 

3. ํ•ด๋‹น ํด๋”๋กœ ์ด๋™ ํ›„ clone ํ•˜๊ธฐ

 

git clone <github ์ฃผ์†Œ>

 

4. ๊ธฐ๋Šฅ ๋ธŒ๋žœ์น˜ ์ƒ์„ฑ ๋ฐ ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ

 

git switch -c ๊ธฐ๋Šฅ๋ธŒ๋žœ์น˜๋ช…	// ํ˜„์žฌ ํด๋” ์œ„์น˜ ํ™•์ธ ์ž˜ํ•ด์•ผ๋จ

git branch	// ํ˜„์žฌ ๋ธŒ๋žœ์น˜ ํ™•์ธ

 

5. github์— ๋ณ€๊ฒฝ๋œ ์ฝ”๋“œ ์—…๋กœ๋“œ

 

// ํ•˜๊ธฐ ์ „์— branch๋ช… ๋‹ค์‹œ ํ™•์ธํ•ด๋ณด๊ธฐ (dev๋‚˜ main์— ๋ฐ”๋กœ ์˜ฌ๋ฆฌ๋ฉด ์•ˆ๋จ.)
git add .
git commit -m "<๋ฉ”์„ธ์ง€>"
git push origin <๋ธŒ๋žœ์น˜๋ช…>

 

6. Pull requests ์ƒ์„ฑ ํ›„ ๋ฆฌ๋ทฐ ์š”์ฒญ ๋ฐ ์Šน์ธ ๋ฐ›๊ธฐ

 

  • Pull request ์ƒ์„ฑ
๋”๋ณด๊ธฐ

1. Compare & pull request ํด๋ฆญ

 

2. base ๋ธŒ๋žœ์น˜(ex. dev) ๋ฐ ๊ธฐ๋Šฅ ๋ธŒ๋žœ์น˜(ex. feature/signup) ์ด๋ฆ„ ํ™•์ธ & Pull request ์ƒ์„ฑ

 

3. Pull requests ํƒญ์—์„œ ํ™•์ธ

 

๐Ÿšซ Conflict ๋ฐœ์ƒ์‹œ merge ๋ถˆ๊ฐ€๋Šฅ

 

  • ๋ฆฌ๋ทฐ ์š”์ฒญ
๋”๋ณด๊ธฐ

๐Ÿ’ก ๋ฆฌ๋ทฐ ์š”์ฒญํ•˜๊ธฐ

  • Pull requests ํƒญ์˜ Reviewers์—์„œ ๋ฆฌ๋ทฐ ์š”์ฒญ

 

 ๐Ÿ’ก ๋ฆฌ๋ทฐ ๋‹ต๋ณ€ํ•˜๊ธฐ

  • File changed๋กœ ์ด๋™ ํ›„ ๋ฆฌ๋ทฐํ•  ๋ถ€๋ถ„ ์„ ํƒ
  • ๋ฆฌ๋ทฐ ์ž‘์„ฑ ๋ฐ Start a review ํด๋ฆญ 

 

  • Finish your review ํด๋ฆญ ๋ฐ Comment(์ฝ”๋ฉ˜ํŠธ), Approve(๋ณ€๊ฒฝ ์Šน์ธ), Request Changes(๋ณ€๊ฒฝ ์š”์ฒญ) ์ค‘ ํ•˜๋‚˜ ์„ ํƒ ํ›„ Submit review ํด๋ฆญ

 

  • ๊ฒฐ๊ณผ

 

๐Ÿ“Œ  ์ถ”๊ฐ€ ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ ์‹œ

  • ๋งŒ์•ฝ ๋ˆ„๊ตฐ๊ฐ€ dev์— merge๋ฅผ ํ•œ ์ƒํƒœ๋ผ๋ฉด ๋กœ์ปฌ(๋‚ด ์ปดํ“จํ„ฐ)์—์„œ ๋จผ์ € ํ™•์ธํ•ด๋ณด๊ณ  pr์„ ์˜ฌ๋ฆฌ๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

    1. ๋‚ด ๋กœ์ปฌ์˜ dev์—๋„ ๋ณ€๊ฒฝ ์‚ฌํ•ญ ๋ฐ˜์˜ (dev branch ์ฝ”๋“œ๋ฅผ pull ํ•ด์„œ ๊ฐ€์ ธ์˜ค๊ธฐ)

 

git checkout dev	  // dev ๋ธŒ๋žœ์น˜๋กœ ์ด๋™ (๋˜๋Š” git switch dev)
git pull origin dev	  // ๋ณ€๊ฒฝ์‚ฌํ•ญ์ด ๋ฐ˜์˜๋œ dev๋ฅผ pull ๋ฐ›๊ณ 

git checkout ์ž‘์—…๋ธŒ๋žœ์น˜	// ์ž‘์—…ํ•˜๋˜ ๋ธŒ๋žœ์น˜๋กœ ์ด๋™
git rebase -i dev	  // dev ๋ธŒ๋žœ์น˜๋ฅผ ๊ธฐ์ค€์œผ๋กœ rebase๋ฅผ ์ง„ํ–‰ํ•˜๊ฒ ๋‹ค๋Š” ๋œป

   

git rebase๋ž€?

๋”๋ณด๊ธฐ
  • ๋‘ ๊ฐœ์˜ ๊ณตํ†ต Base๋ฅผ ๊ฐ€์ง„ branch์—์„œ ํ•œ branch์˜ Base๋ฅผ ๋‹ค๋ฅธ branch์˜ ์ตœ์‹  ์ปค๋ฐ‹์œผ๋กœ branch์˜ Base๋ฅผ ์˜ฎ๊ธฐ๋Š” ์ž‘์—…
rebase

 

 

 

    2. ๋น”์—๋””ํ„ฐ๊ฐ€ ๋œจ๋ฉด pick๊ณผ squash๋ฅผ ์ •ํ•˜๊ณ  ๋‚˜๊ฐ„๋‹ค.

 

    3. ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ ๋ฐ˜๋ณต

 

  1. ๊ธฐ๋Šฅ ๋ธŒ๋žœ์น˜ ์ƒ์„ฑ ๋ฐ ์ฝ”๋“œ ์ž‘์„ฑ
  2. git add, commit, push
  3. pull request ์ƒ์„ฑ ๋ฐ ์ฝ”๋“œ ๋ฆฌ๋ทฐ
  4. ๋‚ด ๋กœ์ปฌ์—์„œ ์ถฉ๋Œ ํ•ด๊ฒฐ ๋ฐ ํ…Œ์ŠคํŠธ
  5. ์ฝ”๋“œ ์—…๋กœ๋“œ ๋ฐ merge

 

๐Ÿ“Œ  git status

  • ์ €์žฅ์†Œ ์•ˆ์— ์žˆ๋Š” ํŒŒ์ผ๋“ค์˜ ์ƒํƒœ ์ •๋ณด๋ฅผ ํ™•์ธํ•  ๋•Œ ์‚ฌ์šฉ

 

๐Ÿ“Œ  git log

  • ์ €์žฅ ๋‚ด์—ญ์„ ํ™•์ธํ•˜๋Š” ๋ช…๋ น์–ด