๐Ÿ—‚๏ธ

Git & Github

ย 
notion imagenotion image

์†Œ์Šค์ฝ”๋“œ ๋ฒ„์ „๊ด€๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•˜์„๋•Œ ๋ฐœ์ƒํ–ˆ๋˜ ๋ฌธ์ œ์ 

  • ์šฐ๋ฆฌ๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ•˜๋ฉด์„œ ๋งŽ์€ ์†Œ์Šค์ฝ”๋“œ ํŒŒ์ผ์„ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค. ์ž‘์—…์„ ํ• ๋•Œ ๋งˆ๋‹ค ์ข…์ข… ๋ฐฑ์—…์ด ํ•„์š”ํ•œ ์ƒํ™ฉ์ด ๋งŽ์Šต๋‹ˆ๋‹ค. ํŠนํžˆ ์–ด๋–ค ์ž‘์—…์„ ๋งˆ์นœ ๋’ค ๊ทธ ํด๋”๋ฅผ ํ†ต์œผ๋กœ ๋ฐฑ์—…ํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๊ณต์œ ๋ฅผ ์œ„ํ•ด์„œ ํด๋”๋ฅผ ์••์ถ•ํ•˜๊ณ  ๋‹ค๋ฅธ์‚ฌ๋žŒ์—๊ฒŒ "ํด๋”๋ช…_๋‚ ์งœ.zip" ๊ฐ™์ด ํŒŒ์ผ๋ช…์„ ์ง€์–ด์„œ ์ „์†กํ•ฉ๋‹ˆ๋‹ค.
  • ํ•˜์ง€๋งŒ ์ด๋ ‡๊ฒŒ ๋ฐฑ์—…ํ•  ๊ฒฝ์šฐ ๋ถˆํŽธํ•œ ์ ์€ ๋‚ด๊ฐ€ ์ˆ˜์ •ํ•œ ๋‚ด์šฉ์„ ๊ตฌ์ฒด์ ์œผ๋กœ ๊ธฐ์–ตํ•˜์ง€ ๋ชปํ• ๊ฒฝ์šฐ ๋ณ€๊ฒฝ๋‚ด์—ญ์„ ํ™•์ธ ํ•˜๊ธฐ๊ฐ€ ์–ด๋ ต์Šต๋‹ˆ๋‹ค.
  • ๋˜ํ•œ ๋งŒ์•ฝ ์ปดํ“จํ„ฐ์—๋งŒ ๋ณด๊ด€์„ ํ–ˆ๋Š”๋ฐ ํ•˜๋“œ๋””์Šคํฌ๊ฐ€ ๊ณ ์žฅ๋‚œ๋‹ค๋ฉด ์• ์จ ์ž‘์—…ํ•œ ์†Œ์Šค์ฝ”๋“œ๋ฅผ ๋‹ค ์žƒ์–ด๋ฒ„๋ฆฌ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

