사용자 도구

사이트 도구


wiki:it:github:branch_management

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

wiki:it:github:branch_management [2025/07/30 06:43] – 만듦 - 바깥 편집 127.0.0.1wiki:it:github:branch_management [2025/07/31 02:42] (현재) syjang0803
줄 7: 줄 7:
 ==== 브랜치를 나무로 비유하면 ==== ==== 브랜치를 나무로 비유하면 ====
  
-**메인 브랜치 (main)** = 나무의 **줄기** +**메인 브랜치 (''main'')** = 나무의 **줄기** 
-가장 안정적이고 중요한 코드 +  가장 안정적이고 중요한 코드 
-항상 동작하는 완성된 코드만 있어야 함 +  항상 동작하는 완성된 코드만 있어야 함 
-사용자들이 실제로 사용하는 코드+  사용자들이 실제로 사용하는 코드
  
-**기능 브랜치 (feature)** = 나무의 **가지** +**기능 브랜치 (''feature'')** = 나무의 **가지** 
-새로운 기능을 개발하는 곳 +  새로운 기능을 개발하는 곳 
-실험적인 코드, 아직 완성되지 않은 코드 +  실험적인 코드, 아직 완성되지 않은 코드 
-문제가 생겨도 메인 브랜치에 영향 없음+  문제가 생겨도 메인 브랜치에 영향 없음
  
 ==== 실생활 예시로 이해하기 ==== ==== 실생활 예시로 이해하기 ====
줄 21: 줄 21:
 **웹사이트를 만든다고 가정해봅시다:** **웹사이트를 만든다고 가정해봅시다:**
  
-<code>+<file>
 main 브랜치 (메인 웹사이트) main 브랜치 (메인 웹사이트)
 ├── login-feature 브랜치 (로그인 기능 개발 중) ├── login-feature 브랜치 (로그인 기능 개발 중)
 ├── payment-feature 브랜치 (결제 기능 개발 중) ├── payment-feature 브랜치 (결제 기능 개발 중)
 └── design-update 브랜치 (디자인 업데이트 중) └── design-update 브랜치 (디자인 업데이트 중)
-</code>+</file>
  
 **이렇게 하면 좋은 점:** **이렇게 하면 좋은 점:**
-로그인 기능 개발 중 문제가 생겨도 메인 웹사이트는 정상 작동 +  * 로그인 기능 개발 중 문제가 생겨도 메인 웹사이트는 정상 작동 
-여러 사람이 동시에 다른 기능을 개발 가능 +  여러 사람이 동시에 다른 기능을 개발 가능 
-완성된 기능만 메인 브랜치에 합치기 가능+  완성된 기능만 메인 브랜치에 합치기 가능
  
 ===== 🚀 브랜치 기본 사용법 ===== ===== 🚀 브랜치 기본 사용법 =====
줄 54: 줄 54:
  
 **💡 브랜치 이름 앞의 기호 의미:** **💡 브랜치 이름 앞의 기호 의미:**
-- `*: 현재 작업 중인 브랜치 +  ''*'' : 현재 작업 중인 브랜치 
-- `main: 메인 브랜치 (가장 중요한 브랜치)+  * ''main'' : 메인 브랜치 (가장 중요한 브랜치)
  
 ==== 새 브랜치 만들기 ==== ==== 새 브랜치 만들기 ====
줄 74: 줄 74:
  
 **💡 브랜치 이름 짓기 규칙:** **💡 브랜치 이름 짓기 규칙:**
