Skip to content

mikekang47/git-training

ย 
ย 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

11 Commits
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Git์— ๋Œ€ํ•œ ์ดํ•ด & ์„ค์น˜

Book

  • GitHub ๊ณ„์ • ๋งŒ๋“ค๊ธฐ
  • Sourcetree ๋ฅผ ์„ค์น˜
    • ์ž‘์—…์€ ๋ฐ˜๋“œ์‹œ ํ„ฐ๋ฏธ๋„์—์„œ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค. Sourcetree์™€ ๊ฐ™์€ GUI๋„๊ตฌ๋Š” ์ค‘๊ฐ„์— ๊ณผ์ •์„ ์ƒ๋žตํ•ฉ๋‹ˆ๋‹ค.
    • ๊ทธ๋Ÿฌ๋‚˜ ๋ญ”๊ฐ€๋ฅผ ํ•  ๋•Œ๋งˆ๋‹ค Sourcetree๋ฅผ ๊ณ„์† ๋ณด์‹œ๋ฉด Git์— ๋Œ€ํ•ด ์•Œ ์ˆ˜ ์žˆ๊ณ , ๋ฌด์Šจ ์ผ์ด ๋ฒŒ์–ด์ง€๊ณ  ์žˆ๋Š”์ง€๋„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Git Style Guide ์ˆ™์ง€

ikaruce/git-style-guide

ํ„ฐ๋ฏธ๋„ ํ™˜๊ฒฝ ์„ค์ •

  • Windows
    • PowerShell ์„ ๊ณต๋ถ€ํ•˜๊ณ  git ๋ช…๋ น์–ด ์ˆ˜ํ–‰์€ PowerShell ์—์„œ ์ง„ํ–‰
  • Mac
    • iterm ์„ค์น˜ ํ›„ iterm ํ„ฐ๋ฏธ๋„์—์„œ ์ง„ํ–‰

์‹œ์ž‘ํ•˜๊ธฐ

์ƒˆ ์ €์žฅ์†Œ ๋งŒ๋“ค๊ณ  ์‹œ์ž‘ํ•˜๊ธฐ

git init

์›๊ฒฉ ์ €์žฅ์†Œ๋ฅผ ๊ฐ€์ ธ์™€์„œ ์‹œ์ž‘ํ•˜๊ธฐ

git clone <์›๊ฒฉ ์ €์žฅ์†Œ ์ฃผ์†Œ>

Sourcetree์— ์ €์žฅ์†Œ ํด๋” ์ถ”๊ฐ€ํ•˜๊ธฐ

Sourcetree๋ฅผ ์‹คํ–‰ํ•ด ๋ฐฉ๊ธˆ ๋งŒ๋“ค๊ฑฐ๋‚˜ ๊ฐ€์ ธ์˜จ ํด๋”๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

๋ญ”๊ฐ€๋ฅผ ํ•  ๋•Œ๋งˆ๋‹ค Sourcetree๋ฅผ ๊ณ„์† ๋ณด์‹œ๋ฉด Git์— ๋Œ€ํ•ด ์•Œ ์ˆ˜ ์žˆ๊ณ , ๋ฌด์Šจ ์ผ์ด ๋ฒŒ์–ด์ง€๊ณ  ์žˆ๋Š”์ง€๋„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์›๊ฒฉ ์ €์žฅ์†Œ ์ถ”๊ฐ€ํ•˜๊ธฐ

์›๊ฒฉ ์ €์žฅ์†Œ ๋ชฉ๋ก ํ™•์ธ

git remote

์›๊ฒฉ ์ €์žฅ์†Œ ์ •๋ณด ์ž์„ธํžˆ ๋ณด๊ธฐ

git remote -v

images/0.png

  • upstream - ๊ณต์šฉ repository(๋ณดํ†ต ํŒ€ repo)
  • origin - ๊ณต์šฉ repository ๋ฅผ ๋‚ด ๊ณ„์ •์— forkํ•œ repository

origin ์›๊ฒฉ ์ €์žฅ์†Œ ์ถ”๊ฐ€

์ฃผ์˜) clone์œผ๋กœ ์›๊ฒฉ ์ €์žฅ์†Œ๋ฅผ ๊ฐ€์ ธ์˜ค๋ฉด origin ์›๊ฒฉ ์ €์žฅ์†Œ๊ฐ€ ์ด๋ฏธ ์ถ”๊ฐ€๋œ ์ƒํƒœ์ž…๋‹ˆ๋‹ค.

์•„๋ž˜๋Š” git init ํ›„ ์ˆ˜๋™์œผ๋กœ ์›๊ฒฉ ์ €์žฅ์†Œ๋ฅผ ์ถ”๊ฐ€ํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

git remote add origin <๋‚ด ์›๊ฒฉ ์ €์žฅ์†Œ ์ฃผ์†Œ>

git fetch origin

upstream ์›๊ฒฉ ์ €์žฅ์†Œ ์ถ”๊ฐ€

git remote add upstream <๊ณต์šฉ ์›๊ฒฉ ์ €์žฅ์†Œ ์ฃผ์†Œ>

git fetch upstream

git fetch

fetch(๊ฐ€์ ธ์˜ค๊ธฐ)ใ€์›๊ฒฉ ์ €์žฅ์†Œใ€‘ | ๋ˆ„๊ตฌ๋‚˜ ์‰ฝ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” Git ์ž…๋ฌธ๋ฒ„์ „ ๊ด€๋ฆฌ๋ฅผ ์™„๋ฒฝํ•˜๊ฒŒ ์ด์šฉํ•ด๋ณด์ž | Backlog

ํ˜‘์—… ์‹œ์ž‘ํ•˜๊ธฐ

Step #0

git clone <fork๋œ ๋‚ด GitHub repository ์ฃผ์†Œ>

git remote add upstream <๊ณต์šฉ ์›๊ฒฉ ์ €์žฅ์†Œ ์ฃผ์†Œ>

git remote -v

upstream๊ณผ origin์ด ์•„๋ž˜์™€ ๊ฐ™์€์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

  • upstream - ๊ณต์šฉ repository(๋ณดํ†ต ํŒ€ repo)
  • origin - ๊ณต์šฉ repository ๋ฅผ ๋‚ด ๊ณ„์ •์— forkํ•œ repository

git status

(git status๋Š” ์ˆ˜์‹œ๋กœ ํ•ด์ฃผ๋Š” ๊ฒŒ ์ข‹์Šต๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ์˜๋„ํ•œ ์ž‘์—…์ด ์ˆ˜ํ–‰ ๋๋Š”์ง€ ์ˆ˜์‹œ๋กœ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.)

Step #1 - ์ž‘์—… ๋ธŒ๋žœ์น˜ ๋งŒ๋“ค๊ธฐ

git checkout -b <๋ธŒ๋žœ์น˜ ์ด๋ฆ„> upstream/main

upstream/main๋Š” ๋ถ™์—ฌ์„œ ์“ฐ๊ณ , ๊ฐ€์šด๋ฐ ์Šฌ๋ž˜์‹œ(/)๊ฐ€ ๋“ค์–ด๊ฐ‘๋‹ˆ๋‹ค.

๋ธŒ๋žœ์น˜ ์ด๋ฆ„์€ ์ž‘์—…ํ•œ ๋‚ด์šฉ์„ ํ‘œํ˜„ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ex) login-oauth-apply

Step #2 - upstream ์›๊ฒฉ ์ €์žฅ์†Œ์˜ ์ตœ์‹  ์ƒํƒœ๋ฅผ ๋ฐ˜์˜ํ•˜๊ธฐ

git fetch upstream main

git rebase upstream/main

Step #3 - ์ž‘์—…ํ•˜๊ธฐ

์›ํ•˜๋Š” ์ž‘์—…์„ ์ด ์‹œ์ ์— ํ•ฉ๋‹ˆ๋‹ค.

Step #4 - ์ปค๋ฐ‹

๋ญ”๊ฐ€ ๋ฐ”๋€ ์ ์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

์ƒˆ ํŒŒ์ผ์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒŒ ์•„๋‹ˆ๋ผ, ํŒŒ์ผ ์ถ”๊ฐ€/๋ณ€๊ฒฝ/์‚ญ์ œ๋ž€ โ€œ๋ฐ”๋€ ์ โ€์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

git add .

๋ฐฉ๊ธˆ ์ถ”๊ฐ€ํ•œ ๋ฐ”๋€ ์ ์„ ์ปค๋ฐ‹ํ•ฉ๋‹ˆ๋‹ค.

๊ฐ€๋Šฅํ•˜๋ฉด ๋ฉ”์‹œ์ง€๋ฅผ ์šฐ๋ฆฌ๊ฐ€ ๋‚˜์ค‘์— ์ฐพ์•„๋ณผ ์ˆ˜ ์žˆ๋Š” ํ˜•ํƒœ๋กœ ์”๋‹ˆ๋‹ค.

git commit

Git commit message style guide

๋ฐ˜๋“œ์‹œ ์ˆ™์ง€ํ•˜๊ณ  ์ง€ํ‚ค๋ ค๊ณ  ๋…ธ๋ ฅํ•ฉ์‹œ๋‹ค.

์ข‹์€ git ์ปค๋ฐ‹ ๋ฉ”์‹œ์ง€๋ฅผ ์ž‘์„ฑํ•˜๊ธฐ ์œ„ํ•œ 8๊ฐ€์ง€ ์•ฝ์†

Commit Message Style Guide For Git

git commit ์—๋””ํ„ฐ๋Š” vi ์—๋””ํ„ฐ๋ฅผ ๊ธฐ๋ณธ์ ์œผ๋กœ ์”๋‹ˆ๋‹ค.

์ฃผ์˜) git commit -m "message" ๋Š” ์“ฐ์ง€ ๋งˆ์„ธ์š”. -m์€ anti pattern์ž…๋‹ˆ๋‹ค.

Vi ์—๋””ํ„ฐ๋ฅผ ์ด์šฉํ•œ ์ปค๋ฐ‹ ๋ฉ”์‹œ์ง€ ์ž‘์„ฑ ๋ฐฉ๋ฒ•

Step #5 - origin ์›๊ฒฉ ์ €์žฅ์†Œ์— ์ž‘์—… ๋ธŒ๋žœ์น˜ ์˜ฌ๋ฆฌ๊ธฐ

git push origin <๋ธŒ๋žœ์น˜ ์ด๋ฆ„>

origin๊ณผ <๋ธŒ๋žœ์น˜ ์ด๋ฆ„> ์‚ฌ์ด์—” ๊ณต๋ฐฑ์ด ๋“ค์–ด๊ฐ‘๋‹ˆ๋‹ค.

Step #6 - Pull Request

GitHub์—์„œ New Pull Request๋ฅผ ํ•ฉ๋‹ˆ๋‹ค.

images/1.png

images/2.png

images/3.png

images/4.png

images/5.png

์ž‘์—… ์ˆ˜์ •ํ•˜๊ธฐ

Pull Request๋ฅผ ํ–ˆ์ง€๋งŒ ์ˆ˜์ •ํ•˜๊ณ  ์‹ถ์„ ๋•Œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฝ”๋“œ ๋ฆฌ๋ทฐ ๋‚ด์šฉ์„ ๋ณด๊ณ  ๋ฐ˜์˜ํ•˜๊ธฐ ์œ„ํ•ด ๊ณ ์น  ๋•Œ๊ฐ€ ๋งŽ์€๋ฐ, ํ•ด๋‹น ๋ธŒ๋žœ์น˜์— ๊ฐ€์„œ Commit์„ ์ถ”๊ฐ€ํ•˜๊ณ  Push๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

Step #1 - ํ•ด๋‹น ๋ธŒ๋žœ์น˜๋กœ ์ด๋™ํ•˜๊ธฐ

git checkout <๋ธŒ๋žœ์น˜ ์ด๋ฆ„>

Step #2 - ์ˆ˜์ •ํ•˜๊ธฐ

๋ณ€๊ฒฝ ์ž‘์—…์„ ์ด ์‹œ์ ์— ํ•ฉ๋‹ˆ๋‹ค.

Step #3 - ์ปค๋ฐ‹

๋ญ”๊ฐ€ ๋ฐ”๋€ ์ ์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

์ƒˆ ํŒŒ์ผ์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒŒ ์•„๋‹ˆ๋ผ, ํŒŒ์ผ ์ถ”๊ฐ€/๋ณ€๊ฒฝ/์‚ญ์ œ๋ž€ โ€œ๋ฐ”๋€ ์ โ€์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

git add .

๋ฐฉ๊ธˆ ์ถ”๊ฐ€ํ•œ ๋ฐ”๋€ ์ ์„ ์ปค๋ฐ‹ํ•ฉ๋‹ˆ๋‹ค.

