[250227] Git에 대해, 협업 시 버전 관리의 중요성 및 사용법

2025. 2. 27. 18:04·BoostCamp

Git이란?

분산형 버전 관리 시스템의 한 종류로, 버전 관리를 할 수 있다는 장점이 있다.

그만큼, 현업에서 가장 자주 쓰는 협업 툴이라고 볼 수 있는데, 이번 시간에는 기본적인 깃허브 사용방법과 다양한 협업 합치기 방법을 정리해보려고 한다.

Git의 장점

  • 각 파일을 이전 상태로 되돌릴 수 있다
  • 프로젝트를 통째로 이전 상태로 되돌릴 수 있다
    • 쓸 일 없을 거라고 생각했는데, 의외로 진짜 유용하다… (최근에 3번 되돌렸다,,ㅠ)
  • 시간에 따라 수정 내용을 비교해 볼 수 있다
  • 누가 문제를 일으켰는지 추적할 수 있다
  • 누가 언제 만든 이슈인지 알 수 있다

결국, 다시 한 번 정리하자면

  1. 여러 명이 동시에 작업할 때 (병렬 개발)
  2. 인터넷이 연결되지 않은 환경에서 개발을 진행하고, 이를 저장할 때
  3. 중앙 저장소가 날라가서 원상 복구 하고 싶을 때
  4. 체계적인 개발을 하고 싶을 때

Git의 3가지 파일 상태

알아둬야 하는 용어 : 로컬 저장소 → 내 컴퓨터, 원격 저장소 → 깃허브

  • Commited : 데이터가 로컬 저장소에 안전하게 저장됐을 때
  • Modified : 수정한 파일을 아직 원격 저장소에 커밋하지 않았을 때
  • Staged : 현재 수정한 파일을 이제 원격 저장소에 커밋하려고 할 때

결국, GitHub가 하는 일은…

  1. 워킹 트리에서 파일을 수정한다
  2. Staging Area (=장바구니)에 파일을 Stage (=담아서) 커밋할 스냅샷을 만든다
  3. 이때, 모든 파일을 추가할 수도 있고, 원하는 파일만 선택해서 추가할 수 있다.
  4. Staging Area에 있는 파일들을 Commit 해서 Git 디렉토리에 영구적인 스냅샷으로 저장한다.

⇒ 즉, 우리의 코드들의 모든 과정을 기록한다.

Step 0. Git 설치 및 세팅

설치는 완료했다고 가정하고,,,

내 컴퓨터에서 깃허브를 처음 쓰려면 세팅을 해줘야 하는데

  1. 아무 폴더를 만든다.
  2. 해당 폴더에서 ‘터미널’을 연다
  3. git --version 명령어로 설치된 버전을 확인한다 (안 뜨면 안 깔린 거니까 다시 설치하자)
  4. 내 정보 입력하기 (내 깃허브 계정과 연결하기)
    1. git config --global uesr.email "email@naver.com" → 내 깃허브 이메일 계정
    2. git config --global user.name "정지윤"

Step 1. 저장소 만들기

먼저 로컬 저장소 (=내 컴퓨터)와 원격 저장소를 연결 시켜줘야한다.

로컬 저장소에서는 오류 해결 등 모든 일련의 과정들을 수행하고, 이를 원격 저장소에 저장함으로써, 공유하고 기록하는 역할을 한다.

저장소 만드는 방법

  1. 아예 새로 만들기 : git init
  2. 이미 만들어진 원격 저장소에 로컬 저장소 연결하기 : git clone

이제 깃허브를 쓰는 과정에서 깃허브의 자주 쓰이는 명령어만 정리해보려고 한다.

Git 명령어 모음

