주로 사용하는 pc말고, 별도 노트북이 하나 더 생겼다. git
을 한 PC에서만 사용해보다가, 2대를 가지고 브랜치 생성하고 소스를 병합하는 과정을 처리해보기로 했다. 주로 master
를 관리하는 PC1, 브랜치만 생성해서 원격저장소에 push 만 하는 PC2 를 가정하고 진행했다.
PC2 브랜치 생성
PC2 에서 브랜치를 만들기전에 git pull
를 해서, master 부터 원격저장소와 동기화를 해야한다.
# master
$ git pull
브랜치를 하나 생성한다.
# master
$ git checkout -b laptop
PC2 에서 브랜치가 만들어지면, 파일을 수정/생성하고 나서 add, commit하고, 원격저장소로 push 까지한다.
# laptop
git add .
git commit -m .
git push
PC1 병합처리
PC1 으로 돌아와서, 원격저장소 정보를 update 한다. origin/laptop
리모트 브랜치 정보가 생겼다.
# master
$ git remote update
# master
$ git branch -a | cat
master
remotes/origin/HEAD -> origin/master
remotes/origin/laptop
remotes/origin/master
리모트 브랜치 origin/laptop
를 로컬로 받아서 merge 한다. 그런데 이경우 브랜치 이동이 많고, 브랜치가 필요없어지면 삭제도 실행해야 한다.
# master
$ git checkout -t origin/laptop
Branch 'laptop' set up to track remote branch 'laptop' from 'origin'.
Switched to a new branch 'laptop'
# laptop
$ git branch -a | cat
* laptop
master
remotes/origin/HEAD -> origin/master
remotes/origin/laptop
remotes/origin/master
# laptop
$ git checkout master
# master
$ git merge laptop
그래서 한번에 그냥 리모트 브랜치를 바로 merge 해도 된다. 소스가 합쳐지면 add/commit/push 를 처리한다.
# master
$ git merge origin/laptop
Updating 6a3b819..7c2be60
Fast-forward
app/content/post/2024/20240105/images/2024-01-08 23-35-13.png | Bin 0 -> 26271 bytes
app/content/post/2024/20240105/index.md | 6 +++-
.....
3 files changed, 103 insertions(+), 1 deletion(-)
PC2 브랜치 삭제
병합을 다 했으니 PC2 로 이동해서, 사용했던 laptop
브랜치를 삭제한다. 이 삭제는 로컬에서만 삭제된거고, 원격저장소에 있는 리모트 브랜치는 삭제되지 않는다.
# master
$ git branch -d laptop
브랜치 정보를 확인하고 싶으면 아래 명령어들을 이용하면 된다.
# master
$ git branch -a
* master
remotes/origin/HEAD -> origin/master
remotes/origin/laptop
remotes/origin/master
(END)
# master
$ git branch -r
origin/HEAD -> origin/master
origin/laptop
origin/master
(END)
원격저장소의 브랜치를 삭제하는 명령어는 아래와 같다.
# master
$ git push origin -d laptop
PC1 브랜치 정보 업데이트
PC1 으로 돌아가면, 리모트 브랜치인 origin/laptop
이 그대로 있다.
# master
$ git branch -a | cat
* master
remotes/origin/HEAD -> origin/master
remotes/origin/laptop
remotes/origin/master
이건 로컬에 있는 리모트 정보가 정리되지 않아서 그런거라, git remote prune
을 실행하면 원격저장소에 삭제된 브랜치정보가 로컬에도 반영된다.
# master
$ git remote prune origin
Pruning origin
URL: https://github.com/****/****.git
* [pruned] origin/laptop
$ git branch -a | cat
* master
remotes/origin/HEAD -> origin/master
remotes/origin/master