1. CLI / Vim

  • λ§₯은 터미널, μœˆλ„μš°λŠ” git bash ν‚€κΈ°

 

1) λͺ…λ Ήμ–΄

  • ls : 파일과 폴더λ₯Ό λ³΄μ—¬μ€Œ 
  • pwd : ν˜„μž¬ μœ„μΉ˜λ₯Ό λ§ν•΄μ€Œ
  • ls 의 flag : μ˜΅μ…˜μ„ λœ»ν•¨. -a λŠ” all 둜 μˆ¨κΉ€ νŒŒμΌκΉŒμ§€ 탐색, -l 은 line by line 둜 ν•œ μ€„λ‘œ κΉ”λ”ν•˜κ²Œ 좜λ ₯
  • cd : 파일 이동 / ex) cd Documents/
  • mkdir : 폴더 생성 / ex) mkdir foldername
  • touch : 파일 생성 / ex) touch filename.txt
  • mv : 파일 이동 / ex) mv filename.txt foldername/
  • cp : 볡사 / ex) cp filename.txt filename2.txt
  • rm : 파일 μ‚­μ œ / ex) rm filename.txt
  • rm -rf : 폴더 μ‚­μ œ / ex) rm -rf foldername/
  • mv : 이름 μˆ˜μ • / ex) mv filename.txt filename2.txt
  • cat : μž‘μ„±ν•œ λ‚΄μš© 확인 / ex) cat filename.txt
  • vi : vim μ°½ μ—΄κΈ° / ex) vi filename.txt
  • code . : vscode 둜 λ„˜μ–΄κ°€κΈ°

 

2) Vim 으둜 λ§ˆν¬λ‹€μš΄ μž‘μ„± 방법

  • vi README.md μž…λ ₯ ν›„ λ“€μ–΄κ°€μžλ§ˆμž i λˆ„λ₯΄λ©΄ insert λͺ¨λ“œ μ‹œμž‘, μž‘μ„±ν•  수 있게 됨
  • 1. 2. 3. : μˆœμ„œ μžˆλŠ” 리슀트
  • - , * , + : μˆœμ„œ μ—†λŠ” 리슀트
  • ``` <div></div> ``` : μ½”λ“œ λΈ”λŸ­ μ‚½μž…
  • **bold** : λ³Όλ“œμ²΄ μž…λ ₯
  • # : 제λͺ©, # 이 λ§Žμ•„μ§ˆμˆ˜λ‘ μž‘μ•„μ§
  • <!-- 주석 --> : 주석
  • [링크 ν…μŠ€νŠΈ] (링크 url) : 링크 μ‚½μž…
  • ![μ΄λ―Έμ§€ν…μŠ€νŠΈ] (이미지 url) : 이미지 μ‚½μž…
  • *** , ----- : ꡬ뢄선
  • μ€„λ°”κΏˆμœΌλ‘œ 곡백을 ν‘œν˜„ν•˜κ³  μ‹ΆμœΌλ©΄ enter λ‘λ²ˆν•΄μ•Ό 곡백이 됨. ν•œλ²ˆλ§Œ ν•˜λ©΄ 뢙어버림.
  • esc λˆ„λ₯΄κ³  :wq ν•˜λ©΄ μ €μž₯ν•˜κ³  λ‚˜κ°€κΈ°, :w ν•˜λ©΄ μ €μž₯, q μ €μž₯ν•˜μ§€ μ•Šκ³  μ’…λ£Œ, e! μˆ˜μ •ν•œ 것 λ¬΄μ‹œν•˜κ³  νŽΈμ§‘ μƒνƒœ

 

 

 

 

 

 

 

2. Branching Models

 

1)  flow

  • git flow : 각 단계가 λͺ…ν™•νžˆ κ΅¬λΆ„λ˜μ–΄ 주둜 μ‚¬μš©. 
  • github flow : 주둜 라이브러리(react) 에 μ“°μž„. release 단계가 μ—†μ–΄ λ°”λ‘œ λ„˜μ–΄κ°

 

