λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
πŸ’» | CS/Git

[Git&Github] Git 정리-1 (μ΅œμ΄ˆμ„€μ •, add, commit, status, log)

by KASSID 2023. 10. 28.

λͺ©μ°¨

    728x90

    0. git이 ν•„μš”ν•œ 이유

    μ½”λ“œλ₯Ό μž‘μ„±ν•˜λ˜ 도쀑 이전에 μž‘μ„±ν–ˆλ˜ κ²ƒμœΌλ‘œ λ˜λŒμ•„ κ°€κ³  μ‹Άμ„λ•Œκ°€ μžˆμ„ 것이닀.

    μ΄λŸ΄λ•Œ νŒŒμΌμ„ λ°±μ—…ν•΄λ‘λŠ” 것도 μ’‹μ§€λ§Œ 버전관리 μ†Œν”„νŠΈμ›¨μ–΄λ₯Ό μ‚¬μš©ν•˜λ©΄λœλ‹€.

    버전관리 μ†Œν”„νŠΈμ›¨μ–΄(VCS) 쀑 κ°€μž₯ 많이 μ‚¬μš©ν•˜λŠ” 것이 λ°”λ‘œ git이닀.

     

    μž₯점 1. ν”„λ‘œμ νŠΈμ˜ μ‹œκ°„κ³Ό 차원을 자유둭게 ν•΄μ€€λ‹€.

    git을 μ΄μš©ν•˜λ©΄ ν”„λ‘œμ νŠΈμ˜ 버전을 과거둜 λ˜λŒλ¦¬κ±°λ‚˜ νŠΉμ •ν•œ 내역을 μ·¨μ†Œν•˜λŠ” 것이 κ°€λŠ₯ν•˜λ‹€.

    λ˜ν•œ μ—¬λŸ¬ λͺ¨λ“œλ₯Ό μ‰½κ²Œ μ „ν™˜ν•˜κ³  κ΄€λ¦¬ν•˜κ±°λ‚˜ μ—¬λŸ¬ λͺ¨λ“œλ₯Ό ν•©μΉ˜λŠ” 것이 κ°€λŠ₯ν•˜λ‹€.

     

    μž₯점 2. ν”„λ‘œμ νŠΈ ν˜‘μ—…μ— μ•„μ£Ό νŽΈλ¦¬ν•˜λ‹€.

    μ—¬λŸ¬ μ‚¬λžŒμ΄ ν•˜λ‚˜μ˜ ν”„λ‘œμ νŠΈλ₯Ό μž‘μ—…ν•  λ•Œ 각자 μžμ‹ μ΄ 맑은 뢀뢄을 μž‘μ—…ν•˜κ³ 

    ν•˜λ‚˜μ˜ 메인 ν”„λ‘œμ νŠΈμ— ν•©μΉ˜λŠ” 것이 κ°€λŠ₯ν•˜κΈ° λ•Œλ¬Έμ— ν˜‘μ—… μ‹œ μ•„μ£Ό νŽΈλ¦¬ν•˜κ²Œ μ‚¬μš©ν•  수 μžˆλŠ” νˆ΄μ΄λ‹€.

     

     

     

    1. CLI vs GUI

    git을 μ‚¬μš©ν•˜λŠ” λ°©λ²•μ—λŠ” 2가지 방법이 μ‘΄μž¬ν•œλ‹€.

    CLI(Command Line Interface)λŠ” λͺ…λ Ήμ–΄λ₯Ό μž…λ ₯ν•΄μ„œ μ‚¬μš©ν•˜λŠ” 것이고,

    GUI(Graphical User Interface)λŠ” κ·Έλž˜ν”½ μš”μ†Œλ₯Ό ν™œμš©ν•œ μΈν„°νŽ˜μ΄μŠ€λ₯Ό ν™œμš©ν•˜λŠ” 것이닀.

    이 λ‘˜ 쀑 μ–΄λ–€ 것을 μ‚¬μš©ν•΄μ•Όν• κΉŒ?

     

    개인차일 수 μžˆμ§€λ§Œ

    CLI의 경우 싀행을 μœ„ν•œ λͺ…령을 μ‚¬μš©ν•˜λŠ” 경우 쑰금 더 κ°„νŽΈν•  수 있고,

    GUI의 경우 ν”„λ‘œμ νŠΈμ˜ μƒνƒœλ₯Ό μ‹œκ°μ μœΌλ‘œ μžμ„Ένžˆ μ‚΄νŽ΄λ³Ό λ•Œ μœ μš©ν•  수 μžˆμ„ 것이닀.

     

     

     

    2. Git μ„€μ •

    1) Git 졜초 μ„€μ •

    - git μ „μ—­μœΌλ‘œ μ‚¬μš©μž 이름, 이메일 μ£Όμ†Œ μ„€μ •(github 계정과 무관)

    섀정을 해놓은 μ •λ³΄λŠ” μž‘μ—…ν•œ λ‚΄μš©μ— λŒ€ν•œ μž‘μ„±μž 및 이메일을 ν‘œμ‹œν•˜λŠ” 것이닀.

    이λ₯Ό 톡해 ν”„λ‘œμ νŠΈ ν˜‘μ—… μ‹œ ν•΄λ‹Ή 정보λ₯Ό μ΄μš©ν•΄ 식별 및 연락을 μ·¨ν•  수 μžˆλ‹€.

    git config --global user.name "이름"
    git config --global user.email "이메일"

     

    - κΈ°λ³Έ 브랜치λͺ… λ³€κ²½

    κΈ°λ³Έκ°’μœΌλ‘œ μ„€μ •λœ master, slave의 브랜치 λͺ…은 λ‹€λ₯Έ μ΄λ¦„μœΌλ‘œ λ³€κ²½ν•˜λ„λ‘ ꢌμž₯되고 μžˆλ‹€.

    git config --global init.defaultBranch main

    λ”°λΌμ„œ ν•΄λ‹Ή λͺ…령을 μž…λ ₯ν•˜λ©΄ 기본값을 main으둜 λ³€κ²½ν•œλ‹€.

     

    3. μ‹œμž‘ν•˜κΈ° (μ„€μΉ˜ ν›„)

    git init

     

    ν„°λ―Έλ„μ—μ„œ μž‘μ—…ν•  디렉토리에 μœ„ λͺ…λ Ήμ–΄λ₯Ό μž…λ ₯ν•˜λ©΄

    git이 μ‚¬μš©μžμ˜ 파일 생성 및 μ½”λ“œ μž‘μ„±μ„ 좔적할 수 μžˆλŠ” ν™˜κ²½μ„ μ„ΈνŒ…ν•œλ‹€.

    λ˜ν•œ μˆ¨κΉ€νŒŒμΌμ„ ν™•μΈν•˜λ©΄ .gitλΌλŠ” 디렉토리가 μƒμ„±λœ 것을 확인할 수 μžˆλŠ”λ°

    이 μ•ˆμ— git 관리 내역이 λͺ¨λ‘ κΈ°λ‘λœλ‹€.

     

     

    4. add commit

    νŒŒμΌμ„ 기둝해두고 싢을 λ•ŒλŠ” add commit λͺ…λ Ήμ–΄λ₯Ό μ΄μš©ν•œλ‹€.

    git add 파일λͺ…
    git commit -m "메세지"

    이처럼 2λ‹¨κ³„λ‘œ λ‚˜λˆ„μ–΄μ Έ μžˆλŠ”λ° κ·Έ μ΄μœ λŠ” λ¬΄μ—‡μΌκΉŒ?

     

    λ¨Όμ € addλŠ” 기둝할 νŒŒμΌμ„ κ³ λ₯΄κ³  commit은 κ³ λ₯Έ νŒŒμΌμ„ κΈ°λ‘ν•˜λŠ” λͺ…령이닀.

     

    μ΄λ•Œ Staging areaλ₯Ό 거쳐 Repository에 기둝을 ν•˜λŠ” 과정을 κ±°μΉ˜λŠ”λ°

    그림을 톡해 μ‚΄νŽ΄λ³΄λ©΄ μ•„λž˜μ™€ κ°™λ‹€.

     

     

    addλ₯Ό 톡해 κ³ λ₯Έ νŒŒμΌμ€ staging area λΌλŠ” μž„μ‹œ λ³΄κ΄€μ†Œμ— λŒ€κΈ° μƒνƒœλ‘œ 보관이 되고

    이λ₯Ό commit ν•˜λ©΄ repositoryλΌλŠ” μ €μž₯μ†Œμ— μ €μž₯이 λ˜λŠ” 것이닀.

     

    λ”°λΌμ„œ νŒŒμΌμ„ add ν•˜λŠ” ν–‰μœ„λ₯Ό staging 이라고 ν•œλ‹€.

     

     

     

    5. λͺ…λ Ήμ–΄ 정리

     

    1) μ—¬λŸ¬ 파일 λ™μ‹œ staging

    git add 파일1 파일2 ...

     

    2) μž‘μ—… 디렉토리 λͺ¨λ“  파일 staging

    git add .

    . == ν˜„μž¬ 디렉토리

     

    3) μƒνƒœλ³΄κΈ°

    git status

    ν˜„μž¬ λ””λ ‰ν† λ¦¬μ˜ νŒŒμΌλ“€μ— λŒ€ν•œ staging 된 μƒνƒœ, μˆ˜μ • 유무 등을 νŒŒμ•…ν•  수 μžˆλ‹€.

     

    4) 둜그 보기

    git log

    commit 기둝을 λ³Ό 수 μžˆλ‹€.

     

    git log --all --oneline
    git log --all --oneline --graph

    --oneline μ˜΅μ…˜μ„ μ΄μš©ν•˜λ©΄ ν•œ μ€„λ‘œ μ •λ¦¬ν•΄μ„œ 보여쀀닀!

    --graph κΉŒμ§€ μΆ”κ°€ν•œλ‹€λ©΄ merge등을 ν•œ λ‚΄μš©μ„ κ·Έλž˜ν”„λ‘œ 보여쀀닀.

     

     

     

    λŒ“κΈ€