⭕ GitHub : Branch 위치에서 Main 코드를 merge 하고, 원격지 push 하기
# 현재 브랜치 확인
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 했다고 되어 있다.