-- `feature-기능명`: 새로운 기능 개발 +  * ''feature-기능명'': 새로운 기능 개발 
-- `bugfix-문제명`: 버그 수정 +  * ''bugfix-문제명'': 버그 수정 
-- `hotfix-문제명`: 긴급 수정 +  * ''hotfix-문제명'': 긴급 수정 
-예: `feature-user-login``bugfix-payment-error`+  예: ''feature-user-login''''bugfix-payment-error''
  
 ==== 브랜치 이동하기 ==== ==== 브랜치 이동하기 ====
줄 92: 줄 92:
 # 이동 후 확인 # 이동 후 확인
 git branch git branch
-pwd  # 현재 위치는 같지만 Git 상태가 다름+''pwd''  # 현재 위치는 같지만 Git 상태가 다름
 </code> </code>
  
 **⚠️ 브랜치 이동 시 주의사항:** **⚠️ 브랜치 이동 시 주의사항:**
-변경사항이 있으면 먼저 커밋하거나 stash 해야 함 +  * 변경사항이 있으면 먼저 커밋하거나 stash 해야 함 
-브랜치마다 파일 상태가 다를 수 있음+  브랜치마다 파일 상태가 다를 수 있음
  
 ===== 🔄 브랜치 작업 흐름 - 실제 개발 시나리오 ===== ===== 🔄 브랜치 작업 흐름 - 실제 개발 시나리오 =====
줄 222: 줄 222:
  
 **Merge의 장점:** **Merge의 장점:**
-🟢 안전함: 원본 커밋 히스토리가 보존됨 +  * 🟢 안전함: 원본 커밋 히스토리가 보존됨 
-🟢 쉬움: 이해하기 쉽고 실수할 확률이 낮음 +  🟢 쉬움: 이해하기 쉽고 실수할 확률이 낮음 
-🟢 추적 가능: 언제 어떤 기능이 합쳐졌는지 명확함+  🟢 추적 가능: 언제 어떤 기능이 합쳐졌는지 명확함
  
 **Merge의 단점:** **Merge의 단점:**
-🔴 복잡함: 히스토리가 복잡해 보일 수 있음 +  * 🔴 복잡함: 히스토리가 복잡해 보일 수 있음 
-🔴 병합 커밋: 추가 커밋이 생성됨+  🔴 병합 커밋: 추가 커밋이 생성됨
  
 ==== Rebase (재배치) - 고급 사용자용 ==== ==== Rebase (재배치) - 고급 사용자용 ====
줄 247: 줄 247:
  
 **⚠️ Rebase 주의사항:** **⚠️ Rebase 주의사항:**
-이미 GitHub에 올린 브랜치는 rebase 하지 마세요 +  * 이미 GitHub에 올린 브랜치는 rebase 하지 마세요 
-충돌이 발생하면 해결하기 더 복잡합니다 +  충돌이 발생하면 해결하기 더 복잡합니다 
-처음에는 merge를 사용하는 것을 추천합니다+  처음에는 merge를 사용하는 것을 추천합니다
  
 ===== 🚨 브랜치 충돌 해결하기 ===== ===== 🚨 브랜치 충돌 해결하기 =====
줄 258: 줄 258:
  
 **예시 상황:** **예시 상황:**
-1. `main브랜치에서 `index.html`의 제목을 "메인 페이지"로 수정 +  * ''main'' 브랜치에서 ''index.html''의 제목을 "메인 페이지"로 수정 
-2. `feature-login브랜치에서 같은 `index.html`의 제목을 "로그인 페이지"로 수정 +  * ''feature-login'' 브랜치에서 같은 ''index.html''의 제목을 "로그인 페이지"로 수정 
-3. 두 브랜치를 합치려고 할 때 충돌 발생+  두 브랜치를 합치려고 할 때 충돌 발생
  
 ==== 충돌 해결 과정 ==== ==== 충돌 해결 과정 ====
줄 288: 줄 288:
 <html> <html>
 <head> <head>
-<<<<<<< HEAD+%%<<<<<<< HEAD%%
     <title>메인 페이지</title>     <title>메인 페이지</title>
-=======+%%=======%%
     <title>로그인 페이지</title>     <title>로그인 페이지</title>
->>>>>>> feature-login+%%>>>>>>> feature-login%%
 </head> </head>
 <body> <body>
줄 301: 줄 301:
  
 **💡 충돌 마커 의미:** **💡 충돌 마커 의미:**
-- `<<<<<<< HEAD`: 현재 브랜치(main)의 내용 시작 +  * %%<<<<<<< HEAD%%: 현재 브랜치(''main'')의 내용 시작 
-- `=======`: 두 브랜치 내용의 구분선 +  * %%=======%%: 두 브랜치 내용의 구분선 
-- `>>>>>>> feature-login`: 합치려는 브랜치의 내용 끝+  * %%>>>>>>> feature-login%%: 합치려는 브랜치의 내용 끝
  
 **4단계: 충돌 해결하기** **4단계: 충돌 해결하기**
줄 330: 줄 330:
 ==== Git Flow (대표적인 브랜치 전략) ==== ==== Git Flow (대표적인 브랜치 전략) ====
  
-<code>+<file>
 main (메인 브랜치) main (메인 브랜치)
 ├── develop (개발 브랜치) ├── develop (개발 브랜치)
줄 338: 줄 338:
 ├── release/v1.0 (출시 준비) ├── release/v1.0 (출시 준비)
 └── hotfix/critical-bug (긴급 수정) └── hotfix/critical-bug (긴급 수정)
-</code>+</file>
  
 **브랜치별 역할:** **브랜치별 역할:**
-**main**: 출시된 안정적인 코드 +  * **''main''**: 출시된 안정적인 코드 
-**develop**: 개발 중인 코드들이 합쳐지는 곳 +  * **''develop''**: 개발 중인 코드들이 합쳐지는 곳 
-**feature**: 새로운 기능 개발 +  * **''feature''**: 새로운 기능 개발 
-**release**: 출시 준비 및 테스트 +  * **''release''**: 출시 준비 및 테스트 
-**hotfix**: 긴급 버그 수정+  **''hotfix''**: 긴급 버그 수정
  
 ==== 간단한 브랜치 전략 (초보자 추천) ==== ==== 간단한 브랜치 전략 (초보자 추천) ====
  
-<code>+<file>
 main (메인 브랜치) main (메인 브랜치)
 ├── feature/기능명 (새 기능) ├── feature/기능명 (새 기능)
 ├── bugfix/버그명 (버그 수정) ├── bugfix/버그명 (버그 수정)
 └── hotfix/긴급수정 (긴급 수정) └── hotfix/긴급수정 (긴급 수정)
-</code>+</file>
  
 **작업 흐름:** **작업 흐름:**
-1. `main`에서 새 브랜치 생성 +  * 1. ''main''에서 새 브랜치 생성 
-2. 기능 개발 완료 +  2. 기능 개발 완료 
-3. `main`으로 병합 +  3. ''main''으로 병합 
-4. 브랜치 삭제+  4. 브랜치 삭제
  
 ===== 🔧 고급 브랜치 명령어 ===== ===== 🔧 고급 브랜치 명령어 =====
줄 415: 줄 415:
  
 **추천하는 이름 규칙:** **추천하는 이름 규칙:**
-<code bash>+<file>
 # 기능 개발 # 기능 개발
 feature/user-authentication feature/user-authentication
줄 434: 줄 434:
 experiment/new-ui experiment/new-ui
 experiment/performance-test experiment/performance-test
-</code>+</file>
  
 **피해야 할 이름:** **피해야 할 이름:**
-<code bash>+<file>
 # 너무 모호함 # 너무 모호함
 feature/update feature/update
줄 445: 줄 445:
 # 너무 김 # 너무 김
 feature/implement-user-authentication-with-email-verification-and-password-reset feature/implement-user-authentication-with-email-verification-and-password-reset
-</code>+</file>
  
 ==== 브랜치 작업 시 좋은 습관 ==== ==== 브랜치 작업 시 좋은 습관 ====
줄 490: 줄 490:
  
 **오류 메시지:** **오류 메시지:**
-<code>+<file>
 error: Your local changes to the following files would be overwritten by checkout: error: Your local changes to the following files would be overwritten by checkout:
- file.txt+ ''file.txt''
 Please commit your changes or stash them before you switch branches. Please commit your changes or stash them before you switch branches.
-</code>+</file>
  
 **해결법:** **해결법:**
 <code bash> <code bash>
 # 방법 1: 커밋하기 # 방법 1: 커밋하기
-git add .+''git add .''
 git commit -m "작업 중인 내용 임시 저장" git commit -m "작업 중인 내용 임시 저장"
  
 # 방법 2: 임시 저장 (stash) # 방법 2: 임시 저장 (stash)
-git stash+''git stash''
 git switch other-branch git switch other-branch
 git switch back-to-original-branch git switch back-to-original-branch
-git stash pop+''git stash pop''
 </code> </code>
  
줄 512: 줄 512:
  
 **오류 메시지:** **오류 메시지:**
-<code+<file
-error: The branch 'feature-login' is not fully merged. +error: The branch '''feature-login''' is not fully merged. 
-If you are sure you want to delete it, run 'git branch -D feature-login'+If you are sure you want to delete it, run '''git branch -D feature-login'''. 
-</code>+</file>
  
 **해결법:** **해결법:**
 <code bash> <code bash>
 # 브랜치를 정말 삭제하고 싶다면 # 브랜치를 정말 삭제하고 싶다면
-git branch -D feature-login+''git branch -D feature-login''
  
 # 또는 먼저 병합 후 삭제 # 또는 먼저 병합 후 삭제
줄 552: 줄 552:
  
 ==== 연습 1: 기본 브랜치 작업 ==== ==== 연습 1: 기본 브랜치 작업 ====
-1. 새 브랜치 `feature/hello-world생성 +  - 1. 새 브랜치 ''feature/hello-world'' 생성 
-2. `hello.html파일 만들기 +  2. ''hello.html'' 파일 만들기 
-3. 커밋하고 메인 브랜치로 병합하기 +  3. 커밋하고 메인 브랜치로 병합하기 
-4. 브랜치 삭제하기+  4. 브랜치 삭제하기
  
 ==== 연습 2: 여러 브랜치 동시 작업 ==== ==== 연습 2: 여러 브랜치 동시 작업 ====
-1. `feature/header브랜치에서 헤더 개발 +  - 1. ''feature/header'' 브랜치에서 헤더 개발 
-2. `feature/footer브랜치에서 푸터 개발 +  2. ''feature/footer'' 브랜치에서 푸터 개발 
-3. 각각 메인 브랜치로 병합하기+  3. 각각 메인 브랜치로 병합하기
  
 ==== 연습 3: 충돌 해결 연습 ==== ==== 연습 3: 충돌 해결 연습 ====
-1. 메인 브랜치에서 `index.html`의 제목 수정 +  - 1. 메인 브랜치에서 ''index.html''의 제목 수정 
-2. 새 브랜치에서 같은 파일의 같은 부분 다르게 수정 +  2. 새 브랜치에서 같은 파일의 같은 부분 다르게 수정 
-3. 병합 시 발생하는 충돌 해결하기+  3. 병합 시 발생하는 충돌 해결하기
  
 ===== 🔗 관련 용어 ===== ===== 🔗 관련 용어 =====
  
 **더 자세한 설명이 필요하시면:** **더 자세한 설명이 필요하시면:**
-[[wiki:glossary:development_tools:git:branch|Branch]] - 브랜치 개념 자세히 +  * [[wiki:glossary:development_tools:git:branch|Branch]] - 브랜치 개념 자세히 
-[[wiki:glossary:development_tools:git:merge|Merge]] - 병합 이해하기 +  [[wiki:glossary:development_tools:git:merge|Merge]] - 병합 이해하기 
-[[wiki:glossary:development_tools:git:commit|Commit]] - 커밋 개념+  [[wiki:glossary:development_tools:git:commit|Commit]] - 커밋 개념
  
 ===== 🚀 다음 단계 ===== ===== 🚀 다음 단계 =====
  
 **브랜치 관리를 익혔다면:** **브랜치 관리를 익혔다면:**
-1. **[[wiki:it:github:troubleshooting|문제 해결]]** - 막혔을 때 해결 방법 +  - 1. **[[wiki:it:github:troubleshooting|문제 해결]]** - 막혔을 때 해결 방법 
-2. **[[wiki:it:github:advanced_tips|고급 팁]]** - 더 효율적으로 사용하기 +  2. **[[wiki:it:github:advanced_tips|고급 팁]]** - 더 효율적으로 사용하기 
-3. **Pull Request 배우기** - 팀원과 협업하는 방법+  3. **Pull Request 배우기** - 팀원과 협업하는 방법
  
 ===== 🎓 마무리 ===== ===== 🎓 마무리 =====
줄 586: 줄 586:
  
 **여러분이 배운 것들:** **여러분이 배운 것들:**
-✅ 브랜치 개념 이해 +  * ✅ 브랜치 개념 이해 
-✅ 브랜치 생성, 이동, 삭제 +  ✅ 브랜치 생성, 이동, 삭제 
-✅ 브랜치 병합 (Merge) +  ✅ 브랜치 병합 (Merge) 
-✅ 충돌 해결 방법 +  ✅ 충돌 해결 방법 
-✅ 브랜치 전략과 모범 사례+  ✅ 브랜치 전략과 모범 사례
  
 **브랜치를 사용하면:** **브랜치를 사용하면:**
-🚀 여러 기능을 동시에 안전하게 개발 +  * 🚀 여러 기능을 동시에 안전하게 개발 
-🛡️ 메인 코드를 보호하면서 실험 가능 +  🛡️ 메인 코드를 보호하면서 실험 가능 
-👥 팀원들과 효율적으로 협업 +  👥 팀원들과 효율적으로 협업 
-📈 더 체계적인 개발 프로세스+  📈 더 체계적인 개발 프로세스
  
 **다음 단계로 넘어가기 전에:** **다음 단계로 넘어가기 전에:**
-실제 프로젝트에서 브랜치를 사용해보세요 +  * 실제 프로젝트에서 브랜치를 사용해보세요 
-작은 기능부터 시작해서 점차 복잡한 작업으로 확장해보세요 +  작은 기능부터 시작해서 점차 복잡한 작업으로 확장해보세요 
-충돌 해결 연습을 많이 해보세요+  충돌 해결 연습을 많이 해보세요
  
 **이제 문제 해결 가이드를 통해 막혔을 때 해결하는 방법을 배워보세요!** 🌟 **이제 문제 해결 가이드를 통해 막혔을 때 해결하는 방법을 배워보세요!** 🌟
줄 607: 줄 607:
 ---- ----
  
-**이전:** [[wiki:it:github:remote_operations|🌐 GitHub와 연동하기]] | **다음:** [[wiki:it:github:troubleshooting|🔧 문제 해결하기]] | **목록:** [[wiki:it:github:start|📋 전체 문서 목록]]  +**이전:** [[wiki:it:github:remote_operations|🌐 GitHub와 연동하기]] | **다음:** [[wiki:it:github:troubleshooting|🔧 문제 해결하기]] | **목록:** [[wiki:it:github:start|📋 전체 문서 목록]]
- +
wiki/it/github/branch_management.1753857794.txt.gz · 마지막으로 수정됨: 저자 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki