๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
  • What would life be If we had no courage to attemp anything?
GIT

GIT

by DevIseo 2022. 3. 6.

Git - ๋ถ„์‚ฐ๋ฒ„์ „๊ด€๋ฆฌ์‹œ์Šคํ…œ(DVCS)

  • ๋ฆฌ๋ˆ„์Šค ํ† ๋ฅด๋ฐœ์Šค๊ฐ€ ๊ฐœ๋ฐœ
  • ์ปดํ“จํ„ฐ ํŒŒ์ผ์˜ ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ์ถ”์ ํ•˜๊ณ  ์—ฌ๋Ÿฌ ๋ช…์˜ ์‚ฌ์šฉ์ž๋“ค ๊ฐ„์— ํ•ด๋‹น ํŒŒ์ผ๋“ค์˜ ์ž‘์—…์„ ์กฐ์œจ

๋ฒ„์ „ ๊ด€๋ฆฌ

  • ์˜คํ”ˆ์†Œ์Šค ์‚ฌ๋ก€(ํฌ๋กœ๋ฏธ์›€)
    • ์ตœ์‹  ๋ฒ„์ „ ์†Œ์Šค์ฝ”๋“œ ์šฉ๋Ÿ‰ 1.58GB
    • ํ˜„์žฌ๊นŒ์ง€ ๋ฐฑ๋งŒ์—ฌ๊ฐœ์˜ ๋ฒ„์ „
    • ์ „์ฒด ์šฉ๋Ÿ‰์€ ์–ผ๋งˆ์ผ๊นŒ? 25GB, ํ•˜๋‚˜์˜ ํด๋”
    • ํ•˜๋‚˜์˜ ํŒŒ์ผ์ด์ง€๋งŒ ๋ฒ„์ „์„ ๊ธฐ๋ก, ํ™•์ธ
    • Git์„ ํ™œ์šฉํ•œ๋‹ค๋ฉด?
  • ๋ฒ„์ „๊ด€๋ฆฌ(vsc), ์†Œ์Šค์ฝ”๋“œ ๊ด€๋ฆฌ(Scm)๋ž€ ๋™์ผ ์ •๋ณด์— ๋Œ€ํ•œ ์—ฌ๋Ÿฌ ๋ฒ„์ „์„ ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค.

CVSC(์ค‘์•™์ง‘์ค‘์‹๋ฒ„์ „๊ด€๋ฆฌ์‹œ์Šคํ…œ) vs DVCS(๋ถ„์‚ฐ๋ฒ„์ „๊ด€๋ฆฌ์‹œ์Šคํ…œ)

  • ์ค‘์•™์ง‘์ค‘์‹๋ฒ„์ „๊ด€๋ฆฌ์‹œ์Šคํ…œ์€ ์ค‘์•™์—์„œ ๋ฒ„์ „์„ ๊ด€๋ฆฌํ•˜๊ณ  ํŒŒ์ผ์„ ๋ฐ›์•„์„œ ์‚ฌ์šฉ
  • ๋ถ„์‚ฐ๋ฒ„์ „๊ด€๋ฆฌ์‹œ์Šคํ…œ์€ ์›๊ฒฉ ์ €์žฅ์†Œ(remote repo.)๋ฅผ ํ†ตํ•˜์—ฌ ํ˜‘์—…ํ•˜๊ณ , ๋ชจ๋“  ํžˆ์Šคํ† ๋ฆฌ๋ฅผ ํด๋ผ์ด์–ธํŠธ ๋“ค์ด ๊ณต์š”