2) git flow strategy

  • feature - develop - release(μ€„μ΄λŠ” μž‘μ—…), version - main

 

3) git flow cheatsheet

    • 이 ν”„λ‘œκ·Έλž¨μ„ μ΄μš©ν•˜λ©΄ μœ„ μž‘μ—…μ„ μ‰½κ²Œ ν•  수 있음
    • window 의 경우, git bash μ—μ„œ git flow init μž…λ ₯ν•΄μ£Όκ³  enter ν‚€λ₯Ό 눌러주면 ꡬ쑰λ₯Ό μžλ™μœΌλ‘œ λ§Œλ“€μ–΄μ€Œ
    • git flow feature start featurename : feature μ‹œμž‘
    • git flow feature finish featurename : feature 끝
    • feature 이름은 μž‘μ—…ν•˜λŠ” λ‚΄μš©μ— 따라 λͺ…ν™•νžˆ, μž‘μ—… ν›„ μ‚¬μš©μ€‘μΈ λΈŒλžœμΉ˜κ°€ μ•„λ‹ˆλΌλ©΄ λ°”λ‘œλ°”λ‘œ μ§€μ›Œμ£ΌλŠ” 것이 μ’‹μŒ
    • git flow release start v0.1 : 버전 릴리즈
    • tagging μž‘μ—… labeling : commit vim μ°½, release note vim μ°½, λ‹€μ‹œ commit vim μ°½
    • git push -u origin develop : remote 에 μ—†λŠ” develop 으둜 push ν•  λ•Œ, -u λŠ” upstream
    • git checkout main : main branch 둜 이동
    • git push origin main : main 으둜 push
    • git push --tags : tag λ₯Ό push
    • remote(원격저μž₯μ†Œ) 둜 κ°€μ„œ tag create release → Existing tag : Initial Release → 본문에 My first release → This is a pre-release 체크(λ² νƒ€λ²„μ „μ΄λΌλŠ” μ†Œλ¦¬) → publish release λˆ„λ₯΄λ©΄ 끝

 

 

 

 

 

3. Revert

 

1) Rename : 이름 μˆ˜μ •

  • κ·Έλƒ₯ 이름을 μˆ˜μ •ν•΄λ²„λ¦¬λ©΄ μ›λž˜ νŒŒμΌμ€ deleted κ°€ 뜸, 이럴 λ•ŒλŠ” staging μ „κΉŒμ§€ λ‹€μ‹œ 이름을 λŒλ €λ†“μœΌλ©΄ 됨
  • git mv README.md unread.txt : git 으둜 μ•Œλ €μ£Όλ©΄μ„œ μˆ˜μ •ν•˜λ©΄ renamed κ°€ 뜸, λ‹€λ§Œ λ¬Όλ¦¬λŸ‰ 변화없이 νŠΈλ¦¬κ°€ λ³€κ²½λœ 것이기 λ•Œλ¬Έμ— comitted κ°€ 뜸

 

2)  Undoing

  • μ§€κΈˆκΉŒμ§€ μž‘μ—…ν•œ 것을 μ·¨μ†Œν•˜κ³  싢을 λ•Œ, μ΅œμ‹ μ˜ νƒ€μž„μŠ€νƒ¬ν”„λ‘œ λŒλ €λ†“λŠ” 것
  • git restore unread.txt → μ›Œν‚ΉνŠΈλ¦¬ 깨끗 / resotre 보닀 μ˜€λž˜λœ 것은 checkout

 

3) Unstaging

  • μ˜ˆμ „μ—λŠ” git reset HEAD unread.txt , μš”μ¦˜μ—λŠ” git restore --staged unread.txt
  • μ—¬κΈ°μ„œ HEAD λŠ” μ΅œμ‹ μ΄λΌλŠ” 뜻
  • git commit --amend : μ΅œμ‹  컀밋 λ©”μ‹œμ§€ μˆ˜μ •

 

