Skip to content

Latest commit

ย 

History

History
137 lines (102 loc) ยท 4.58 KB

File metadata and controls

137 lines (102 loc) ยท 4.58 KB

{ Git with GitHub } #1 - Git ์‹œ์ž‘ํ•˜๊ธฐ

Git

  • ํ•จ๊ป˜ ์†Œ์Šค์ฝ”๋“œ ๊ด€๋ฆฌ

  • Git ๊ตฌ์กฐ

    • ์„œ๋ฒ„ - ํด๋ผ์ด์–ธํŠธ
    • Server Repository - Local Repository
    • Local ์—์„œ ์ž‘์—… ์™„๋ฃŒ ํ›„ commit ํ•˜๋ฉด local์— ๊ทธ์ œ์„œ์•ผ ๋ฐ˜์˜๋จ (.git)
    • push (์„œ๋ฒ„์— ์˜ฌ๋ฆผ), pull (์„œ๋ฒ„์—์„œ ๊ฐ€์ ธ์˜ด)
  • Git Config

    # ๋ฐ”ํƒ•ํ™”๋ฉด git bash ์‹คํ–‰
    
    # ๊นƒ ์„ค์ • ๋ชฉ๋ก
    git config --list
    
    git config user.name
    
    # ๋ชจ๋“  directory ์ผ๊ด„ ์„ค์ • (--global)
    git config --global user.name <github-name>
    
    git config user.email
    
    git config --global user.eamil <github-email>
    
    git config --list | grep user.*
    
    cat ~/.gitconfig
  • Git ํด๋ผ์ด์–ธํŠธ - ์„œ๋ฒ„ ์ €์žฅ์†Œ ์—ฐ๊ฒฐ

    # ๋กœ์ปฌ ์ €์žฅ์†Œ ๋งŒ๋“ค๊ธฐ
    git init
    
    # ์„œ๋ฒ„์— ์˜ฌ๋ฆฌ๊ธฐ ์‹ซ์€ ๊ฒƒ ์„ธํŒ…
    touch .gitignore
    
    # repository์— ํŒŒ์ผ ์ „์ฒด add
    # working directory - local repository ์—ฐ๊ฒฐ๋จ
    # ์•„์ง ๋“ค์–ด๊ฐ„ ๊ฒƒ์€ ์•„๋‹˜
    git add --all
    
    # ์—ฐ๊ฒฐ๋œ ๊ฑธ๋กœ ๋ชฝ๋•… (-am) local repo์— ๋ฐ˜์˜
    git commit -am "first commit"
    
    
    # branch check
    git branch
    
    # server repo - local repo pipeline ํ†ต๋กœ ์—ฐ๊ฒฐ๋จ
    git remote add origin <git-remote-url>
    
    # ์ตœ์ดˆ์—๋งŒ -u ๋ถ™์ž„ (up)
    # ์„œ๋ฒ„์˜ main ์ค„๊ธฐ์— ์†Œ์Šค ์˜ฌ๋ฆผ
    git push -u origin main
    
    git pull
    
    # ์ถฉ๋Œ ๋ฌด์‹œํ•˜๊ณ  ๊ฐ•์ œ๋กœ ์˜ฌ๋ฆผ
    git push -fu origin main
    
    # git clone
    git clone <git-remote-url>