์†Œ์Šค์ฝ”๋“œ๋ฒ„์ „๊ด€๋ฆฌ๋ฅผ ํ†ตํ•ด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜๋Š” ์‚ฌ๋ก€

  • ์†Œ์Šค์ฝ”๋“œ๋ฒ„์ „๊ด€๋ฆฌ๋Š” ์ด๋Ÿฐ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋งŒ๋“ค์–ด์กŒ์Šต๋‹ˆ๋‹ค.
    • notion imagenotion image
  • ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ•˜๊ณ  ์ค‘๊ฐ„์ค‘๊ฐ„ ๋ฐฑ์—…์„ ํ•จ์œผ๋กœ์จ ์–ธ์ œ๋“ ์ง€ ํ•ด๋‹น ์‹œ์ ์œผ๋กœ ๋‚ด ํด๋”๋ฅผ ๋ณต๊ตฌ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋˜ํ•œ ์™ธ๋ถ€์˜ ์„œ๋ฒ„์— ์†Œ์Šค์ฝ”๋“œ๋ฅผ ๋ณด๊ด€ํ•ด์„œ ๋‚ด ์ปดํ“จํ„ฐ์˜ ํŒŒ์ผ์ด ์‚ญ์ œ ๋˜๋”๋ผ๋„ ๋‹ค์‹œ ๋‹ค์šด ๋ฐ›์•„์„œ ์ž‘์—…์„ ๊ณ„์†ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋˜ํ•œ ํ•จ๊ป˜ ์ž‘์—…ํ•˜๋Š” ์‚ฌ๋žŒ์—๊ฒŒ๋„ ํŽธ๋ฆฌํ•˜๊ฒŒ ๋ชจ๋“  ์ž‘์—… ๋‚ด์—ญ์„ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์†Œ์Šค์ฝ”๋“œ๋ฒ„์ „๊ด€๋ฆฌ๋ž€?

  • ์†Œ์Šค์ฝ”๋“œ ๋ฒ„์ „๊ด€๋ฆฌ๋ฅผ ์ด์šฉํ•˜๋ฉด
    • ์†Œ์Šค์ฝ”๋“œ์˜ ๋ณ€๊ฒฝ๋œ ๋‚ด์—ญ์„ ๋ฌถ์–ด์„œ ์ €์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • ์›ํ•˜๋Š” ์‹œ์ ์œผ๋กœ ๋ณต๊ตฌ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • ์„œ๋ฒ„์— ๋ณ€๊ฒฝ์ €์žฅ๊ธฐ๋ก์„ ๋ชจ๋‘ ์ €์žฅ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • ๋‹ค๋ฅธ ์‚ฌ๋žŒ์œผ๋กœ ๋ถ€ํ„ฐ ๊ณต์œ ๋ฐ›์€ ์˜ฌ๋ ค๋†“์€ ์†Œ์Šค์ฝ”๋“œ๋ฅผ ์„œ๋ฒ„๋กœ ๋ถ€ํ„ฐ ์‰ฝ๊ฒŒ ๋‚ด๋ ค ๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Git์ด๋ž€?

  • Git์€ ์†Œ์Šค์ฝ”๋“œ ๋ฐ ํŒŒ์ผ์˜ ๋ณ€๊ฒฝ๋‚ด์—ญ์„ ์ €์žฅํ•˜๋Š” ๋ถ„์‚ฐ๋ฒ„์ „๊ด€๋ฆฌ์‹œ์Šคํ…œ ์ž…๋‹ˆ๋‹ค.
  • ๋ฆฌ๋ˆ„์Šค ํ† ๋ฐœ์ฆˆ์— ์˜ํ•ด ์ฒ˜์Œ ๋งŒ๋“ค์–ด์กŒ์Šต๋‹ˆ๋‹ค.
  • Github, Bitbucket, Gitlab ๋“ฑ์˜ Git๊ธฐ๋ฐ˜์˜ ๋ฒ„์ „๊ด€๋ฆฌํ˜ธ์ŠคํŒ… ์„œ๋น„์Šค๋“ค์ด ์žˆ์Šต๋‹ˆ๋‹ค.

Git ์„ค์น˜ํ•˜๊ธฐ

  • Ubuntu์—์„œ ์„ค์น˜ํ•˜๊ธฐ
    • ๋ช…๋ น์–ด๋กœ ์„ค์น˜ํ•˜๊ธฐ
    • $ sudo apt-get update $ sudo apt-get install git
      ย 
  • Mac ์„ค์น˜ํ•˜๊ธฐ
    • https://git-scm.com/ ์ ‘์†
    • Download for Mac ๋ฒ„ํŠผ ํด๋ฆญ
    • ๋‹ค์šด ๋ฐ›์€ ํŒŒ์ผ ์‹คํ–‰
  • Windows ์„ค์น˜ํ•˜๊ธฐ
    • https://git-scm.com/ ์ ‘์†
    • Download for Windows ๋ฒ„ํŠผ ํด๋ฆญ
    • ๋‹ค์šด ๋ฐ›์€ ํŒŒ์ผ ์‹คํ–‰
  • Git ๋ฒ„์ „ ํ™•์ธ
    • $ git --version git version 2.19.1
      ย 
  • ์ดˆ๊ธฐ ์„ค์ •
    • ์‚ฌ์šฉ์ž์ •๋ณด ์„ค์ •
    • $ git config --global user.name "John Doe" $ git config --global user.email johndoe@example.com