4) Reset commit

  • worst case : reset → 직전 3개의 commit을 μ‚­μ œν•œ ν›„, remote에 κ°•μ œ push
  • best case : revert → ν˜„μž¬ HEADμ—μ„œ μ§μ „μ˜ 3개의 commit을 μˆœμ„œλŒ€λ‘œ 거슬러 μ˜¬λΌκ°€ ν•΄λ‹Ή 내역에 λŒ€ν•΄ commit, push μˆ˜ν–‰
  • revert : git revert --no-commit HEAD~3.. → μ‚­μ œν•˜λŠ” commit 의 숫자만큼 commit 을 μ°μ–΄μ€˜μ•Ό ν•˜κΈ° λ•Œλ¬Έμ— λ§ˆμ§€λ§‰μ— ν•œλ²ˆμ— commit ν•˜κ² λ‹€λŠ” 뜻으둜 --no-commit 을 μ“°κ³ , μ΅œμ‹  commit μ—μ„œ λΆ€ν„° 3개λ₯Ό μ‚­μ œν•˜κ² λ‹€λŠ” 뜻으둜 HEAD~3 을 μž‘μ„±ν•˜κ³ , 맨 뒀에 .. 은 κΌ­ ν•΄μ€˜μ•Ό 함

 

 

 

 

 

4. Git ν˜‘μ—… ν”„λ‘œμ νŠΈ

 

1) νŒ€μž₯ : Organization λ§Œλ“€κΈ°

    • Github μ—μ„œ + λ²„νŠΌ λˆ„λ₯΄κ³  New organization 
    • Free Plan 선택
    • Organization account name(νŒ€ 이름) μž‘μ„±, Contact email(λŒ€ν‘œ 이메일) μž‘μ„±, My personal account(개인 계정) 선택
    • νŒ€μ› μ΄ˆλŒ€, λ‹Ήμž₯ ν•˜μ§€ μ•Šμ•„λ„ 됨. skip 도 κ°€λŠ₯
    • survey λŠ” 해도 μ•ˆν•΄λ„ 상관 μ—†μŒ, λ‚˜κ°€λ €λ©΄ New Organization
    • skip ν›„ νŒ€μ› μ΄ˆλŒ€ν•˜λ €λ©΄ invite member 선택, owner λŠ” νŒ€μž₯ κΆŒν•œμ΄λ‹ˆ member 선택
    • repository λ§Œλ“€κΈ° : 이름 μž‘μ„±, public 선택, license λŠ” mit, create ν΄λ¦­ν•˜κ³  μž‘μ—…

 

2) νŒ€μž₯ : 초기 Set UP

  • Git bash μ—μ„œ git clone [μ£Όμ†Œ] / λ§Œλ“€μ–΄μ§„ ν•΄λ‹Ή repository μ΄λ¦„μœΌλ‘œ 된 νŒŒμΌλ‘œ cd λͺ…λ Ήμ–΄λ₯Ό 톡해 이동
  • gitignore.io μ‚¬μ΄νŠΈλ‘œ κ°€μ„œ gitignore νŒŒμΌμ— λ“€μ–΄κ°ˆ μ½”λ“œ 생성
  • Git bash μ—μ„œ touch .gitignore (파일 생성), vi .gitignore (μˆ˜μ •) ν•΄μ„œ gitignore.io μ—μ„œ λ³΅μ‚¬ν•œ μ½”λ“œ λΆ™μ—¬λ„£κΈ°
  • README.md 파일 μˆ˜μ •
  • μ΄λ•Œ, μ„€μ • νŒŒμΌμ€ λ‹€λ₯Έ 폴더에 λ„£μ§€ μ•Šκ³  메인에 놓기
  • κΈ°λ³Έ μž‘μ—…ν•  html, css, js, img λ“± 파일 μƒμ„±ν•΄λ†“μœΌλ©΄ μ’‹μŒ
  • git status (μƒνƒœν™•μΈ) → git add → git commit → git flow init (branch ꡬ쑰 λ§Œλ“€κΈ°) → git push -u origin develop (첫 push)

 