Git Bash

  • ์œˆ๋„์šฐ์—์„œ Git์„ ํ™œ์šฉํ•˜๊ธฐ ์œ„ํ•œ ๊ธฐ๋ณธ ๋„๊ตฌ
  • ํ”„๋กฌํ”„ํŠธ ๊ธฐ๋ณธ ์ธํ„ฐํŽ˜์ด์Šค
    • ์ปดํ“จํ„ฐ ์ •๋ณด
    • ๋””๋ ‰ํ† ๋ฆฌ
    • $
  • command line interface(CLI)
    • CLI, ์ปค๋งจ๋“œ ๋ผ์ธ ์ธํ„ฐํŽ˜์ด์Šค ๋˜๋Š” ๋ช…๋ น์–ด ์ธํ„ฐํŽ˜์ด์Šค๋Š” ๊ฐ€์ƒ ํ„ฐ๋ฏธ๋„ ๋˜๋Š” ํ…์ŠคํŠธ ํ„ฐ๋ฏธ๋„์„ ํ†ตํ•ด ์‚ฌ์šฉ์ž์™€ ์ปดํ“จํ„ฐ๊ฐ€ ์ƒํ˜ธ์ž‘์šฉ ํ•˜๋Š” ๋ฐฉ์‹
    • ์ž‘์—… ๋ช…๋ น์€ ์‚ฌ์šฉ์ž๊ฐ€ ํˆด๋ฐ” ํ‚ค๋ณด๋“œ ๋“ฑ์„ ํ†ตํ•ด ๋ฌธ์ž์—ด์˜ ํ˜•ํƒœ๋กœ ์ž…๋ ฅ
    • ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ œ๊ณตํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ ๋ช…๋ น ์ค„ ํ•ด์„๊ธฐ ๋˜๋Š” ์…ธ
      • ์œ ๋‹‰์Šค ์…ธ(sh, ksh, csh, tcsh, bash ๋“ฑ)๊ณผ CP/M, ๋„์Šค์˜ command.com(โ€๋ช…๋ น ํ”„๋กฌํ”„ํŠธโ€)๋“ฑ
    • GUI -๊ทธ๋ž˜ํ”ฝ ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค
    • CLI - ๋ช…๋ น ์ค„ ์ธํ„ฐํŽ˜์ด์Šค
    ๋ช…๋ น์–ด ๋‚ด์šฉ
    pwd ํ˜„์žฌ ๋””๋ ‰ํ† ๋ฆฌ ์ถœ๋ ฅ
    cd <path> ๋””๋ ‰ํ† ๋ฆฌ ์ด๋™
    ls ๋ชฉ๋ก
    mkdir <name> ๋””๋ ‰ํ† ๋ฆฌ ์ƒ์„ฑ
    rm <name> ํŒŒ์ผ/ํด๋” ์‚ญ์ œ
    rm -r <name>  
    touch ๋นˆํŒŒ์ผ ์ƒ์„ฑ(ํŒŒ์ผ์˜ ๋‚ ์งœ์™€ ์‹œ๊ฐ„์„ ์ˆ˜์ •)

Git ๊ธฐ์ดˆ ํ๋ฆ„

  • Git ์ €์žฅ์†Œ ์ƒ์„ฑ
  • $ git init
    • ํŠน์ • ํด๋”์— git์ €์žฅ์†Œ(repository)๋ฅผ ๋งŒ๋“ค์–ด ๊ณ ๋‚˜๋ฆฌ
      • .git ํด๋”๊ฐ€ ์ƒ์„ฑ๋˜๋ฉฐ (master)๋ผ๋Š” ํ‘œ๊ธฐ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Œ
  1. ์ž‘์—…์„ ํ•˜๊ณ 
  2. ๋ณ€๊ฒฝ๋œ ํŒŒ์ผ์„ ๋ชจ์•„(add)
  3. ๋ฒ„์ „์œผ๋กœ ๊ธฐ๋กํ•œ๋‹ค.(commit)
  • working Directory - Staging area - Repository๋ฅผ ํ†ตํ•ด ๋ฒ„์ „์„ ๊ด€๋ฆฌ!
  • Status - ์ƒํƒœ๋ณด๊ธฐ
    • $ git status
    • Git ์ €์žฅ์†Œ์˜ ๋ณ€๊ฒฝ๋œ ํŒŒ์ผ์˜ ์ƒํƒœ๋ฅผ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ํ™œ์šฉ
      • ํŒŒ์ผ์˜ ์ƒํƒœ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Œchages not staged for commit -์ปค๋ฐ‹oํŒŒ์ผ โ†’ working tree
      • chages to be comitted โ†’staging area (add๋ช…๋ น์–ด(
      • untracked files - ์ปค๋ฐ‹x ํŒŒ์ผ โ†’working tree
      • nothing to commit, working tree clean
  • log -์ปค๋ฐ‹๋ณด๊ธฐ
    • ํ˜„์žฌ ์ €์žฅ์†Œ์— ๊ธฐ๋ก๋œ ์ปค๋ฐ‹์„ ์กฐํšŒ

์›๊ฒฉ ์ €์žฅ์†Œ ํ™œ์šฉ

  • ์›๊ฒฉ์ €์žฅ์†Œ(remote repository)
    • ์›๊ฒฉ ์ €์žฅ์†Œ๋Š” ๋„คํŠธ์›Œํฌ๋ฅผ ํ™œ์šฉํ•œ ์ €์žฅ์†Œ
  • ์›๊ฒฉ์ €์žฅ์†Œ ๊ธฐ๋ณธํ๋ฆ„
  • clone
  • pull
  • ํŒŒ์ผ์ด ์•„๋‹Œ ์ปค๋ฐ‹์„ pushํ•˜๊ฑฐ๋‚˜ pull

๋ธŒ๋žœ์น˜

  • ์›๊ฒฉ ์ €์žฅ์†Œ์—์„œ ์ง์ ‘ ์ˆ˜์ •x
  • ๋ชจ๋“  ํŒŒ์ผ ๋ณ€๊ฒฝ ์ˆ˜์ • ์‚ญ์ œ ์ƒ์„ฑ โ†’๋กœ์ปฌ์—์„œ ํ•˜๊ธฐ, ์ปค๋ฐ‹ ์—ด์‹ฌํžˆ ํ•˜๊ธฐ
  • ๋ฐ์ผ๋ฆฌ ์ปค๋ฐ‹, til, ํ”„๋กœ์ ํŠธ ๋“ฑ

๋Œ“๊ธ€