본문 바로가기
DevOps & Automation/Git

⭐Git Flow와 명령어 모음zip⭐

by sukii 2025. 4. 1.
반응형

Git을 쓸 때 항상 헷갈렸던 로컬/원격 저장소의 개념, 브랜치 흐름, 그리고 자주 쓰는 명령어들을 정리해봤다. 실제로 자주 쓰이는 흐름을 따라가며 Git 명령어를 정리했다.


📁 Git 저장소의 기본 구조

로컬 저장소 :내 컴퓨터에 있는 Git 저장소

- clone 명령어를 통해 원격 저장소를 복사해 생성됨

- 로컬 저장소에는 기본 브랜치(보통 main)만 실제로 만들어지고,
원격 브랜치들은 origin/* 형태로 스냅샷처럼 참조 정보만 존재

 

원격 저장소

- GitHub, GitLab 등 온라인 서버에 존재하는 Git 저장소

- 여러 사용자가 공동으로 협업할 수 있는 중앙 저장소 역할

 

origin

- 원격 저장소의 기본 이름 (alias)
=> origin/main, origin/develop처럼 표시되며, 원격 저장소의 브랜치 상태를 로컬에서 참조하는 이름

 

*참고 : origin/develop은 로컬에 존재하는 스냅샷일 뿐이므로, 실제 작업하려면 git checkout -b develop origin/develop 또는 git switch -c develop origin/develop으로 로컬 브랜치를 따로 만들어야 함!

Git 저장소의 기본 구조와 명령어 도식화

 

 

 

🔁 Git 기본 흐름과 명령어

 

✅ 저장소 복제하기

 
git clone https://github.com/username/repo.git
  • 원격 저장소를 복사해서 로컬 저장소 생성
  • 기본 브랜치(보통 main)만 로컬에 생기고, 나머지는 origin/브랜치명으로 존재

 

✅ 브랜치 목록 확인

git branch # 로컬 브랜치 목록
git branch -r # 원격 브랜치 목록
git branch -a # 전체 목록

 

✅ 원격 브랜치 기반 로컬 브랜치 생성

#두 방법 모두 가능
git checkout -b develop origin/develop
git switch -c develop origin/develop
 
  • origin/develop 기준으로 그대로 로컬 develop 브랜치 생성
  • -b 옵션은 branch의 약자
  • Git 2.23 이상 버전부터 -c는 "create"의 약자로, 역할은 -b와 동일

 

✅ 브랜치 이동

 
#두 방법 모두 가능
git checkout 브랜치명
git switch 브랜치명
  • 로컬 브랜치로 이동 (cd처럼 작업 공간 전환)

🛠️ 작업과 커밋, 푸시

✅ 스테이징, 커밋, 푸시
git add . # 변경된 파일 전부 스테이징
git add 파일명 # 특정 파일만
git commit -m "작업 내용" # 로컬에 커밋 저장
git push origin 브랜치명 # 원격에 업로드

 

✅ 원격 브랜치와 연결 (upstream 설정)

git push -u origin 브랜치명
  • -u : --set-upstream줄임말현재 로컬 브랜치를 원격 저장소의 특정 브랜치와 연결(upstream branch 설정)하는 역할을 함. 즉, 이후에는 git push만해도 -u로 설정한 브랜치로 push됨.

 


📥 변경사항 받아오기

✅ 병합 포함 (pull)

git pull origin develop
  • 원격 브랜치의 변경사항을 로컬에 가져오고 자동 병합

✅ 병합 없이 정보만 가져오기 (fetch)  *Git 저장소의 기본 구조 그림 참고

git fetch origin
  • 원격의 최신 커밋 정보를 origin/브랜치명으로 업데이트만 함
  • 병합은 수동으로 해야 함

 


🌿 브랜치 정리 및 삭제

✅ 로컬 브랜치 삭제

git branch -d 브랜치명 # 안전 삭제 (병합 안 되면 거부)
git branch -D 브랜치명 # 강제 삭제
 

 

✅ 원격 브랜치 삭제

 
git push origin --delete 브랜치명
 

🔁 rebase로 깔끔한 히스토리 만들기

git fetch origin
git rebase origin/develop
  • 내 커밋을 origin/develop 최신 상태 위에 다시 쌓음
  • 히스토리가 일직선으로 정리됨 (커밋 ID는 변경됨)
  • 협업 중이고 이미 푸시된 커밋을 건드리면 안 된다면 이 방법은 비추

💣 실수 복구 / 강제 되돌리기

✅ 강제 초기화

git reset --hard origin/main
현재 브랜치를 원격 상태로 완전히 초기화

 

✅ 변경 전 파일/폴더 제거

git clean -df
# -d: 폴더 포함, -f: 강제 삭제
 

 

✅ 실수한 커밋 복구 (reflog)

git reflog git checkout HEAD@{1}
  • 최근 HEAD 위치 기록 확인 → 커밋 복구 가능

🌐 원격 저장소 연결 관리

✅ 원격 저장소 주소 확인 / 삭제 / 재설정

git remote -v # 현재 연결 상태 
git remote remove origin # origin 연결 제거 
git remote add origin <repo-url> # 새 origin 연결

🧠 기타 참고 명령어

git log --oneline --graph 히스토리를 시각적으로 확인
git diff 변경된 내용 비교
git status 현재 상태 (변경사항, 스테이징 여부 등)
git gc 내부 불필요한 데이터 청소 (Garbage Collection)

 


 

🌈 Pull Request (PR)

원격 저장소에 push 후에 PR을 생성하면 됨. 내가 만든 브랜치를 원격 저장소의 브랜치에 합치고 싶을 때 요청할 때 사용함.

 

 

 

1. PR Title과 Description

  • PR 제목과 설명은 명확하고 간결하게 작성
  • 리뷰어가 보기 쉽게 변경 사항 요약을 정리해두면 협업이 편함
  • PR 만들기 전 git pull --rebase origin develop 등으로 최신 상태 반영 권장

 

2. 오른쪽 사이드 바 기능


Reviewers 코드 리뷰를 할 사람(요청을 받은 사람)
Assignees 이 PR의 담당자 (본인 지정 또는 타인 지정 가능)
Labels / Projects / Milestone 태그 분류(ex.feature, frontend) / GitHub 보드와 연동 가능 / 버전 및 릴리즈 목표로 분류
Notifications 댓글이나 변경사항에 대한 알림 설정
Development 이 PR로 어떤 이슈가 닫힐 예정인지 (자동 클로징 키워드 연동)

 

3. 하단에 타임라인 ( 위 이미지에서는 짤려서 안보임 )

  • 커밋 메세지, 리뷰 요청 기록, 작업 담당자 지정 기록 등등 해당 PR과 관련된 히스토리 보여줌

 

 

4. No conflicts with base branch

  • PR 브랜치와 base 브랜치(main)에 충돌이 없을 때만 보임
  • 만약 충돌(conflict)이 있으면 빨간색 박스로 ❌ This branch has conflicts that must be resolved 나타남

5. Review requested

  • 리뷰 요청이 되었지만, 필수로 지정하지 않았으므로 바로 병합 가능
  • Reviewers 중 누군가가 리뷰를 승인해주면 Approved로 바뀜
  • Merge 버튼 세 종류
    • Create a merge commit : 별도 머지 커밋을 만들어서 두 브랜치를 합쳐 - 커밋 기록 보존 + Merge commit 추가됨
    • Squash and merge : 모든 커밋을 하나로 압축(squash) 해서 머지 -  커밋 1개로 합쳐짐 (히스토리 깔끔함)
    • Rebase and merge : 커밋들을 다시 쌓아서 머지함 (rebase) - 커밋 보존되지만 브랜치 없이 직선으로 이어짐

6. Comment 입력창

  • 팀원들이 여기다가 코멘트를 남기거나 본인이 직접 설명을 추가할 수도 있음
  • Close pull request 누르면 PR을 닫을 수 있음 (병합은 안 됨)
반응형