Skip to content

Programming-Seungwan/gittest

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

6 Commits
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

GIT ์‚ฌ์šฉ๋ฒ•

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

git์€ ์ผ์ข…์˜ ๋ฒ„์ „ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ(vcs)์ด๋‹ค. ๋ฆฌ๋ˆ…์Šค ํ† ๋ฅด๋ฐœ์ฆˆ์— ์˜ํ•ด ๋งŒ๋“ค์–ด ์กŒ์œผ๋ฉฐ, ๊นƒํ—ˆ๋ธŒ์™€ ๊นƒ๋žฉ ๋“ฑ ์—ฌ๋Ÿฌ ์„œ๋น„์Šค๋ฅผ ํ†ตํ•ด ํ˜ธ์ŠคํŒ…ํ•  ์ˆ˜ ์žˆ๋‹ค.

git init : ๋””๋ ‰ํ„ฐ๋ฆฌ ๋‚ด์˜ ํŒŒ์ผ๋“ค์„ ๊นƒ์ด๋ผ๋Š” vcs๋กœ ๊ด€๋ฆฌํ•˜๋Š” ๋ช…๋ น์–ด .git ํด๋”๋Š” ์ˆจ๊น€ ํŒŒ์ผ์— ํ•ด๋‹น

GIT์˜ ํ๋ฆ„

  1. Working Directory ๋กœ์ปฌ ์ปดํ“จํ„ฐ ํ™˜๊ฒฝ์—์„œ ์ž‘์—…ํ•˜๋Š” ํด๋”๋“ค์ด ์œ„์น˜ํ•จ. ์‹ค ์ž‘์—… ๊ณต๊ฐ„์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋จ.
    working directory์—์„œ staging area๋กœ ๋„˜๊ธฐ๋ ค๋ฉด git add . / {ํด๋”๋ช…} ์„ ํ„ฐ๋ฏธ๋„์— ์ž…๋ ฅ.
  2. Staging Area ํ”„๋กœ์ ํŠธ๊ฐ€ ์ง„ํ–‰ ์ค‘์ธ ๋””๋ ‰ํ„ฐ๋ฆฌ ๋‚ด์˜ ๋ชจ๋“  ํŒŒ์ผ๋“ค์—์„œ์˜ ๋ณ€ํ™”๊ฐ€ ํ•˜๋‚˜ ํ•˜๋‚˜ ์„ธ์„ธํ•œ ๋ฒ„์ „์˜ ์ฐจ์ด๊นŒ์ง€ ์ด์–ด์งˆ ํ•„์š”๋Š” ์—†๋‹ค. ๋”ฐ๋ผ์„œ working directory์—์„œ ๋ฒ„์ „์œผ๋กœ ๋ฌถ์„ ๊ฒƒ๋“ค์„ staging area๋กœ ๋‚ด๋ฆด ์ˆ˜ ์žˆ์Œ.
    staging area์—์„œ working directory๋กœ ๋‹ค์‹œ ๋‚ด๋ฆฌ๊ธฐ ์œ„ํ•ด์„œ๋Š” git rm --cached {ํŒŒ์ผ๋ช…} ๋ช…๋ น์–ด๋ฅผ ํ„ฐ๋ฏธ๋„์— ์ž…๋ ฅํ•˜๋ฉด ๋จ
  3. Repository staging area์— ์žˆ๋Š” ํŒŒ์ผ๋“ค์˜ ์ง‘ํ•ฉ์„ ์ƒˆ๋กœ์šด ๋ฒ„์ „์œผ๋กœ ๊ธฐ๋กํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด git commit -m " ์ปค๋ฐ‹ ๋ฉ”์‹œ์ง€๋ช…" ๋ฐฉ์‹์„ ํ†ตํ•ด์„œ ์ƒˆ๋กœ์šด ๋ฒ„์ „, ์ฆ‰ ์ปค๋ฐ‹์œผ๋กœ ๋งŒ๋“ค์–ด์ค„ ์ˆ˜ ์žˆ๋‹ค. ์•ž์—์„œ์˜ git add .๊ณผ ์ปค๋ฐ‹์„ ๋™์‹œ์— ์ง„ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๋ช…๋ น์–ด๋Š” git commit -am "์ปค๋ฐ‹ ๋ฉ”์‹œ์ง€๋ช…" ์ด๋‹ค.
    Repository์—๋Š” ๋กœ์ปฌ๊ณผ ์›๊ฒฉ(remote)๊ฐ€ ์กด์žฌํ•œ๋‹ค. ๋กœ์ปฌ์€ ์‚ฌ์šฉ์ž์˜ ์ปดํ“จํ„ฐ๋ฅผ, ์›๊ฒฉ์€ ๊นƒํ—ˆ๋ธŒ์™€ ๊นƒ๋žฉ์—์„œ์˜ ๋ ˆํฌ์ง€ํ† ๋ฆฌ๋ฅผ ์˜๋ฏธํ•œ๋‹ค.

