[SSAFYcial] 자주 쓰는 "GIT COMMAND" 정리👨‍👩‍👧‍👦 (협업편)

kingkang·2024년 12월 6일

📸 SSAFYcial

목록 보기
7/14
post-thumbnail

안녕하세요. 저는 싸피 공식 기자단 SSAFYcial 12기 강지민 기자입니다!

지난 시간에는 Git의 기본 명령어들을 알아보았는데요. 오늘은 팀 프로젝트에서 꼭 필요한 Git 협업 명령어들을 소개해 드리려고 합니다. 성공적인 팀 프로젝트의 열쇠가 될 이 명령어들, 함께 알아볼까요? 💪


1. 브랜치 관리: Branch Operations

팀 프로젝트에서는 여러 개발자가 동시에 작업하기 때문에 브랜치 관리가 매우 중요합니다.

브랜치 생성 및 이동

새로운 기능 개발이나 버그 수정을 위한 브랜치를 만들고 관리합니다.

# 브랜치 목록 확인
git branch

# 새 브랜치 생성 (현재 브랜치 기준)
git branch feature/login

# 새 브랜치 생성 및 이동
git checkout -b feature/login  # 기존 방식
git switch -c feature/login    # 새 방식

# 다른 브랜치로 이동
git checkout main  # 기존 방식
git switch main    # 새 방식

브랜치 삭제

작업이 완료된 브랜치는 깔끔하게 정리합니다.

# 로컬 브랜치 삭제
git branch -d feature/login

# 원격 브랜치 삭제
git push origin --delete feature/login

2. 변경사항 추적과 저장: Staging & Committing

Git의 가장 큰 특징은 변경사항을 단계적으로 추적하고 커밋할 수 있다는 점입니다. Git 2.23부터는 restore 명령어가 워킹 디렉토리 변경사항 관리를 위해 새롭게 도입되었습니다😮

변경사항 관리

# 현재 상태 확인 (-s: 짧은 형식)
git status -s

# 변경사항 자세히 보기
git diff           # 워킹 디렉토리와 스테이징 영역 비교
git diff --staged  # 스테이징 영역과 마지막 커밋 비교

# 파일 스테이징 (. 은 모든 변경사항)
git add .

# 스테이징된 파일 되돌리기
git reset HEAD <file>        # 기존 방식
git restore --staged <file>  # 새 방식

# 변경사항 커밋
git commit -m "feat: 로그인 기능 구현"

3. 원격 저장소 연동: Remote Operations

팀 프로젝트에서는 원격 저장소와의 안정적인 동기화가 매우 중요합니다. fetchpull의 차이를 이해하고 적절히 사용해야 합니다🤓
fetch는 원격 변경사항을 로컬로 가져오기만 하는 반면, pull은 가져온 변경사항을 현재 브랜치에 자동으로 병합까지 수행합니다. 예를 들어 팀원 A가 작업한 내용을 살펴보기만 하고 싶다면 fetch를, 그 변경사항을 내 브랜치에 반영하고 싶다면 pull을 사용하면 됩니다.

# 원격 저장소 정보 확인
git remote -v

# 원격 브랜치 정보 가져오기 (병합하지 않음)
git fetch origin
git fetch --all  # 모든 원격 저장소에서 가져오기

# 원격 변경사항 가져와서 현재 브랜치에 병합
git pull origin main
git pull --rebase origin main  # rebase 방식으로 병합

# 로컬 변경사항 원격에 push
git push origin feature/login
git push -u origin feature/login  # 업스트림 브랜치 설정하며 push

4. 브랜치 병합과 재배치: Merge & Rebase

Git은 두 가지 주요 브랜치 통합 전략을 제공합니다. merge는 두 브랜치의 변경사항을 하나로 합치는 반면, rebase는 한 브랜치의 커밋들을 다른 브랜치 위로 재배치합니다.

# 브랜치 병합
git switch main
git merge feature/login
git merge --no-ff feature/login  # fast-forward 하지 않고 병합

# rebase로 커밋 재배치
git switch feature/login
git rebase main

# 병합 충돌 발생 시
git status             # 충돌 파일 확인

# 충돌 해결 후... 
git add .              # 해결된 파일 스테이징
git merge --continue   # 병합 계속

# 또는
git rebase --continue  # rebase 계속

5. 작업 임시 저장: Stash Operations

작업 중인 변경사항을 임시로 저장하고 나중에 복원할 수 있습니다. 브랜치 전환이 필요할 때 매우 유용합니다.

# 현재 변경사항 임시 저장
git stash push -m "로그인 페이지 작업 중"
git stash  # 메시지 없이 저장

# stash 목록 확인
git stash list

# 임시 저장한 작업 복원
git stash pop                # 가장 최근 stash 복원 및 삭제
git stash apply stash@{0}    # 특정 stash 복원 (삭제 X)

6. 커밋 관리와 수정: Commit Management

실수로 잘못 커밋한 경우나 커밋 메시지를 수정해야 할 때 사용하는 명령어들입니다.

# 마지막 커밋 수정
git commit --amend -m "수정된 커밋 메시지"
git commit --amend --no-edit   # 메시지는 유지하고 변경사항만 추가

# 이전 커밋으로 되돌리기
git reset --soft HEAD~1    # 커밋만 취소 (변경사항은 스테이징 영역에 유지)
git reset --mixed HEAD~1   # 커밋과 스테이징 취소 (변경사항은 워킹 디렉토리에 유지)
git reset --hard HEAD~1    # 커밋, 스테이징, 워킹 디렉토리 모두 되돌리기 (주의!)

출처 - GIT Reference


이렇게 Git의 협업 명령어들을 알아보았습니다. 처음에는 어려워 보일 수 있지만, 실제 프로젝트에서 하나씩 사용해 보면서 익숙해지시면 됩니다. 특히 브랜치 관리와 충돌 해결은 처음에는 조심스럽게 접근하시되, 팀원들과 충분한 소통을 하면서 진행하시면 좋습니다👍🏻

여러분의 성공적인 팀 프로젝트를 응원합니다! 그럼 20000😎


SSAFY에 대해 더 알고 싶다면 Hellossafycial 인스타그램SSAFY 홈페이지 CLICK✅

profile
꿈을 꾸물꾸물 꾸지 말자!

0개의 댓글