| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 |
- RL
- 딥러닝
- LSTM
- NLP
- real-time object detection
- hm3d
- Reinforcement Learning
- C++
- Python
- 머신러닝
- DP
- CNN
- dynamic programming
- 강화학습
- MySQL
- ubuntu
- 백준
- eecs 498
- BFS
- opencv
- dfs
- image processing
- 그래프 이론
- deep learning
- GIT
- AlexNet
- machine learning
- hm3dsem
- r-cnn
- YoLO
- Today
- Total
JINWOOJUNG
[GIT] dev branch 생성 및 main branch 병합 본문
Background
Git Repository를 생성하면 다음과 같이 main branch 밖에 없다. 하지만 협업 과정에서 일부 개발 후 main branch로 push하는 것은 비효율적이다. 따라서 dev branch에서 개발을 한 뒤 필요한 파일들만 main branch로 push하는 것이 일반적이다.

실제 로컬 저장소(Working Directory)에서도 main branch 하나 밖에 없는 것을 확인할 수 있다.
jinwoo@jinwoo-System-Product-Name:~/test$ git log --all
commit ee596f8a0516c33b270cdc47d97de74f8a40da4b (HEAD -> main, origin/main, origin/HEAD)
Author: Jinwoo_Jung <123054285+Jinwoo-Jung01@users.noreply.github.com>
Date: Fri Dec 19 10:47:41 2025 +0900
Initial commit
dev branch 추가: 1. Compare & pull request
git switch 명령어를 통해 dev branch를 생성 해 주자
jinwoo@jinwoo-System-Product-Name:~/test$ git switch -c dev
새로 만든 'dev' 브랜치로 전환합니다
jinwoo@jinwoo-System-Product-Name:~/test$ git log --all
commit ee596f8a0516c33b270cdc47d97de74f8a40da4b (HEAD -> dev, origin/main, origin/HEAD, main)
Author: Jinwoo_Jung <123054285+Jinwoo-Jung01@users.noreply.github.com>
Date: Fri Dec 19 10:47:41 2025 +0900
Initial commit
해당 명령어를 통해 현재 HEAD가 dev를 가르키고 있음을 확인할 수 있다.
개발을 한다고 가정했을 때, 아무 python 파일을 만들고 push를 해 보자. 현재 test1.py, test2.py 2개의 파일이 새롭게 추가되었지만, 그 중 일부 파일만 push 하고 싶으면 git add <파일명> 명령어로 처리할 수 있다.
jinwoo@jinwoo-System-Product-Name:~/test$ git status
현재 브랜치 dev
추적하지 않는 파일:
(커밋할 사항에 포함하려면 "git add <파일>..."을 사용하십시오)
test1.py
test2.py
커밋할 사항을 추가하지 않았지만 추적하지 않는 파일이 있습니다 (추적하려면 "git
add"를 사용하십시오)
jinwoo@jinwoo-System-Product-Name:~/test$ git add test1.py
jinwoo@jinwoo-System-Product-Name:~/test$ git commit -m "test1"
[dev c855d31] test1
1 file changed, 1 insertion(+)
create mode 100644 test1.py
처음 push 하는 거라 upstream을 지정해 준 상태에서 push 하면 dev branch에 "test1"이라는 이름으로 push 된 것을 확인할 수 있다.
jinwoo@jinwoo-System-Product-Name:~/test$ git push --set-upstream origin dev
오브젝트 나열하는 중: 4, 완료.
오브젝트 개수 세는 중: 100% (4/4), 완료.
Delta compression using up to 16 threads
오브젝트 압축하는 중: 100% (2/2), 완료.
오브젝트 쓰는 중: 100% (3/3), 277 바이트 | 277.00 KiB/s, 완료.
Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
remote:
remote: Create a pull request for 'dev' on GitHub by visiting:
remote: https://github.com/Jinwoo-Jung01/test/pull/new/dev
remote:
To https://github.com/Jinwoo-Jung01/test.git
* [new branch] dev -> dev
'dev' 브랜치가 리모트의 'dev' 브랜치를 ('origin'에서) 따라가도록 설정되었습니다.
jinwoo@jinwoo-System-Product-Name:~/test$ git log --all
commit c855d31e5acd863bedee5ccb06fed1a29cac6e78 (HEAD -> dev, origin/dev)
Author: Jinwoo <wjdwlsdn8520@gmail.com>
Date: Fri Dec 19 11:11:22 2025 +0900
test1
commit ee596f8a0516c33b270cdc47d97de74f8a40da4b (origin/main, origin/HEAD, main)
Author: Jinwoo_Jung <123054285+Jinwoo-Jung01@users.noreply.github.com>
Date: Fri Dec 19 10:47:41 2025 +0900
Initial commit
그렇다면 main branch에는? 원격 저장소에는 바로 반영이 될까?
dev branch가 생성되어 test1.py가 올라간 것을 확인할 수 있지만, main branch에는 아직 아무것도 없다. 이는 dev branch에서 push했기 때문에 main에는 반영이 안되었기 때문이다. 따라서 보이는 것 처럼 Compare & pull request 과정을 거쳐야 한다.


이 과정에서는 다른 User가 dev에서 개발한 변경 사항을 확인할 수 있고, Create pull request를 통해 main branch로 합치는 것을 요청할 수 있다.

아래와 같이 요청되는 것을 확인하면 main branch에서도 정상적으로 반영됨을 확인할 수 있다.


dev branch 추가: 2. git checkout
두번째 방법은 로컬 저장소에서 git 명령어로 처리하는 방법이다.
다음과 같이 test2.py, test3.py를 포함하는 "test2, 3"을 dev branch에서 push 했다고 가정하자.
jinwoo@jinwoo-System-Product-Name:~/test$ git log --all
commit ea2a02571204abc2f0b5f23599261395e8f3652a (HEAD -> dev, origin/dev)
Author: Jinwoo <wjdwlsdn8520@gmail.com>
Date: Fri Dec 19 11:23:48 2025 +0900
test2, 3
commit 585d53a334b8c29ba1c56b3cb4f2392fce1b14cd (origin/main, origin/HEAD)
Merge: ee596f8 c855d31
Author: Jinwoo_Jung <123054285+Jinwoo-Jung01@users.noreply.github.com>
Date: Fri Dec 19 11:18:39 2025 +0900
Merge pull request #1 from Jinwoo-Jung01/dev
test1
우리는 Configure & pull request 과정에서 main branch를 원격 저장소에서 직접 병합했었다. 따라서 로컬 저장소에서의 main 해당 commit을 가르키고 있지 않다.
jinwoo@jinwoo-System-Product-Name:~/test$ git switch main
'main' 브랜치로 전환합니다
브랜치가 'origin/main'보다 2개 커밋 뒤에 있고, 앞으로 돌릴 수 있습니다.
(로컬 브랜치를 업데이트하려면 "git pull"을 사용하십시오)
jinwoo@jinwoo-System-Product-Name:~/test$ git log --all
commit ea2a02571204abc2f0b5f23599261395e8f3652a (origin/dev, dev)
Author: Jinwoo <wjdwlsdn8520@gmail.com>
Date: Fri Dec 19 11:23:48 2025 +0900
test2, 3
commit 585d53a334b8c29ba1c56b3cb4f2392fce1b14cd (origin/main, origin/HEAD)
Merge: ee596f8 c855d31
Author: Jinwoo_Jung <123054285+Jinwoo-Jung01@users.noreply.github.com>
Date: Fri Dec 19 11:18:39 2025 +0900
Merge pull request #1 from Jinwoo-Jung01/dev
test1
commit c855d31e5acd863bedee5ccb06fed1a29cac6e78
Author: Jinwoo <wjdwlsdn8520@gmail.com>
Date: Fri Dec 19 11:11:22 2025 +0900
test1
commit ee596f8a0516c33b270cdc47d97de74f8a40da4b (HEAD -> main)
Author: Jinwoo_Jung <123054285+Jinwoo-Jung01@users.noreply.github.com>
Date: Fri Dec 19 10:47:41 2025 +0900
Initial commit
jinwoo@jinwoo-System-Product-Name:~/test$
이때, git pull 명령어를 통해 main branch의 최신 commit으로 바꿔줄 수 있다.
하지만, 여기서 문제는 로컬 저장소도 main branch의 최신 commit을 가르키기 때문에 test1.py 밖에 없는 것을 확인할 수 있다.
jinwoo@jinwoo-System-Product-Name:~/test$ git log --all
commit ea2a02571204abc2f0b5f23599261395e8f3652a (origin/dev, dev)
Author: Jinwoo <wjdwlsdn8520@gmail.com>
Date: Fri Dec 19 11:23:48 2025 +0900
test2, 3
commit 585d53a334b8c29ba1c56b3cb4f2392fce1b14cd (HEAD -> main, origin/main, origin/HEAD)
Merge: ee596f8 c855d31
Author: Jinwoo_Jung <123054285+Jinwoo-Jung01@users.noreply.github.com>
Date: Fri Dec 19 11:18:39 2025 +0900
Merge pull request #1 from Jinwoo-Jung01/dev
test1
commit c855d31e5acd863bedee5ccb06fed1a29cac6e78
Author: Jinwoo <wjdwlsdn8520@gmail.com>
Date: Fri Dec 19 11:11:22 2025 +0900
test1
commit ee596f8a0516c33b270cdc47d97de74f8a40da4b
Author: Jinwoo_Jung <123054285+Jinwoo-Jung01@users.noreply.github.com>
Date: Fri Dec 19 10:47:41 2025 +0900
Initial commit
jinwoo@jinwoo-System-Product-Name:~/test$ ls
README.md test1.py
하지만, 우리는 이미 dev branch에서 push 한 상태이기에 dev branch로 전환하면 정상적으로 존재하니 걱정하지 않아도 된다.
jinwoo@jinwoo-System-Product-Name:~/test$ git checkout dev
'dev' 브랜치로 전환합니다
브랜치가 'origin/dev'에 맞게 업데이트된 상태입니다.
jinwoo@jinwoo-System-Product-Name:~/test$ git log --all
commit ea2a02571204abc2f0b5f23599261395e8f3652a (HEAD -> dev, origin/dev)
Author: Jinwoo <wjdwlsdn8520@gmail.com>
Date: Fri Dec 19 11:23:48 2025 +0900
test2, 3
commit 585d53a334b8c29ba1c56b3cb4f2392fce1b14cd (origin/main, origin/HEAD, main)
Merge: ee596f8 c855d31
Author: Jinwoo_Jung <123054285+Jinwoo-Jung01@users.noreply.github.com>
Date: Fri Dec 19 11:18:39 2025 +0900
Merge pull request #1 from Jinwoo-Jung01/dev
test1
commit c855d31e5acd863bedee5ccb06fed1a29cac6e78
Author: Jinwoo <wjdwlsdn8520@gmail.com>
Date: Fri Dec 19 11:11:22 2025 +0900
test1
commit ee596f8a0516c33b270cdc47d97de74f8a40da4b
Author: Jinwoo_Jung <123054285+Jinwoo-Jung01@users.noreply.github.com>
Date: Fri Dec 19 10:47:41 2025 +0900
Initial commit
jinwoo@jinwoo-System-Product-Name:~/test$ ls
README.md test1.py test2.py test3.py
다시 main branch로 돌아와서 병합 해 보자. git checkout [가져올 브랜치명] -- [파일 경로] 명령어로 특정 파일을 가져와 main branch에 업데이트 할 수 있다.
jinwoo@jinwoo-System-Product-Name:~/test$ git checkout main
'main' 브랜치로 전환합니다
브랜치가 'origin/main'에 맞게 업데이트된 상태입니다.
jinwoo@jinwoo-System-Product-Name:~/test$ git checkout dev -- test2.py
jinwoo@jinwoo-System-Product-Name:~/test$ git status
현재 브랜치 main
브랜치가 'origin/main'에 맞게 업데이트된 상태입니다.
커밋할 변경 사항:
(스테이지에서 제외하려면 "git restore --staged <file>..."을 사용하시오)
새 파일: test2.py
jinwoo@jinwoo-System-Product-Name:~/test$ git add test2.py
jinwoo@jinwoo-System-Product-Name:~/test$ git commit -m "main branch update test2.py"
[main 07d628a] main branch update test2.py
1 file changed, 1 insertion(+)
create mode 100644 test2.py
jinwoo@jinwoo-System-Product-Name:~/test$ git push
오브젝트 나열하는 중: 4, 완료.
오브젝트 개수 세는 중: 100% (4/4), 완료.
Delta compression using up to 16 threads
오브젝트 압축하는 중: 100% (2/2), 완료.
오브젝트 쓰는 중: 100% (3/3), 318 바이트 | 318.00 KiB/s, 완료.
Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
To https://github.com/Jinwoo-Jung01/test.git
585d53a..07d628a main -> main
jinwoo@jinwoo-System-Product-Name:~/test$ git log --all
commit 07d628ad9071e1663d3944ac1a37714d42fe8d9e (HEAD -> main, origin/main, origin/HEAD)
Author: Jinwoo <wjdwlsdn8520@gmail.com>
Date: Fri Dec 19 11:31:59 2025 +0900
main branch update test2.py

'Git' 카테고리의 다른 글
| [GIT] Github에 올라간 파일 삭제 (0) | 2025.12.19 |
|---|---|
| [GIT] Git/GitHub (1) | 2025.04.11 |