제일 기본으로 알아둬야 하는 명령어들

  • git init : 프로젝트 버전 관리 시작→ 프로젝트 단위로 Git 버전 관리를 시작하는 기능
  • 프로젝트 폴더 처음 열고 터미널에 이 명령어를 치고 시작
  • git remote -v : 원격 저장소 URL 확인
  • 지금 내 프로젝트랑 연결된 원격 저장소 URL을 확인할 수 있다
  • git remote add <원격별칭> <URL> : 원격 저장소 추가→ 원격 별칭을 원격 저장소를 지칭하는 이름, 단일 원격인 경우 origin 사용을 추천함
  • ex) git remote add origin <https://github.com/lisrarnjs/test.git>
  • git clone <URL> : 원격 저장소 복제
  • ex) git clone <https://github.com/lisarnjs/test.git>
  • git status : 현재 브랜치 변경사항 확인

  • git add <파일명> : 특정 파일 추적 및 스테이징
  • ex) git add ./src/main.js
  • git add . : 모든 파일 추적 및 스테이징
  • git restore --staged <파일> : 특정 파일 언스테이징 (v2.23)
  • ex) git restore --staged ./src/main.js
  • git restore --staged . : 특정 파일 언스테이징 (v2.23)

  • git commit -m “message” : 버전 생성 (따옴표 닫기 전에는 메시지 줄 바꿈 가능)
  • git commit > i > 메시지 입력 > esc > :wq : vim 에디터로 커밋 메시지 작성하기

→ commit 은 버전 생성으로, 현재 작업 내용을 하나의 버전으로 기록(생성)하는 것

버전 관리 할 때 쓰이는 명령어들

명령 설명 예시

git log 현재 브랜치의 버전 내역을 확인  
git log -<숫자> 숫자만큼만 최신 버전 내역 확인 git log -2
git log --all 모든 브랜치 내역 확인  
git log --oneline 간략한 버전 내역 확인  
git log --graph 그래프 형태로 버전 내역 확인  
git reflog 로컬의 모든 버전 관리 내역 확인  
git show 현재 브랜치의 최신 버전 확인  
git show <브랜치> 특정 브랜치의 최신 버전 확인 git show dev

브랜치를 사용할 때 쓰이는 명령어들

명령 설명 예시

git branch 로컬 브랜치 목록 확인  
git branch -r 원격 브랜치 목록 확인  
git branch -a 로컬 및 원격 브랜치 목록 확인  
git branch <브랜치> 브랜치 생성 git branch dev
git branch -D <브랜치> 브랜치 삭제 git branch -D dev
git branch -m <브랜치> 현재 브랜치 이름 변경 git branch -m main
git branch -m <이전브랜치> <새브랜치> 특정 브랜치 이름 변경 git branch -m master main
git branch --show-current 현재 브랜치 이름 확인 (v2.22)  
git checkout <브랜치> 브랜치 전환 git checkout dev
git checkout -b <브랜치> 브랜치 생성 및 전환 git checkout -b dev
git checkout <해시> 특정 버전 체크아웃 git checkout 1a2b3c4d
git switch <브랜치> 브랜치 전환 (v2.23) git switch dev
git swtich -c <브랜치> 브랜치 생성 및 전환 (v2.23) git switch -c dev

<aside> 💡

여기서 branch란?

프로젝트에서 여러 작업을 나눠서 병렬로 진행할 수 있는 버전 관리의 분기점을 의미한다.

예를 들어서 A와 B가 협업하고 있을 때, 각각 a와 b 브랜치에서 코딩을 하고 이를 나중에 하나로 합치는 거다

</aside>

git push와 관련된 명령어들

명령 설명 예시

git push <원격별칭> <브랜치> 원격 저장소로 밀어내기 git push origin dev
git push <원격별칭> --all 원격 저장소로 모든 브랜치 밀어내기 git push origin --all
git push <원격별칭> <브랜치> -f 원격 저장소로 강제(Force) 밀어내기 git push origin dev -f

<aside> 💡

push는 말 그대로 밀어내기, 즉 로컬 저장소에서 수정한 내용을 원격 저장소로 밀 때 쓴다

</aside>

git pull과 관련된 명령어들

명령 설명 예시

git pull <원격별칭> <브랜치> 원격 저장소에서 브랜치 당겨오기 git pull origin dev
git pull --rebase <원격별칭> <브랜치> 원격 저장소의 브랜치로 로컬 브랜치 덮어쓰기 git pull --rebase origin dev

<aside> 💡

pull은 당겨오기, 즉 원격 저장소에서 업데이트된 내용을 로컬 저장소에 불러올 때 쓴다

</aside>

git restore 과 관련된 명령어들

은근 많이 쓰인다.. 생각보다 되돌리기로 해결 안되는 오류들이 많다,, (그럴 땐 리—셋)

명령 설명 예시

git checkout HEAD -- <파일> 특정 파일 롤백 git checkout HEAD -- ./src/main.js
git restore <파일> 특정 파일 롤백 (v2.23) git restore ./src/main.js
git restore . 모든 파일 롤백 (v2.23)  
git reset --hard HEAD 모든 파일 롤백  

명령 설명 예시

git reset --hard HEAD~<번호> 번호만큼 이전 버전으로 리셋 git reset --hard HEAD~2
git reset --hard HEAD~1 직전 버전으로 리셋 (1 버전 전으로)  
git reset --hard HEAD~ 직전 버전으로 리셋 (1 생략)  
git reset --hard <해시> 특정 버전으로 리셋 git reset --hard 1a2b3c4d
git reset --hard HEAD^ 마지막 버전을 삭제  
git reset --hard 수정 내용을 버림  
git reset --soft 수정 내용을 스테이징  
git reset --mixed 수정 내용을 스테이징하지 않음  

branch 관련 명령어들

명령 설명 예시

git merge <브랜치> 현재 브랜치에 특정 브랜치 병합 git merge dev

명령 설명 예시

git rebase <브랜치> 현재 브랜치를 대상 브랜치로 재배치 git rebase main
git rebase --continue 재배치 계속 진행  

merge의 중요성

나는 주로 혼자서 프론트엔드를 맡아왔기 때문에 사실 충돌이 날만한 일이 없었다,,

근데 취직하고 나서는 “협업”이 일상이 될텐데, 나 혼자 독고다이로 코딩을 하면 진짜 큰일난다..

(무한 충돌 발생,,,)

그럴 때! 우리는 branch 와 merge를 쓰면 된다.

대부분의 협업 과정에서

  1. 웹사이트가 있고 작업을 진행한다.
  2. 새로운 이슈를 처리할 새 branch를 만든다.
  3. 새로 만든 branch에서 작업을 진행한다.

이때 중요한 문제가 생겨서 그것을 해결하는 Hotfix를 먼저 만들어야 한다. 그러면 아래와 같이 할 수 있다.

  1. 새로운 이슈를 처리하기 이전의 운영(Production) 브랜치로 이동한다.
  2. Hotfix 브랜치를 새로 하나 생성한다.
  3. 수정한 Hotfix 테스트를 마치고 운영 브랜치로 Merge 한다.
  4. 다시 작업하던 브랜치로 옮겨가서 하던 일 진행한다.

그러면 한 번 실습을 진행해보자!

Github에 git 명령어를 사용해서 코드 올리기

  1. github에 git-practice-repo 이름의 새로운 레포지토리를 생성한다.
  2. vscode에서 아까 만들었던 git-practice 폴더를 열어준다.
  3. github에 나와있는 순서대로 진행한다.
  4. 참고 : git push할 때 -u 추가하면 주소 기억하라는 뜻, 한 번 입력하면 그 뒤로 안 해도 됨

git branch 명령어 활용해서 새로운 branch를 만들고 깃허브에 올리기

  1. git-practice 프로젝트 열어서 terminal 열어줍니다
  2. git switch -c newbranch 명령어를 입력하여 새로운 브랜치 생성 및 전환합니다.
  3. 왼쪽 아래 브랜치 변경된 것 확인합니다.
  4. 새로운 브랜치에서 README.md 에 수정 사항 만들고 add, commit 합니다.
  5. 원격 저장소에 새로운 브랜치를 올립니다. git push origin newbranch