[Note]

  • SCM (Source Code Management)
  • ํ˜•์ƒ๊ด€๋ฆฌ (์†Œ์Šค ํžˆ์Šคํ† ๋ฆฌ ๊ด€๋ฆฌ)
  • ์ปค๋ฐ‹ (์ž‘์—… ์™„๋ฃŒ ์ฒ˜๋ฆฌ)
  • ์•„ํ‹€๋ผ์‹œ์•ˆ; ์ด์Šˆ ํŠธ๋ž˜์ปค
  • README.md (์‹œ์ž‘ ํŽ˜์ด์ง€)
  • markdown ๋ฌธ๋ฒ•
  • ์œˆ๋„์šฐ ํƒ์ƒ‰๊ธฐ๋กœ๋Š” ์—ญ์Šฌ๋ž˜์‹œ, bash ์‰˜์€ ์Šฌ๋ž˜์‹œ
  • bash ์‰˜
    • root ํŠธ๋ฆฌ: /
    • home ๋””๋ ‰ํ† ๋ฆฌ: ~ (๋‚ด ๋ฐฉ)
  • local repository => .git
  • add ํ•œ ์ˆœ๊ฐ„ ์•„์ง local Repo์— ๋“ค์–ด๊ฐ„ ๊ฒƒ์€ ์•„๋‹ˆ๊ณ  ๋“ค์–ด๊ฐˆ ์ค€๋น„๋งŒ ๋œ ์ƒํƒœ
    ๋‚ด์šฉ ๋“ค์–ด๊ฐ€๋ ค๋ฉด commit ํ•ด์•ผ ํ•จ
  • local repo - server repo ํ†ต๋กœ ์—ฐ๊ฒฐํ•ด์•ผ ํ•จ!
  • branch
    • main, sub ์ค„๊ธฐ
    • main ์ค„๊ธฐ: origin main (main branch)
    • sub ์ค„๊ธฐ: main ์ค„๊ธฐ์— ์˜ํ–ฅ ์—†์ด src ๊ณ ์นจ
      ์ดํ›„ main ์ค„๊ธฐ๋กœ ์˜ฎ๊ธฐ๋Š” ๊ฒƒ์ด merge
    • origin main: ์›๊ฒฉ์ง€์˜ main (server repo์˜ main branch)
  • git push ์›์น™
    • ์ƒ๋Œ€๋ฐฉ์ด src ์ˆ˜์ •ํ•จ (๋‚ด repo - server repo ๋™๊ธฐํ™” ๋˜์ง€ ์•Š์Œ => rejected)
    • git pull ๋จผ์ € ํ•˜๋ผ๊ณ  ๋ฉ”์‹œ์ง€ ๋‚˜์˜ด
    • ํ•ด๋„ ์•ˆ๋˜๋ฉด ์–ด์ฉ” ์ˆ˜ ์—†์ด git -fu
  • git clone ๋ฐ›์œผ๋ฉด remote ํ•  ํ•„์š” ์—†์Œ
    git pushํ•  ๋•Œ๋„ -u ์•ˆ๋ถ™์—ฌ๋„ ๋จ
    ์ƒ์œ„ ๋””๋ ‰ํ† ๋ฆฌ์—์„œ ํ•˜๊ธฐ (directory ํ†ต์งธ๋กœ ๋งŒ๋“ค์–ด์ง)