GIT์„ ๋˜๋Œ๋ฆฌ๊ธฐ => reset

  1. ๊ฐ•ํ•˜๊ฒŒ ๋˜๋Œ๋ฆฌ๊ธฐ
    working directory, staging area, repository์— ์žˆ๋Š” ๋‚ด์—ญ์„ ๋ชจ๋‘ ๋‚ ๋ ค๋ฒ„๋ฆผ => git reset --hard HEAD^
  2. ์ ๋‹นํžˆ ๋˜๋Œ๋ฆฌ๊ธฐ
    ๊ทธ๋ƒฅ git reset ๋ช…๋ น์–ด๋งŒ์„ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ๋””ํดํŠธ๋กœ ์ ์šฉ๋˜๋Š” ์˜ต์…˜์ด๋‹ค. Repository, staging area์— ์žˆ๋Š” ๊ฒƒ์„ ๋ชจ๋‘ ๋˜๋Œ๋ฆฐ๋‹ค => git reset --mixed HEAD^
  3. ์‚ด์ง๋งŒ ๋˜๋Œ๋ฆฌ๊ธฐ
    repository์— ์žˆ๋Š” ๊ฒƒ๋งŒ ๋‚ ๋ ค๋ฒ„๋ฆผ => git reset soft HEAD^

GIT์—์„œ ์—ฌ๋Ÿฌ ๊ฐˆ๋ž˜๋ฅผ ๋งŒ๋“ค๊ธฐ(Branch)

git์„ ์‚ฌ์šฉํ•˜๋‹ค๋ณด๋ฉด ํ˜„์žฌ ๋‚˜๋งŒ์˜ ํ๋ฆ„์„ ๋งŒ๋“ค์–ด ์ž‘์—…ํ•˜๊ณ  ์‹ถ์€ ๊ฒฝ์šฐ๊ฐ€ ์ƒ๊ธด๋‹ค. ์ด๋Š” ํŒ€์œผ๋กœ ํ˜‘์—…์„ ํ•  ๋•Œ ๊ฐ์ž๊ฐ€ ๋งก์€ ์—ญํ• ์— ์ง‘์ค‘ํ•˜๊ณ  ์‹ถ์€ ๊ฒฝ์šฐ๊ฐ€ ๊ทธ ์˜ˆ์‹œ๊ฐ€ ๋  ์ˆ˜ ์žˆ๋‹ค. ์ถ”ํ›„์— merge๋ฅผ ํ†ตํ•ด ๋ธŒ๋žœ์น˜ ๊ฐ„์˜ ํ•ฉ๋ณ‘๋„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.

  1. ๋ธŒ๋žœ์น˜ ๋งŒ๋“ค๊ธฐ : git branch {๋ธŒ๋žœ์น˜๋ช…}
  2. ๋ธŒ๋žœ์น˜ ์ด๋™ : git checkout {๋ธŒ๋žœ์น˜๋ช…} ์ถ”๊ฐ€ : git checkout -b "{๋ธŒ๋žœ์น˜๋ช…}" ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ๋ธŒ๋žœ์น˜๋ฅผ ์ƒˆ๋กœ ๋งŒ๋“ค๊ณ  ๋ฐ”๋กœ ์ด๋™ํ•  ์ˆ˜ ์žˆ์Œ
  3. ๋ธŒ๋žœ์น˜ ๊ฐ„์˜ ํ•ฉ๋ณ‘ : git merge {๋ธŒ๋žœ์น˜๋ช…} => ํ˜„์žฌ ์œ„์น˜ํ•œ ๋ธŒ๋žœ์น˜๋กœ ๋Œ€์ƒ ๋ธŒ๋žœ์น˜๋ฅผ ํ•ฉ์น˜๊ธฐ

Reset๊ณผ Revert์˜ ์ฐจ์ด

reset ๋ช…๋ น์–ด๋Š” ๊ณผ๊ฑฐ์˜ ๊ธฐ๋ก์„ ์‹น ๋‚ ๋ ค๋ฒ„๋ฆฐ๋‹ค. revert ๋ช…๋ น์–ด๋Š” ๊ณผ๊ฑฐ์˜ ๊ธฐ๋ก์„ ์‹น ๋‚ ๋ ค๋ฒ„๋ฆฌ๋Š” ๊ฒƒ์ด ์•„๋‹Œ, ๊ณผ๊ฑฐ์˜ commit์„ ์ƒˆ๋กœ ์ƒ์„ฑํ•˜๋Š” ๋А๋‚Œ

์›๊ฒฉ ์ €์žฅ์†Œ(remote)์™€์˜ ์ƒํ˜ธ์ž‘์šฉ

  1. ์›๊ฒฉ ์ €์žฅ์†Œ์˜ ๋“ฑ๋ก : git remote add {์›๊ฒฉ์ €์žฅ์†Œ ๋ณ„๋ช…} {์›๊ฒฉ ์ €์žฅ์†Œ url}
  2. ์›๊ฒฉ ์ €์žฅ์†Œ ์กฐํšŒ : git remote -v ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ์›๊ฒฉ ์ €์žฅ์†Œ์˜ ๋ณ„๋ช…๊ณผ url์„ ํ•จ๊ป˜ ์กฐํšŒ ๊ฐ€๋Šฅ
  3. ์›๊ฒฉ ์ €์žฅ์†Œ์˜ ๋‚ด์šฉ์„ ๋กœ์ปฌ ์ €์žฅ์†Œ(repository)์— ํ•ฉ์ณ์„œ ๋™๊ธฐํ™” : git pull
  4. ์›๊ฒฉ ์ €์žฅ์†Œ์˜ ๋‚ด์šฉ์„ ์ผ๋‹จ ๊ฐ€์ ธ์˜ค๊ธฐ : git fetch {์›๊ฒฉ์ €์žฅ์†Œ๋ช…}
  5. ์›๊ฒฉ ์ €์žฅ์†Œ์—์„œ ๊ฐ€์ ธ์˜จ ๋‚ด์šฉ์„ ํ˜„์žฌ ๋ธŒ๋žœ์น˜์— ํ•ฉ๋ณ‘ : git merge {origin/main} => origin์ด๋ผ๋Š” ๋ณ„์นญ์˜ ์›๊ฒฉ ์ €์žฅ์†Œ์˜ main ๋ธŒ๋žœ์น˜๋ฅผ ํ˜„์žฌ ์œ„์น˜ํ•œ ๋ธŒ๋žœ์น˜์— ํ•ฉ๋ณ‘

๋‹ค๋ฅธ ์‚ฌ๋žŒ์˜ ํ”„๋กœ์ ํŠธ๋ฅผ forkํ•ด์„œ ๊ธฐ์—ฌํ•˜๊ธฐ(pull request)

Github๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์—ฌ๋Ÿฌ ์‚ฌ๋žŒ๋“ค์˜ ํ”„๋กœ์ ํŠธ๋ฅผ ๋ณต์ œํ•˜์—ฌ ๊ธฐ์—ฌํ•˜๊ณ , merge ๋ฐ›๋Š” ์ผ€์ด์Šค๊ฐ€ ์ƒ๋‹นํžˆ ๋งŽ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค. ์ด์˜ ํ”„๋กœ์„ธ์Šค๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

  1. ํƒ€์ธ์˜ ๋ ˆํฌ์ง€ํ† ๋ฆฌ๋ฅผ forkํ•˜์—ฌ ์ž์‹ ์˜ ๊ณ„์ •์— ๋ณต์ œ๋œ ๋ ˆํฌ์ง€ํ† ๋ฆฌ๋กœ ๋งŒ๋“ ๋‹ค.
  2. ๋ณต์ œ๋œ ์ž์‹ ์˜ ๋ ˆํฌ์ง€ํ† ๋ฆฌ๋ฅผ git clone {๋ณต์ œ๋œ ๋ ˆํฌ์ง€ํ† ๋ฆฌ์˜ url์ฃผ์†Œ} ํ•˜์—ฌ ์ปดํ“จํ„ฐ์˜ ๋กœ์ปฌ ๋ ˆํฌ์ง€ํ† ๋ฆฌ๋กœ ๊ฐ€์ ธ์˜จ๋‹ค.
  3. ๊ธฐ์—ฌํ•˜๊ณ  ์‹ถ์€ ์ž‘์—…์„ ๋กœ์ปฌ ํ™˜๊ฒฝ์—์„œ ์ง„ํ–‰ํ•˜๊ณ  ๋ณต์ œ๋œ ์›๊ฒฉ ๋ ˆํฌ์ง€ํ† ๋ฆฌ๋กœ git push origin main ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ๋ฐ€์–ด๋„ฃ๋Š”๋‹ค.
  4. github์˜ ์›๊ฒฉ ๋ ˆํฌ์ง€ํ† ๋ฆฌ์—์„œ pull request๋ฅผ ๋‚ ๋ฆฐ๋‹ค.
  5. ์›์ž‘์ž๊ฐ€ PR์„ ํ์–ด๋ณด๊ณ  merge๋ฅผ ์Šน์ธํ•ด์ฃผ๋ฉด ์™„๋ฃŒ!
    => ์›์ž‘์ž ์ž…์žฅ์—์„œ pull์„ ํ•ด๋‹ฌ๋ผ๊ณ  ์š”์ฒญํ•˜๋Š” ๊ฒƒ์ด๋ฏ€๋กœ pull request๊ฐ€ ์•„๋‹๊นŒ?

GIT ๋ฉ”์‹œ์ง€ ์ปจ๋ฒค์…˜

About

seungwan_git practice

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published