PC 2대로 Git 리모트 브랜치 업데이트 및 삭제방법

주로 사용하는 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
git 

더 보면 좋을 글들