ย 

์ €์žฅ์†Œ ๋งŒ๋“ค๊ธฐ

  • ์ž‘์—…ํ•  ๋””๋ ‰ํ† ๋ฆฌ ๋งŒ๋“ค๊ณ  ์ด๋™ํ•˜๊ธฐ
    • $ mkdir hellogit $ cd hellogit
ย 
  • ํ˜„์žฌ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ Git ์ €์žฅ์†Œ๋กœ ๋งŒ๋“ค๊ธฐ
    • $ git init
ย 
  • ์ €์žฅ์†Œ์— ํŒŒ์ผ์„ ์ถ”๊ฐ€ํ•˜๊ณ  ์ปค๋ฐ‹ํ•˜๊ธฐ
    • $ touch README $ git add README $ git commit -m "initial project version"
ย 

์ˆ˜์ •ํ•˜๊ณ  ์ €์žฅ์†Œ์— ์ €์žฅํ•˜๊ธฐ

ย 
  • ํŒŒ์ผ์˜ ์ƒํƒœ ํ™•์ธํ•˜๊ธฐ
    • $ git status
      ย 
  • git์ด ๊ด€๋ฆฌํ•  ๋Œ€์ƒ์œผ๋กœ ํŒŒ์ผ ๋“ฑ๋ก
    • $ git add README
ย 
  • ๋ฒ„์ „ ๋งŒ๋“ค๊ธฐ(commit)
    • $ git commit -m "์ €์žฅ๋ฉ”์„ธ์ง€๋ฅผ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”"
ย 
  • ํŒŒ์ผ ๋ฌด์‹œํ•˜๊ธฐ - gitignore
    • .gitignoreํŒŒ์ผ์— ๋ฒ„์ „๊ด€๋ฆฌ์—์„œ ์ œ์™ธํ•  ํŒŒ์ผ์„ ์ถ”๊ฐ€ํ•œ๋‹ค.
    • # a comment - ์ด ์ค„์€ ๋ฌด์‹œํ•œ๋‹ค. # ํ™•์žฅ์ž๊ฐ€ .a์ธ ํŒŒ์ผ ๋ฌด์‹œ *.a # ์œ— ์ค„์—์„œ ํ™•์žฅ์ž๊ฐ€ .a์ธ ํŒŒ์ผ์€ ๋ฌด์‹œํ•˜๊ฒŒ ํ–ˆ์ง€๋งŒ lib.a๋Š” ๋ฌด์‹œํ•˜์ง€ ์•Š๋Š”๋‹ค. !lib.a # ๋ฃจํŠธ ๋””๋ ‰ํ† ๋ฆฌ์— ์žˆ๋Š” TODOํŒŒ์ผ์€ ๋ฌด์‹œํ•˜๊ณ  subdir/TODO์ฒ˜๋Ÿผ ํ•˜์œ„๋””๋ ‰ํ† ๋ฆฌ์— ์žˆ๋Š” ํŒŒ์ผ์€ ๋ฌด์‹œํ•˜์ง€ ์•Š๋Š”๋‹ค. /TODO # build/ ๋””๋ ‰ํ† ๋ฆฌ์— ์žˆ๋Š” ๋ชจ๋“  ํŒŒ์ผ์€ ๋ฌด์‹œํ•œ๋‹ค. build/ # `doc/notes.txt`๊ฐ™์€ ํŒŒ์ผ์€ ๋ฌด์‹œํ•˜๊ณ  doc/server/arch.txt๊ฐ™์€ ํŒŒ์ผ์€ ๋ฌด์‹œํ•˜์ง€ ์•Š๋Š”๋‹ค. doc/*.txt # `doc` ๋””๋ ‰ํ† ๋ฆฌ ์•„๋ž˜์˜ ๋ชจ๋“  .txt ํŒŒ์ผ์„ ๋ฌด์‹œํ•œ๋‹ค. doc/**/*.txt
      ย 
  • ๋ณ€๊ฒฝ์‚ฌํ•ญ ํ™•์ธํ•˜๊ธฐ
    • $ git diff
      ย 
  • ์ปค๋ฐ‹ํžˆ์Šคํ† ๋ฆฌ ์กฐํšŒํ•˜๊ธฐ
    • $ git log
      ย 
  • Git Remote
    • ํด๋ก ํ•  ํ”„๋กœ์ ํŠธ ์ฐพ๊ธฐ
      • https://github.com ์ ‘์†
      • jquery ๊ฒ€์ƒ‰ํ•˜๊ธฐ
      • https://github.com/jquery/jquery ๋กœ ์ ‘์†ํ•˜๊ธฐ
      • Clone or download ๋ฒ„ํŠผ ํด๋ฆญํ•˜๊ธฐ
      • ์ฃผ์†Œ ๋ณต์‚ฌํ•˜๊ธฐ
    • ์ƒˆ ์ž‘์—… ๋””๋ ‰ํ† ๋ฆฌ๋งŒ๋“ค๊ณ  ์ด๋™ํ•˜๊ธฐ
    • $ cd $ mkdir clonetest $ cd clonetest
      ย 
    • ํด๋ก ํ•˜๊ธฐ
    • $ git clone https://github.com/jquery/jquery.git $ cd jquery $ git log
      ย 