[Q&A]

  1. 41:00
    ๊ฐ•์ œ๋กœ pushํ•ด์„œ ๊ธฐ์กด์— ์ž‘์„ฑํ•œ README.md๊ฐ€ ์‚ฌ๋ผ์กŒ๋Š”๋ฐ, ์ด๋Ÿฐ ๊ฒฝ์šฐ์—๋Š” ์–ด๋–ป๊ฒŒ ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์„๊นŒ์š”?
    (๊ฐ•์ œ push ์ด์ „์— pull์„ ํ•ด๋„ rejected ์˜ค๋ฅ˜๊ฐ€ ๋– ์„œ ๊ฐ•์ œ push๋ฅผ ํ•œ ๊ฒƒ์ด์ง€๋งŒ..)
    ํ˜น์‹œ local์ด ์•„๋‹ˆ๋ผ ๋”ฐ๋กœ ๊นƒํ—™ ํ™ˆํŽ˜์ด์ง€์—์„œ README.md ํŒŒ์ผ์„ ์ˆ˜์ •ํ•˜๊ณ 
    ์ž๋™ ์ปค๋ฐ‹ ๋œ ๊ฒƒ์ด๋ผ ๋ฐœ์ƒํ•˜๋Š” ์˜ค๋ฅ˜๋กœ ์–ด์ฉ” ์ˆ˜ ์—†๋Š” ๊ฑด๊ฐ€์š”?
    ์•„๋‹ˆ๋ฉด ์‚ฌ์ „์— git remote add origin ํ•˜๊ณ  pull์„ ๋ฏธ๋ฆฌ ํ–ˆ์—ˆ์œผ๋ฉด ๊ดœ์ฐฎ์•˜์„๊นŒ์š”?

    => github ์‚ฌ์ดํŠธ์—์„œ ํŒŒ์ผ์„ ์ž‘์„ฑํ•˜๊ณ  ์ปค๋ฐ‹ํ•œ ๋‹ค์Œ, ๋กœ์ปฌ์—์„œ push -fu ํ•ด๋ฒ„๋ฆฌ๋ฉด
    ์„œ๋ฒ„ ์ปค๋ฐ‹ ํžˆ์Šคํ† ๋ฆฌ๋Š” ๋ชจ๋‘ ์‚ญ์ œ๋˜๊ณ  ๋กœ์ปฌ์˜ ์ปค๋ฐ‹ ํžˆ์Šคํ† ๋ฆฌ๊ฐ€ ๋ฎ์–ด์”€
    ๋”ฐ๋ผ์„œ ์„œ๋ฒ„์—์„œ ์ƒ์„ฑํ•œ ํŒŒ์ผ์€ ๋Œ๋ฆด ์ˆ˜ ์—†์„ ๊ฒƒ์ž„
    ํ•ญ์ƒ ๋กœ์ปฌ์—์„œ ์ž‘์—…ํ•˜๊ณ  ์ปค๋ฐ‹&ํ‘ธ์‹œํ•˜๊ณ , ๋จผ์ € pull ๋ฐ›๊ณ  ์ปค๋ฐ‹&ํ‘ธ์‹œ ํ•ด์•ผ ํ•จ
    ์˜์ƒ์—์„œ -fu ์‚ฌ์šฉํ•œ ๊ฒƒ์€ ์„œ๋ฒ„๋ฅผ ๋ญ‰๊ฐœ๋ฒ„๋ฆฌ๊ณ  ์‹ถ์„ ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ž„

  2. warning: LF will be replaced by CRLF in <ํŒŒ์ผ๋ช…>.
    The file will have its original line endings in your working directory
    ์ฐธ๊ณ 
    ๊ตฌ๊ธ€๋ง์„ ํ•ด๋ณด๋‹ˆ ์ด๊ฒƒ์ด unix์™€ ์œˆ๋„์šฐ/๋ฆฌ๋ˆ…์Šค ๊ฐ„์˜ whitespace ๋กœ ์ธํ•ด์„œ ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ๊ณ ๋ผ๋Š”๋ฐ,
    ๊ทธ์— ๋”ฐ๋ผ git config --global ๋กœ true, false, (true input // ๋ฆฌ๋ˆ…์Šค) ๋กœ ์„ธํŒ…ํ•  ์ˆ˜ ์žˆ์–ด์„œ
    ์ €๋Š” ๊ทธ๋ƒฅ ๊ฒฝ๊ณ ๋ฅผ ๋„๋Š” ์šฉ๋„๋กœ false๋กœ ์„ธํŒ…ํ–ˆ์ง€๋งŒ,
    ์ด๊ฒƒ๊ณผ ๊ด€๋ จํ•ด์„œ ํ˜น์‹œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๊ฑฐ๋‚˜ ์‹ค๋ฌด์™€ ๊ด€๋ จ๋œ ๋‚ด์šฉ์ด ์žˆ์„๊นŒ์š”?

    => Carriage Return Line Feed๊ฐ€ ์œˆ๋„์šฐ ๊ธฐ๋ฐ˜(\r\n)๊ณผ ๋ฆฌ๋ˆ…์Šค ๊ธฐ๋ฐ˜(\n)์ด ๋‹ค๋ฆ„
    ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์„ค์ •ํ•˜๋ฉด ๋จ
    ์œˆ๋„์šฐ> git config --global core.autocrlf true
    ๋งฅ> git config --global core.autocrlf input