코드를 임시 저장하고 다음 commit push 하기

  1. newbranch에서 리드미에 주석(ctrl, command + /)으로 코드 작성하고 ctrl + s / command + s 로 저장하기
  2. 방금 저장한 것은 커밋으로 올라가면 안되는데..?! 코드를 임시 저장해보자 git stash
  3. 다시 뭔가 작성해보고 add, commit 하고 push 해보자.
  4. 원격 저장소에 주석 빼고 잘 올라갔는지 확인하고, 돌아와서 git stash pop 을 해보자.
  5. 그럼 충돌 난다. 해결해보자.
  • 해결법결국 내가 최종적으로 남기고 싶은 부분으로 다시 수정해주고
  • git add . → git commit -m “충돌 수정” → git push origin main
  • 충돌이 났을 땐? 먼저 관련 내용을 다시 하나로 수정해주는 작업이 필요하다

다른 사람의 repo를 clone 하고 branch 새로 만들어서 push 하기

  1. test-repo의 저장소 URL을 복사한다.
  2. 터미널 열고 frontend 폴더를 찾아간다. (ls → cd Desktop → cd frontend → git clone URL)
  3. frontend 폴더에 test-repo 프로젝트가 만들어진다.
  4. 본인이름한글로 브랜치명 따셔서 브랜치 만들어주시고, README.md 파일 만들어서 커밋하고 해당 브랜치를 push 한다. try first

내 branch에서 testbranch 만들고 코드 merge 하기

  1. 본인이름한글로 브랜치에서 git switch -c testbranch 로 새로운 브랜치를 만들어준다.
  2. README.md 에 새로운 코드 작성하고 add → commit 한다.
  3. git switch 본인이름한글로 로 넘어와서 git merge testbranch 입력한다.
  4. testbranch에 있던 코드가 본인이름한글로로 잘 넘어온다.
  5. merge 완료되었다면 사용하지 않는 브랜치를 삭제한다. git branch -d testbranch
  6. test-repo의 본인이름한글로 브랜치로 push 한다. try-first

충돌 만들고, merge 해보기

  1. 다시 testbranch 만들어준다. git switch -c testbranch
  2. 다시 본인이름한글로 브랜치로 돌아온다.
  3. README.md 에 코드 한 줄 추가하고 add → commit 한다.
  4. testbranch 로 이동해서 README.md 에 있던 코드 다 지우고 “메롱”이라고 적는다.
  5. git add . → git commit -m “test branch commit 1” 해볼게요.
  6. 본인이름한글로 로 돌아와서 testbranch 를 merge 해보면 충돌 나는데,
  7. 직접 충돌 해결하고, add → commit 해준다.
  8. 이제 testbranch도 merge했으니 삭제한다.
저작자표시 (새창열림)

'BoostCamp' 카테고리의 다른 글

[250305] HTML  (1) 2025.03.05
[250304] CI/CD  (0) 2025.03.04
[250228] Git 전략과 협업 방법  (0) 2025.02.28
'BoostCamp' 카테고리의 다른 글
  • [250305] HTML
  • [250304] CI/CD
  • [250228] Git 전략과 협업 방법
vV최강양파Vv
vV최강양파Vv
양파 갓생 살기 프로젝트
  • vV최강양파Vv
    just-stop
    vV최강양파Vv
  • 전체
    오늘
    어제
    • just-stopyoon (22)
      • Front-end (1)
        • mosAIc 리팩토링 (0)
        • React 리액트 (6)
        • SNAPINFO 리팩토링 (0)
      • BoostCamp (4)
      • Problem Solving (7)
        • 백준 (Baekjoon) (0)
        • 프로그래머스 (Programmers) (7)
      • ECONOMY (4)
        • Daily 금융 상식 (4)
  • 블로그 메뉴

    • 홈
    • 방명록
  • 링크

    • 멍청고양이
    • GitHub
  • 공지사항

  • 인기 글

  • 태그

    금융생활
    react
    프로그래머스
    코딩 문제
    코딩테스트
    front-end
    gihub
    알고리즘
    금융상식
    독서
    구름톤
    프론트엔드
    개발
    코드
    독후감
    react개발
    리액트
    책 후기
    정렬
    코딩
    해시
    the money book
    큐
    깃허브
    CSS
    PS
    토스
    가장 큰수
    구름톤챌린지
    파이썬
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
vV최강양파Vv
[250227] Git에 대해, 협업 시 버전 관리의 중요성 및 사용법
상단으로

티스토리툴바