πŸ“

3. Git

1. Gitμ΄λž€?

  • Git은 μ†ŒμŠ€μ½”λ“œ 및 파일의 변경내역을 μ €μž₯ν•˜λŠ” λΆ„μ‚°λ²„μ „κ΄€λ¦¬μ‹œμŠ€ν…œ μž…λ‹ˆλ‹€.
  • λ¦¬λˆ„μŠ€ ν† λ°œμ¦ˆμ— μ˜ν•΄ 처음 λ§Œλ“€μ–΄μ‘ŒμŠ΅λ‹ˆλ‹€.
  • Github, Bitbucket, Gitlab λ“±μ˜ Git기반의 λ²„μ „κ΄€λ¦¬ν˜ΈμŠ€νŒ… μ„œλΉ„μŠ€λ“€μ΄ μžˆμŠ΅λ‹ˆλ‹€.
Β 

2. Git μ„€μΉ˜ν•˜κΈ°

2-1. Ubuntuμ—μ„œ μ„€μΉ˜ν•˜κΈ°

λͺ…λ Ήμ–΄λ₯Ό μž…λ ₯ν•˜μ—¬ Git을 μ„€μΉ˜ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
$ sudo apt-get update $ sudo apt-get install git
Β 

2-2. Mac μ„€μΉ˜ν•˜κΈ°

Macμ—λŠ” 기본적으둜 Git이 μ„€μΉ˜λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€. μ„€μΉ˜λ˜μ—ˆλŠ”μ§€ ν™•μΈν•˜κΈ° μœ„ν•΄μ„œλŠ” 터미널 창에 μ•„λž˜μ˜ λͺ…λ Ήμ–΄λ₯Ό μž…λ ₯ν•©λ‹ˆλ‹€.
$ git usage: git [--version] [--help] [-C <path>] [-c <name>=<value>] [--exec-path[=<path>]] [--html-path] [--man-path] [--info-path] ...
Β 
μ„€μΉ˜κ°€ λ˜μ§€ μ•Šμ€ 경우, μ•„λž˜μ˜ μˆœμ„œλŒ€λ‘œ μ§„ν–‰ν•©λ‹ˆλ‹€.
  1. https://git-scm.com/ μ ‘μ†ν•©λ‹ˆλ‹€.
  1. Download for Mac λ²„νŠΌ ν΄λ¦­ν•©λ‹ˆλ‹€.
  1. λ‹€μš΄ 받은 파일 μ‹€ν–‰ν•©λ‹ˆλ‹€.
Β 

2-3. Windows μ„€μΉ˜ν•˜κΈ°

  1. https://git-scm.com/ μ ‘μ†ν•©λ‹ˆλ‹€.
  1. Download for Windows λ²„νŠΌ ν΄λ¦­ν•©λ‹ˆλ‹€.
  1. λ‹€μš΄ 받은 파일 μ‹€ν–‰ν•©λ‹ˆλ‹€.
Β 

3. 버전 확인 및 초기 μ„€μ •

λ‹€μš΄λ°›μ€ Git 버전을 확인할 수 μžˆμŠ΅λ‹ˆλ‹€.
$ git --version git version 2.19.1
Β 
Git을 μ‚¬μš©ν•˜κΈ° μœ„ν•΄ μ‚¬μš©μž 정보 섀정을 ν•©λ‹ˆλ‹€.
$ git config --global user.name "hojun.lee" $ git config --global user.email email@example.com
Β 

4. μ €μž₯μ†Œ λ§Œλ“€κΈ°

  • μž‘μ—…ν•  디렉토리 λ§Œλ“€κ³ (mkdir) μ΄λ™ν•˜κΈ°(cd)
    • $ mkdir git-test $ cd git-test
Β 
  • ν˜„μž¬ 디렉토리λ₯Ό Git μ €μž₯μ†Œλ‘œ λ§Œλ“€μ–΄ μ›ν•˜λŠ” 디렉토리λ₯Ό κΈ°μ€€μœΌλ‘œ 버전관리λ₯Ό ν•©λ‹ˆλ‹€.
    • $ cd git-test $ git init
      Β 
      git init을 μž…λ ₯ν•˜λ©΄ ν•΄λ‹Ή 폴더 κΈ°μ€€μœΌλ‘œ .git(둜컬 μ €μž₯μ†Œ)κ°€ μƒμ„±λ©λ‹ˆλ‹€. 둜컬 μ €μž₯μ†Œμ—λŠ” 버전 정보, 원격 μ €μž₯μ†Œ μ£Όμ†Œκ°€ μ €μž₯λ©λ‹ˆλ‹€.
      notion imagenotion image
      πŸ’‘
      μ΄λ•Œ, ν•œ ν΄λ”μ—λŠ” ν•˜λ‚˜μ˜ .git(둜컬 μ €μž₯μ†Œ)λ₯Ό κ°€μ Έμ•Ό ν•©λ‹ˆλ‹€. 그렇지 μ•Šμ„ 경우 좩돌이 λ°œμƒν•  수 μžˆμŠ΅λ‹ˆλ‹€.
Β 
  • μ €μž₯μ†Œμ— νŒŒμΌμ„ μΆ”κ°€(touch)ν•˜κ³  μ»€λ°‹ν•˜κΈ°
    • $ touch README $ git add README $ git commit -m "first commit"
Β 

5. μˆ˜μ •ν•˜κ³  μ €μž₯μ†Œμ— μ €μž₯ν•˜κΈ°

  • 파일 μƒνƒœ ν™•μΈν•˜κΈ°
    • $ git status
      notion imagenotion image
      Β 
  • git이 관리할 λŒ€μƒμœΌλ‘œ 파일 등둝
    • λ³€κ²½ν•œ 파일 쀑 올리기 μ›ν•˜λŠ” κ²ƒλ§Œ μ„ νƒν•©λ‹ˆλ‹€. 전체 올리고 μ‹ΆμœΌμ‹  κ²½μš°μ—λŠ” 점(.)을 μž…λ ₯ν•©λ‹ˆλ‹€.
      $ git add README
      Β 
      notion imagenotion image
Β 
  • 버전 λ§Œλ“€κΈ°(commit)
    • $ git commit -m "μ €μž₯메세지λ₯Ό μž…λ ₯ν•΄μ£Όμ„Έμš”"
      Β 
      notion imagenotion image
Β 
  • 파일 λ¬΄μ‹œν•˜κΈ° - 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
Β 
  • 변경사항 ν™•μΈν•˜κΈ°
    • 졜근 commit λ‚΄μš©κ³Ό ν˜„μž¬ ν΄λ”μ˜ λ‚΄μš©μ˜ λ³€κ²½ 사항을 확인할 수 μžˆμŠ΅λ‹ˆλ‹€.
      $ git diff
      notion imagenotion image
      Β 
  • 컀밋 νžˆμŠ€ν† λ¦¬ μ‘°νšŒν•˜κΈ°
    • $ git log
      notion imagenotion image
      Β