ย 

Branch

  • branch๋ž€?
    • ๊ฐœ๋ฐœ์„ ํ•˜๋‹ค ๋ณด๋ฉด ์ฝ”๋“œ๋ฅผ ์—ฌ๋Ÿฌ ๊ฐœ๋กœ ๋ณต์‚ฌํ•ด์•ผ ํ•˜๋Š” ์ผ์ด ์ž์ฃผ ์ƒ๊ธด๋‹ค. ์ฝ”๋“œ๋ฅผ ํ†ต์งธ๋กœ ๋ณต์‚ฌํ•˜๊ณ  ๋‚˜์„œ ์›๋ž˜ ์ฝ”๋“œ์™€๋Š” ์ƒ๊ด€์—†์ด ๋…๋ฆฝ์ ์œผ๋กœ ๊ฐœ๋ฐœ์„ ์ง„ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ์ด๋ ‡๊ฒŒ ๋…๋ฆฝ์ ์œผ๋กœ ๊ฐœ๋ฐœํ•˜๋Š” ๊ฒƒ์ด ๋ธŒ๋žœ์น˜๋‹ค.
    • Git์˜ ๋ธŒ๋žœ์น˜๋Š” ํŠน์ • ์ปค๋ฐ‹์„ ๊ฐ€๋ฅดํ‚ค๋Š” ๋ฐ”๋กœ๊ฐ€๊ธฐ ๊ฐ™์€ ๊ฒƒ ์ž…๋‹ˆ๋‹ค.
    • ๋ธŒ๋žœ์น˜๋ฅผ ์ƒ์„ฑํ•˜๋ฉด ํ˜„์žฌ ์ปค๋ฐ‹์„ ๊ฐ€๋ฅดํ‚ค๋Š” ๋ธŒ๋žœ์น˜๊ฐ€ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.
    • ํŠน์ • ๋ธŒ๋žœ์น˜์—์„œ ์ž‘์—…์ค‘์ธ๋ฐ ์ƒˆ๋กœ์šด ์ปค๋ฐ‹์„ ํ•˜๋ฉด ๋ธŒ๋žœ์น˜๋Š” ๊ทธ ์ƒˆ๋กœ์šด ์ปค๋ฐ‹์„ ๊ฐ€๋ฅดํ‚ค๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
    • ๊ธฐ๋ณธ ๋ธŒ๋žœ์น˜๋Š” master ๋ธŒ๋žœ์น˜ ์ž…๋‹ˆ๋‹ค. git์ €์žฅ์†Œ๋ฅผ ์ดˆ๊ธฐํ™” ํ• ๋•Œ ์ž๋™์œผ๋กœ ๋งŒ๋“ค์–ด ์ง‘๋‹ˆ๋‹ค.
    • Git์€ 'HEAD'๋ผ๋Š” ํŠน์ˆ˜ํ•œ ํฌ์ธํ„ฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ํฌ์ธํ„ฐ๋Š” ์ง€๊ธˆ ์ž‘์—…์ค‘์ธ ๋ธŒ๋žœ์น˜๋ฅผ ๊ฐ€๋ฅดํ‚ต๋‹ˆ๋‹ค.
    • ย 
      notion imagenotion image
      ย 

