프로그래밍/GIT

⭕ GitHub : Branch 위치에서 Main 코드를 merge 하고, 원격지 push 하기

재우니 2024. 7. 4. 19:18

 

 

 

# 현재 브랜치 확인
git branch



# 개발 중인 브랜치로 전환
git checkout feature-branch



# 원격 저장소의 최신 변경 사항 가져오기
git fetch



# main 브랜치의 변경 사항을 현재 브랜치에 병합
git merge origin/main



# 충돌 해결 후, 해당 파일을 스테이징 영역에 추가
git add 충돌해결된파일1 충돌해결된파일2

# 병합 완료
git commit -m "Merge latest changes from main into feature branch"

# 업데이트된 브랜치를 원격 저장소에 푸시
git push origin feature-branch

 

 

시연해 보자.

 

1. 현재 위치의 branch 를 확인한다. main 만 존재한다. 

 

git branch

PS E:\github\git-private\git-action-python> git branch
* main

 

2. branch 가 없어서 "develop-shimpark" 를 생성한다.

 

git branch develop-shimpark

PS E:\github\git-private\git-action-python> git branch develop-shimpark

 

3. branch 를  "develop-shimpark" 로 변환한다.

 

git checkout develop-shimpark

 

PS E:\github\git-private\git-action-python> git checkout develop-shimpark
Switched to branch 'develop-shimpark'

 

 

4. 현재 위치의 branch 를 확인한다.  "develop-shimpark"  의 branch 로 이동된것을 확인 되었다.

 

git branch

PS E:\github\git-private\git-action-python> git branch
* develop-shimpark
  main

 

5. branch 위치에서 git fetch 를 통해 main 의 "원격 저장소의 최신 변경 사항 가져오기" 온다. 중첩된 부분이 있으면 소스를 변경을 한다.  branch 내에서 최종 commit 을 한다.

 

git fetch

PS E:\github\git-private\git-action-python> git fetch 
remote: Enumerating objects: 5, done.
remote: Counting objects: 100% (5/5), done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 3 (delta 2), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (3/3), 946 bytes | 157.00 KiB/s, done.
From https://github.com/shimpark/git-action-python
   a81a63b..2b41968  main       -> origin/main

 

6. main 브랜치의 변경 사항을 현재 브랜치 develop-shimpark 에 병합 (main -> branch .. merge)

 

git merge origin/main

PS E:\github\git-private\git-action-python> git merge origin/main           
Updating ad99647..2b41968
Fast-forward
 README.md | 7 +------
 1 file changed, 1 insertion(+), 6 deletions(-)

 

 

병합 도중 충돌이 발생할 경우, Git은 충돌이 발생한 파일을 알려줍니다. 해당 파일을 열어 수동으로 충돌을 해결해야 합니다.

1. 충돌이 발생한 파일을 텍스트 에디터로 엽니다.
2. 충돌 마커 (<<<<<<<, =======, >>>>>>>)를 확인하고 올바른 코드를 선택하여 충돌을 해결합니다.
3. 충돌을 해결한 파일을 스테이징 영역에 추가합니다.

 

 

# 충돌 해결 후, 해당 파일을 스테이징 영역에 추가, 충돌을 해결하고 파일을 스테이징 영역에 추가한 후, 병합을 완료합니다.

 

git add 충돌해결된파일1 충돌해결된파일2

 

# 병합 완료


git commit -m "Merge latest changes from main into feature branch"

 

 

 

7. 현재 브랜치 develop-shimpark 의 소스를 원격지 github 에 push 한다. (업데이트된 브랜치를 원격 저장소에 푸시)

 

git push origin develop-shimpark

PS E:\github\git-private\git-action-python> git push origin develop-shimpark
Total 0 (delta 0), reused 0 (delta 0), pack-reused 0
remote: 
remote: GitHub found 2 vulnerabilities on shimpark/git-action-python's default branch (2 moderate). To find out more, visit:
remote:      https://github.com/shimpark/git-action-python/security/dependabot
remote:
To https://github.com/shimpark/git-action-python.git
   0be6e7e..aff9d07  develop-shimpark -> develop-shimpark

 

 

8. github 의 pull requests 에 가서 push 한 내역을 요청해야 한다.

 

 

 

 

9. 현재 브랜치 develop-shimpark 의 소스에서 변경된 코드를 보고 Create pull request 버튼을 선택하여 요청한다.

 

10. 최종관리자가 Pull requests 한 목록을 보고, 내역을 확인한다.

 

 

11. 관리자가 내용을 보고 최종 main 에 merge 하고자 한다면, Merge pull request 버튼을 선택한다. 

 

 

12. 선택 후, 관리자는 commit 내용과 함께 Confirm merge 버튼을 선택하면, 요청한 소스는 병합되어 main 에 반영되어 있다.

 

 

13. Commits 내역에 가면, develop-shimpark 의 브랜치에서 요청한 내역을 merge 했다고 되어 있다.