3) νŒ€μž₯, νŒ€μ› : Issues μž‘μ„±

  • Issues μž‘μ„±μ€ ν•΄μ•Ό 될 일을 μž‘μ„±ν•˜λŠ” 것
  • Issue λŠ” ν•œκΈ€λ‘œ μž‘μ„±ν•΄λ„ 됨. ν•  일을 μ •ν•˜κ³  ν•΄λ‹Ή Issue λ₯Ό ν•΄κ²°ν•˜λ©΄ μ™„λ£Œ.
  • 제λͺ©μ€ 본인 이름 포함해 κ°„λ‹¨ν•˜κ³  λͺ…ν™•ν•˜κ²Œ λͺ…μ‹œν•  것. 본문은 μ„€λͺ…, 할일, μ°Έμ‘° ν˜•μ‹μœΌλ‘œ μž‘μ„±.
  • ν•  일은 각자 μ„ μ •ν•˜κ³ , μ²΄ν¬λ°•μŠ€ ν™œμš©ν•  것

 

4) νŒ€μž₯, νŒ€μ› : fork 뜨기

  • fork : νŒ€ organization 의 사본, κ°„μ ‘ κΈ°μ—¬ 방식, 원본 리λͺ¨νŠΈμ˜ 사본을 λœ»ν•¨
  • νŒ€ organization μ—μ„œ fork λΌλŠ” λ²„νŠΌμ„ 클릭 ν›„ Copy the main branch only μ²΄ν¬λ°•μŠ€ ν•΄μ œ
  • νŒ€μ› : Git bash μ—μ„œ fork λ₯Ό λ– μ„œ 사본이 되고 자기 μ†Œμœ κ°€ 된 repository μ˜ μ£Όμ†Œλ₯Ό κ°€μ Έλ‹€κ°€ clone → git clone [μ£Όμ†Œ]
  • νŒ€μž₯ : μ΄λ•Œ set up 을 μ™„λ£Œν•œ 원본 폴더가 λ‚¨μ•„μžˆμ„ν…λ° 이 ν΄λ”λŠ” rm -rf [μ›λž˜ν΄λ”λͺ…] 으둜 μ§€μ›Œμ£Όκ³  fork 뜬 사본 repository λ₯Ό git clone [μ£Όμ†Œ]
  • git flow init ls (λ§Œλ“€μ–΄μ‘ŒλŠ”μ§€ 확인) git flow feature start [이름] (feature branch 생성] → μž‘μ—…, add, commit → git flow feature finish [이름] → git push -u origin develop (이후 push ν•  땐 -u 없애도 됨)
  • Github 에 fork 뜬 λ‚΄ repository 둜 μ΄λ™ν•΄μ„œ 상단에 뜬 compare & pull requests ν΄λ¦­ν•˜κ±°λ‚˜, pull requests νƒ­μœΌλ‘œ κ°€μ„œ new pull request λ²„νŠΌ 클릭. 근데 ν›„μžλ₯Ό μΆ”μ²œ
  • 바뀐 λ‚΄μš©μ΄ λ˜‘κ°™μ€ branch 둜 듀어가도둝 develop μ—μ„œ develop 으둜 κ°€κ²Œ 선택, μ΄λ•Œ 였λ₯Έμͺ½μ˜ λ‚΄ repository λΆ€ν„° 선택해주기
  • pull request 의 제λͺ©, λ‚΄μš© μž‘μ„± : μž‘μ„±ν•œ issue 와 μ—°κ²°λ˜λ„λ‘ fix(μˆ˜μ •), close(마무리), resolve(ν•΄κ²°) 쀑 μ•Œλ§žμ€ ν‚€μ›Œλ“œ κ³ λ₯Έ ν›„ μ˜†μ— # ν•΄μ£Όλ©΄ issue μžλ™μ™„성이 뜸 / ν‚€μ›Œλ“œλŠ” λ³΅μˆ˜ν˜•(# μ—¬λŸ¬ 개) κ³Όκ±°ν˜• λͺ¨λ‘ κ°€λŠ₯(예: fixed, fixes)
  • μ™„λ£Œλ˜λ©΄ create pull reaquest

 