๋ธŒ๋žœ์น˜์˜ ์‚ฌ์šฉ์˜ˆ

  • 'ํ™๊ธธ๋™'์€ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ๊ฐœ๋ฐœ ํ•  ๋•Œ๋งˆ๋‹ค ์ƒˆ๋กœ์šด ๋ธŒ๋žœ์น˜๋ฅผ ๋งŒ๋“ค๊ณ  ๊ทธ์•ˆ์—์„œ ์ž‘์—…์„ ํ•˜๊ณ  ์ปค๋ฐ‹์„ ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ ๋ธŒ๋žœ์น˜๋Š” master ๋ธŒ๋žœ์น˜ ์ž…๋‹ˆ๋‹ค. ํšŒ์›๊ฐ€์ž…๊ธฐ๋Šฅ์„ ๋งŒ๋“ค๋ ค๊ณ  ํ•œ๋‹ค๋ฉด feature-usersignup ๋ธŒ๋žœ์น˜๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ๊ทธ ์•ˆ์—์„œ ์†Œ์Šค์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•˜๊ณ  ์ปค๋ฐ‹์„ ํ•ฉ๋‹ˆ๋‹ค. ํšŒ์›๊ฐ€์ž…๊ธฐ๋Šฅ์˜ ๊ฐœ๋ฐœ์ด ์™„๋ฃŒ๊ฐ€ ๋˜๋ฉด ๊ทธ๋™์•ˆ ์ปค๋ฐ‹ํ–ˆ๋˜ feature-usersignup ๋ธŒ๋žœ์น˜์˜ ๋‚ด์šฉ๋“ค์„ master ๋ธŒ๋žœ์น˜์— ํ•ฉ์นฉ๋‹ˆ๋‹ค. ๋˜ ์ƒˆ๋กœ์šด ์ž‘์—…์„ ํ•˜๋ ค๊ณ  ํ•˜๋ฉด master๋ธŒ๋žœ์น˜์—์„œ ๋‹ค์‹œ ์ƒˆ๋กœ์šด feature๋ธŒ๋žœ์น˜๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์ž‘์—…์„ ํ•ฉ๋‹ˆ๋‹ค.
    • ํšŒ์›๊ฐ€์ž… ๊ธฐ๋Šฅ์„ ์ž‘์—…ํ•˜๊ณ  ์žˆ๋Š”๋ฐ ๊ธ‰ํ•˜๊ฒŒ ๋ฒ„๊ทธ๋ฅผ ์ˆ˜์ •ํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๊ฒฝ์šฐ ํ˜„์žฌ์˜ ์ž‘์—…์ƒํƒœ๋ฅผ ์ž„์‹œ๋กœ ์ปค๋ฐ‹ํ•ด๋‘๊ณ  ํšŒ์›๊ฐ€์ž… ๊ธฐ๋Šฅ ์ž‘์—… ์‹œ์ž‘์ด์ „ ์ƒํƒœ์˜ ์Šค๋ƒ…์ƒท์œผ๋กœ ์ž‘์—…ํด๋”๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฒ„๊ทธํŒจ์น˜์šฉ ๋ธŒ๋žœ์น˜๋ฅผ ๋งŒ๋“ค๊ณ  ์ˆ˜์ •์ž‘์—…์„ ํ•ฉ๋‹ˆ๋‹ค. ์ดํ›„ ์ž‘์—…์ด ์™„๋ฃŒ๋˜๋ฉด ๋ฒ„๊ทธํŒจ์น˜์šฉ ๋ธŒ๋žœ์น˜์˜ ์ถ”๊ฐ€๋œ ๋ณ€๊ฒฝ๋‚ด์—ญ์„ ๋งˆ์Šคํ„ฐ ๋ธŒ๋žœ์น˜์— ํ•ฉ์น  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
      ย 
      notion imagenotion image
      ย 
      notion imagenotion image
      ย 
ย 
  • ํŒ€ '์ œ์ฃผ์ฝ”๋“œ'๋Š” '์ œ์ฃผ์นดํŽ˜'๋ผ๋Š” ์•ˆ๋“œ๋กœ์ด๋“œ์•ฑ์„ ๋Ÿฐ์น˜ํ•œ ํ›„ ์ง€์†์ ์œผ๋กœ ์—…๋ฐ์ดํŠธ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋งค์ฃผ ์›”์š”์ผ ์˜คํ›„๋งˆ๋‹ค ์ผ์ฃผ์ผ๋™์•ˆ์˜ ์ˆ˜์ •๋‚ด์—ญ์„ ๋ฐ˜์˜ํ•œ ์•ฑ์„ ์•ฑ์Šคํ† ์–ด์— ์—…๋ฐ์ดํŠธ ํ•ฉ๋‹ˆ๋‹ค. ํŒ€์€ ๋‘๊ฐœ์˜ ๋ธŒ๋žœ์น˜๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. master์™€ develop ์ž…๋‹ˆ๋‹ค. develop์—๋Š” ํ‰์†Œ ๊ฐœ๋ฐœ์ด ์™„๋ฃŒ๋ ๋•Œ๋งˆ๋‹ค ์ง€์†์ ์œผ๋กœ ์ปค๋ฐ‹์„ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ผ์ฃผ์ผ์— ํ•œ๋ฒˆ์”ฉ ์•ฑ์Šคํ† ์–ด์— ๋ฐฐํฌํ•˜๊ธฐ์ „์— ๊ฐ€์žฅ ์ตœ์‹ ์˜ develop๋ธŒ๋žœ์น˜์˜ ๋‚ด์šฉ์„ master๋ธŒ๋žœ์น˜์— ๋ฐ˜์˜์‹œํ‚จ ํ›„ ๊ทธ ์†Œ์Šค์ฝ”๋“œ๋ฅผ ๊ฐ€์ง€๊ณ  ์•ฑ์„ ๋นŒ๋“œํ•ด์„œ ๋ฐฐํฌ๋ฅผ ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์›”์š”์ผ์ด ๋˜๊ธฐ์ „์˜ master๋ธŒ๋žœ์น˜๋Š” ๊ฐ€์žฅ ์ตœ๊ทผ์— ์•ฑ์Šคํ† ์–ด์— ๋ฐฐํฌํ•œ ์†Œ์Šค์ฝ”๋“œ์˜ ์Šค๋ƒ…์ƒท ์ปค๋ฐ‹์„ ํ•ญ์ƒ ๊ฐ€๋ฅดํ‚ค๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
ย 
  • ํ˜„์žฌ ๋ธŒ๋žœ์น˜ ๋ชฉ๋ก๊ณผ ํ˜„์žฌ ๋ธŒ๋žœ์น˜ ํ™•์ธ
    • $ git branch
ย 
  • branch ๋งŒ๋“ค๊ธฐ ๋ธŒ๋žœ์น˜๋ฅผ ์ƒˆ๋กœ ๋งŒ๋“ค์ˆ˜ ์žˆ๋‹ค. testing ๋ธŒ๋žœ์น˜๋ฅผ ๋งŒ๋“ค์–ด ๋ณด์ž.
    • $ git branch testing
ย 
  • checkout ์ƒˆ๋กœ ๋งŒ๋“  ๋ธŒ๋žœ์น˜๋กœ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋‹ค. testing ๋ธŒ๋žœ์น˜๋กœ ์ด๋™ํ•ด๋ณด์ž.
    • $ git checkout testing