๊ฐ€๋Šฅํ•˜๋ฉด ๋ฉ”์‹œ์ง€๋ฅผ ์šฐ๋ฆฌ๊ฐ€ ๋‚˜์ค‘์— ์ฐพ์•„๋ณผ ์ˆ˜ ์žˆ๋Š” ํ˜•ํƒœ๋กœ ์”๋‹ˆ๋‹ค.

git commit

Step #4 - origin ์›๊ฒฉ ์ €์žฅ์†Œ์— ์ž‘์—… ๋ธŒ๋žœ์น˜ ์˜ฌ๋ฆฌ๊ธฐ

git push origin <๋ธŒ๋žœ์น˜ ์ด๋ฆ„>

Step #5 - Pull Request๊ฐ€ ๋ฐ”๋€ ๊ฒƒ ํ™•์ธํ•˜๊ธฐ

๋ญ”๊ฐ€ ์ƒˆ๋กœ์šด ์ž‘์—…์„ ํ•˜์ง€ ์•Š์•„๋„ Pull Request๊ฐ€ ๋ฐ”๋€ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Merge๋œ ๋ธŒ๋žœ์น˜ ์ •๋ฆฌํ•˜๊ธฐ

Step #1 - ๋‚ด ์ปดํ“จํ„ฐ์˜ main ๋ธŒ๋žœ์น˜์— ์ตœ์‹  ์ฝ”๋“œ ๋ฐ˜์˜ํ•˜๊ธฐ

main ๋ธŒ๋žœ์น˜๋กœ ์ด๋™

git checkout main

์ตœ์‹  ์ฝ”๋“œ ๋ฐ˜์˜

git fetch upstream main

git rebase upstream/main

origin ์›๊ฒฉ ์ €์žฅ์†Œ์— main ๋ธŒ๋žœ์น˜๋ฅผ ์˜ฌ๋ ค๋ณด๊ธฐ (ํ•„์ˆ˜๋Š” ์•„๋‹ˆ์ง€๋งŒ ๊ธฐ๋ถ„์ด ์ข‹์•„์ง)

git push origin main

Step #2 - Merge๋œ ๋ธŒ๋žœ์น˜ ํ™•์ธ

๋‚ด ์ปดํ“จํ„ฐ์— ์žˆ๋Š” ๋ธŒ๋žœ์น˜ ์ค‘ Merge๋œ ๊ฒƒ ๋ณด๊ธฐ

์ด ๋ชฉ๋ก์— main๋„ ํฌํ•จ๋œ๋‹ค๋Š” ์ ์— ์ฃผ์˜!

git branch --merge

๋‚ด ์ปดํ“จํ„ฐ์™€ ์›๊ฒฉ ์ €์žฅ์†Œ์— ์žˆ๋Š” ๋ธŒ๋žœ์น˜ ์ค‘ Merge๋œ ๊ฒƒ ๋ณด๊ธฐ

์ด ๋ชฉ๋ก์— main๋„ ํฌํ•จ๋œ๋‹ค๋Š” ์ ์— ์ฃผ์˜!

git branch -a --merge

Step #3 - ๋‚ด ์ปดํ“จํ„ฐ์˜ ๋ธŒ๋žœ์น˜ ์‚ญ์ œ

์•ˆ์ „ํ•˜๊ฒŒ ์‚ญ์ œ

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

๊ฐ•์ œ๋กœ ์‚ญ์ œ

git branch -D <๋ธŒ๋žœ์น˜ ์ด๋ฆ„>

Step #4 - fork๋œ ๋‚˜์˜ ์›๊ฒฉ ์ €์žฅ์†Œ ๋ธŒ๋žœ์น˜ ์‚ญ์ œ

git push origin :<๋ธŒ๋žœ์น˜ ์ด๋ฆ„>

PR ํŠธ๋ ˆ์ด๋‹

https://github.com/CodeSoom/git-training

์œ„ repo๋ฅผ ๊ณต์šฉ repository๋กœ ํ•˜์—ฌ ๊ฐ์ž ์ด๋‹ˆ์…œ๋กœ ๋งŒ๋“  ๋ฌธ์„œ ํŒŒ์ผ(e.g. csh.md)์„ ์ถ”๊ฐ€ํ•˜์—ฌ

Pull Request๋ฅผ ๋‚ ๋ ค๋ด…๋‹ˆ๋‹ค.

์ฐธ๊ณ  ์ž๋ฃŒ

"Hello world!"

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published