뚝딱햄 탈출기

[Git] 로컬 저장소에 원격 브랜치 가져오기, 브랜치 전환/생성/삭제/조회 본문

git & github

[Git] 로컬 저장소에 원격 브랜치 가져오기, 브랜치 전환/생성/삭제/조회

hyrmzz1 2024. 8. 10. 20:04
📌 vs code에서 브랜치를 생성 / 삭제 / 전환 / 조회하는 방법은?

 

vs code에서 github repository를 git clone한 후 local repository에서 작업하며 사용한 명령어들을 정리해보았다.

브랜치 목록 보기

원격 브랜치와 로컬 브랜치는 별개의 브랜치이기 때문에, 목록을 확인하기 위한 명령어가 다르다.

git branch	# 로컬 브랜치 확인

git remote update	# 원격 브랜치 정보 업데이트
git branch -r	# 원격 브랜치 확인
git branch -a	# 전체 브랜치 확인 (로컬, 원격)

remote branch != local branch 임을 알 수 있다.

github에서 삭제한 브랜치가 조회된다면?

간혹 원격 브랜치를 삭제했을 때, 로컬에서 여전히 조회될 때가 있다.

나의 경우에는, github에서 이미 삭제한 브랜치가 git branch -a 명령어를 입력했을 때 조회되었다.

 

이는 로컬 Git 저장소에 캐시된 원격 브랜치 정보가 최신 상태로 동기화되지 않았기 때문이다.

아래 명령어를 통해 원격 브랜치 목록을 최신 상태로 업데이트하면 문제가 해결된다!

git fetch -p
git fetch --prune

브랜치 전환

나는 이제 FE_feature_hyerim 브랜치에서의 작업을 마치고 타 브랜치에서 작업을 하려 한다.

 

원격 브랜치인 origin/BE_feature 에서 작업하려면?

내 로컬에 없는 원격 저장소의 브랜치에서 작업하려면 아래의 과정을 통해 원격 브랜치를 가져와야 한다.

# 아래 명령어를 통해 로컬에 있는 브랜치로 전환할 수 있다.
git checkout <브랜치명>
git switch <브랜치명>

# 로컬에 없는 원격 브랜치로 전환하려면 아래 명령어를 사용한다.
git checkout -t <원격 브랜치명>
git checkout -b <생성할 브랜치명> <원격 브랜치명>	# 로컬 브랜치명을 원격 브랜치명과 다르게 설정할 수 있다.
git checkout -b BE_feature origin/BE_feature	# 이런 식으로 받아오면 된다.

-t 플래그와 -b 플래그를 사용한 두 방식의 차이점은 무엇일까?

  • -t 플래그를 사용한 경우, 자동으로 원격 브랜치를 추적하게 설정된다. 따라서 git pull과 같은 명령어를 사용할 때 원격 브랜치와 로컬 브랜치가 자동으로 연결된다.
  • -b 플래그는 원격 브랜치로부터 새로운 로컬 브랜치를 생성하지만, 원격 브랜치 추적 설정을 명시적으로 하지 않으면 수동으로 설정해야 할 수 있다.

따라서 원격 브랜치를 추적하고 싶다면 -t 방식이 더 적합하다.

원격 브랜치를 추적하면 뭐가 다른데?

  1. 자동 pull/push
    • git pull이나 git push 명령어를 사용할 때 원격 브랜치를 따로 명시하지 않아도 된다.
  2. 상태 확인
    • git status에서 로컬 브랜치와 원격 브랜치 간의 차이를 자동으로 확인할 수 있다.

 

-b 플래그를 사용해 로컬 브랜치를 생성하면 원격 브랜치를 자동으로 추적하지 않으므로
git pull 또는 git push 명령어를 사용할 때 원격 브랜치의 이름을 매번 명시적으로 작성해야 한다.

git push origin BE_feature

 

그러나 -t 플래그를 사용해 로컬 브랜치를 생성하면 원격 브랜치를 자동으로 추적하므로
git pull 또는 git push 명령어를 사용할 때 원격 브랜치 이름을 명시적으로 적지 않아도 된다.

git pull   # 원격 브랜치에서 자동으로 pull
git push   # 원격 브랜치로 자동으로 push

브랜치 생성

# 방식 1
git checkout -b <브랜치명>	# 로컬 브랜치 생성 및 체크아웃
git push -u origin <브랜치명>	# 원격 리포지토리에 해당 브랜치 반영

# 방식 2
git branch <브랜치명>	# 로컬 브랜치 생성
git checkout <브랜치명>	# 해당 브랜치로 체크아웃
git push -u origin <브랜치명>	# 원격 리포지토리에 해당 브랜치 반영

브랜치 삭제

# 로컬 브랜치 삭제
# 로컬 브랜치를 삭제하기 전에 git checkout 명령어를 사용해 삭제 대상이 아닌 다른 브랜치로 전환해야 한다.
git branch -d <로컬 브랜치명>

# 원격 브랜치 삭제
git push <원격 저장소명> -d <원격 브랜치명>

 

'git & github' 카테고리의 다른 글

[Git][Linux] 리눅스 기본 명령어  (0) 2023.05.09
[Git][Linux] 문서 편집기 vi, vim 명령어  (0) 2023.05.03
[Git]깃 설치 후 환경 설정  (0) 2023.04.03
[생활코딩][GITn]GIT1  (0) 2023.03.30
Comments