ย 
  • ์ƒˆ๋กœ์šด ๋‚ด์šฉ์„ ์ถ”๊ฐ€ํ•˜๊ณ  ์ปค๋ฐ‹ํ•ด ๋ณด์ž.
    • $ echo 'hello branch' >> branch.txt $ git status $ git add branch.txt $ git commit -m "๋ธŒ๋žœ์น˜ ํ…Œ์ŠคํŠธ์šฉ ํŒŒ์ผ ์ถ”๊ฐ€"
ย 
  • branch ๋ณ‘ํ•ฉ ์ด์ œ master๋ธŒ๋žœ์น˜์— testing๋ธŒ๋žœ์น˜์— ์ถ”๊ฐ€๋œ ๋‚ด์šฉ์„ ๋ณ‘ํ•ฉํ•ด๋ณด์ž.
    • $ git checkout master $ git log $ git merge testing $ git log
      ย 

Github์™€ Bitbucket

  • Github
    • Github๊ฐ€์ž…ํ•˜๊ธฐ
    • ํ”„๋ผ์ด๋น— ๋ฆฌํŒŒ์ง€ํ† ๋ฆฌ ์ƒ์„ฑํ•˜๊ธฐ
      • ๋ฆฌํŒŒ์ง€ํ† ๋ฆฌ๋ช… : hellogit
    • ๋งŒ๋“ค์—ˆ๋˜ ์ €์žฅ์†Œ ํ‘ธ์‹œ ํ•˜๊ธฐ
      • ย 
        $ cd hellogit $ git status $ git remote add origin https://github.com/beomjae/hellogit.git $ git push -u origin master
      ย 
    • ํ‘ธ์‹œํ•œ ํ”„๋กœ์ ํŠธ ํŽ˜์ด์ง€ ์‚ดํŽด๋ณด๊ธฐ
    • ย 
    • github๋กœ ๋ถ€ํ„ฐ ํด๋ก ํ•˜๊ธฐ
      • ย 
        $ cd $ mkdir hellogit2 $ cd hellogit2 $ git clone https://github.com/beomjae/hellogit.git .
      ย 
    • ์†Œ์Šค์ฝ”๋“œ ์ˆ˜์ • ํ›„ ์ปค๋ฐ‹๊ณผ ํ‘ธ์‹œํ•˜๊ธฐ
      • ย 
        $ echo "add more" >> a.txt $ git status $ git add . $ git commit -m "์ถ”๊ฐ€์ž‘์—…๋‚ด์—ญ์ž…๋‹ˆ๋‹ค." $ git push origin master
    • ํ‘ธ์‹œํ•œ ํ”„๋กœ์ ํŠธ ํŽ˜์ด์ง€ ์‚ดํŽด๋ณด๊ธฐ
    • ย 

Atom์„ ์ด์šฉํ•œ Git ์‚ฌ์šฉํ•˜๊ธฐ

  • ์†Œ์Šค์ฝ”๋“œ ์ˆ˜์ •
  • ๋ณ€๊ฒฝ๋‚ด์—ญ ๋ณด๊ธฐ
  • Stage ํ•˜๊ธฐ
  • ์ปค๋ฐ‹ํ•˜๊ธฐ
  • ํ‘ธ์‹œํ•˜๊ธฐ
  • ์ฒดํฌ์•„์›ƒํ•˜๊ธฐ
ย 