5) νŒ€μž₯ : Code Review

  • pull requests νƒ­ λ“€μ–΄κ°€μ„œ 
  • Reviewers (리뷰할 μ‚¬λžŒ, νŒ€μž₯) μ§€μ • - Assignees (pull requests ν•œ μ‚¬λžŒ) μ§€μ • - Labels (μ–΄λ–€ 것을 ν–ˆλŠ”μ§€ ꡬ뢄) μ§€μ •
  • files changed μ—μ„œ 보고 μ½”λ“œ μœ„ + λ²„νŠΌ λˆŒλŸ¬μ„œ 리뷰
  • 파일 λ‹Ή 상단 였λ₯Έμͺ½μ— viewed λΌλŠ” μ²΄ν¬λ°•μŠ€κ°€ μžˆλŠ”λ° ν†΅κ³Όν•œ 것은 체크, 톡과 λͺ»ν•œ κ±°λŠ” viewed λˆ„λ₯΄λ©΄ μ•ˆλ¨ 
  • finish your review ν΄λ¦­ν•˜κ³  확인해달라고 λ‚΄μš© μž‘μ„±, comment(λ‹¨μˆœν•œ μ œμ•ˆ, 해도 되고 μ•ˆν•΄λ„ 되고), approve(승인), request changes(반렀) 쀑 ν•˜λ‚˜ μ„ νƒν•΄μ„œ 보냄. μ΄λ•Œ 반렀의 경우 λ°˜λ €λœ 것 κ³ μΉ  λ•ŒκΉŒμ§€ λ§ˆμ§€ν•  수 μ—†μŒ

 

6) νŒ€μ› : Request Changes μˆ˜μ •

  • Git bash μ—μ„œ code . ν•΄μ„œ vscode 둜 이동
  • μˆ˜μ •ν•  사항 μž‘μ—…
  •  vscode terminal μΌœμ„œ git add → git commit git push origin develop
  • μ΄λ•Œ pull reaquest κ°€ λ‹«νž λ•ŒκΉŒμ§€ λ‚˜μ˜ develop 으둜 push 해도 νŒ€μ˜ develop κΉŒμ§€ μ­‰ μ—°κ²°λ˜μ–΄ 연동됨

 

7) νŒ€μž₯ : μˆ˜μ • 사항 확인

  • ν•΄κ²°λœ 것 확인 ν›„ resolve conversation 클릭
  • files changed λ‘œ κ°€μ„œ viewed 체크, comment μž‘μ„± ν›„ approve
  • 그럼 merge κ°€λŠ₯ν•œ μ΄ˆλ‘μƒ‰ λ²„νŠΌμœΌλ‘œ 뜸, μΆ”κ°€ μ˜κ²¬λ„ 맨 ν•˜λ‹¨μ— μž‘μ„± κ°€λŠ₯, merge 클릭

 

8) νŒ€μž₯, νŒ€μ› : pull λ°›κΈ°

  • Git bash μ—μ„œ git remote -v ν–ˆμ„ λ•Œ upstream 이 μ—†λ‹€λ©΄ git remote add upstream [νŒ€μ£Όμ†Œ] ν•˜λ©΄ upstream 이 생김
  • pull 받을 λ•ŒλŠ” νŒ€μ˜ develop 을 λ°›μ•„μ•Ό 함, κ·Έλž˜μ„œ git pull upstream develop
  • λ‹€λ₯Έ μ‚¬λžŒ μž‘μ—… 내역이 λ‚΄ develop 에 μŒ“μž„
  • λ”°λΌμ„œ λ””λ²¨λ‘­μ—μ„œ μž‘μ—…μ„ ν•  수 μžˆμ§€λ§Œ ν•˜μ§€ μ•ŠλŠ” μ΄μœ λŠ” 쀑간쀑간 pull 을 λ°›μ•„μ•Ό ν•˜λŠ” λ•Œκ°€ 였기 λ•Œλ¬Έμ—. 그럼 λ‚΄ μž‘μ—…κ³Ό λ‹€λ₯Έ μ‚¬λžŒ μž‘μ—…μ΄ 좩돌 ν•  수 있음

 

 

 

 

 

+ Recent posts