Git์— ๊ด€ํ•œ ์žก๋‹คํ•œ ์ด์•ผ๊ธฐ๋“ค

  • ๊ทธ๋ž˜์„œ Git์„ ๊ผญ ์จ์•ผํ•˜๋‚˜์š”?
    • Git์€ ์ด์ œ ๊ฐœ๋ฐœํ•  ๋•Œ ์‚ฌ์‹ค์ƒ ํ•„์ˆ˜์š”์†Œ ์ž…๋‹ˆ๋‹ค.
    • ๋ฐฑ์—…์„ ํ•ด๋†“์Œ์œผ๋กœ์„œ ๋ถ€๋‹ด์—†์ด ์ฝ”๋”ฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ์ฝ”๋“œ๋ฅผ ์ž˜๋ชป ์ˆ˜์ •ํ•ด๋„ ์–ธ์ œ๋“ ์ง€ ์‰ฝ๊ฒŒ ๋˜๋Œ์•„๊ฐˆ์ˆ˜ ์žˆ๋Š” ๋งˆ์Œ์ด ์ƒ๊ธฐ๊ธฐ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.
  • Git๊ณผ ๊ทผ๋ฌด์ผ์ง€
    • git ์ปค๋ฐ‹๋‚ด์—ญ์„ ๋ณด๋ฉด ๋ˆ„๊ฐ€, ์–ธ์ œ, ์–ด๋–ค ์ž‘์—…์„ ํ–ˆ๋Š”์ง€ ์ ๋‚˜๋ผํ•˜๊ฒŒ ๊ธฐ๋ก๋˜์–ด์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ํŒ€์›๊ฐ„์— ๊ณต๋™์œผ๋กœ ์ž‘์—…์„ ํ•œ๋‹ค๋ฉด ๋‹ค๋ฅธ ํŒ€์›์ด ์–ด๋–ค ๊ฐœ๋ฐœ์„ ํ–ˆ๋Š”์ง€ ๋ฌป์ง€ ์•Š์•„๋„ ์ปค๋ฐ‹๋กœ๊ทธ๋งŒ ๋ด๋„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ ์•ˆํ•˜๊ณ  ๋†๋•ก์ด ์น  ์ˆ˜๊ฐ€ ์—†์–ด์š”.
  • ์ปค๋ฐ‹๋กœ๊ทธ์™€ ํ•œ๊ธ€
    • ํ•œ๊ตญ์ธ์œผ๋กœ๋งŒ ์ด๋ฃจ์–ด์ง„ ํ”„๋กœ์ ํŠธ๋ผ๋ฉด ์ €๋Š” ์ปค๋ฐ‹๋กœ๊ทธ๋ฅผ ํ•œ๊ธ€๋กœ ์ ์Šต๋‹ˆ๋‹ค. ์˜์–ด๋กœ ๋ฌธ์žฅ์„ ๊ธธ๊ฒŒ ์ž‘์„ฑํ•˜๊ธฐ ์–ด๋ ต๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ปค๋ฐ‹๋กœ๊ทธ๋Š” ๋ง๊ทธ๋Œ€๋กœ ๋‚ด๊ฐ€ ์ž‘์—…ํ•œ ๋‚ด์—ญ์„ ์ ๋Š” ๊ณณ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ตœ๋Œ€ํ•œ ์ž์„ธํžˆ ์ ์œผ๋ฉด ์ข‹์Šต๋‹ˆ๋‹ค. ๋งค๋ฒˆ ์ปค๋ฐ‹ํ• ๋•Œ๋งˆ๋‹ค ์˜์–ด๋กœ ์ž‘๋ฌธํ•˜๋ ค๋ฉด ์ŠคํŠธ๋ ˆ์Šค ๋ฐ›๊ณ  ๊ทธ๋Ÿฌ๋‹ค๋ณด๋ฉด ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์ปค๋ฐ‹๋กœ๊ทธ๊ฐ€ ์งง์•„์ง‘๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ์ง€ ๋ง๊ณ  ๊ทธ๋ƒฅ ํ•œ๊ธ€๋กœ ์ž์„ธํ•˜๊ฒŒ ์ ๋Š”๊ฒŒ ์ข‹๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.
  • Bitbuket๊ณผ Github
    • ๋น„ํŠธ๋ฒ„ํ‚ท๊ณผ Slack์˜ ์—ฐ๋™
    • ๋น„ํŠธ๋ฒ„ํ‚ท๊ณผ CI(์  ํ‚จ์Šค)์˜ ์—ฐ๋™
    • ๊ฐ„๋‹จํ•œ ์ด์ŠˆํŠธ๋ž˜์ปค๋ฅผ ์ œ๊ณตํ•˜๋Š” Bitbucket๊ณผ Github
    • ์ปค๋ฐ‹๋กœ๊ทธ์— ์ด์Šˆ๋ฒˆํ˜ธ ์ ๊ธฐ
    • ย