[Git] 원격 브랜치명으로 새로운 브랜치 생성하기

주로 PHPStorm 같은 IDE 나 VSCode 같은 Extension이 잘 되어 있는 에디터를 사용하고,

그 이전에는 Source Tree / Git Kraken / Fork 등 Git Client 를 사용하여 Git을 사용하기 때문에,

아직 CLI로 Git을 유연하게 다루지 못해 git-scm 문서의 내용을 정리 합니다.

명령어 정리

원격 브랜치명과 같은 이름으로 생성할 때

1
$ git checkout --track origin/master

해당 브랜치명이 리모트에만 있고, 로컬에는 없을 때 이를 축약하여 아래와 같이 실행할 수 있다.

1
$ git checkout master

원격 브랜치명과 다른 이름으로 생성할 때

가장 많이 쓰이는 경우인데, 원격 Git 서버의 master 브랜치를 기준으로 새로운 브랜치를 만들고, 체크아웃 할 때 사용합니다.

1
$ git checkout -b my-new-branch-name origin/master

위와 같이 실행하면 origin/master를 트래킹 하게 되는데,

다른 브랜치를 추적하기 위해 아래와 같이 실행할 수 있습니다.

1
$ git branch -u origin/feature-test

참고자료

Git 브랜치 - 리모트 브랜치

[Git] Git Merge 또는 Git checkout 오류 해결하기

문제 상황

git pull origin master 또는 git checkout master 와 같이 브랜치를 변경하거나, 원격저장소에서 pull을 받을때
아래와 같은 오류가 나온적 경험이 한번쯤은 있을것 입니다.


1
2
3
4
error: Your local changes to the following files would be overwritten by checkout:
themes/icarus/layout/widget/recent_posts.ejs
Please commit your changes or stash them before you switch branches.
Aborting

error: Your local changes to the following files would be overwritten by merge:

error: Your local changes to the following files would be overwritten by checkout:

위와 같은 오류와 함께 pull이나 checkout이 동작하지 않습니다.

처음 Git을 사용하였을때는 집과 회사를 오가면서 깃허브를 이용해서 push도 하고 pull도 하고 잘 사용하다가

이런 오류가 나오면 어떻게 해야할지 모르겠고, 커밋을 해야하는것 같은데

무의미한 커밋을 하고 싶지는 않아서 다른 폴더로 clone을 하고 다시 작업을 했었는데요.

해결 방법


에러 메세지를 자세히 보면 해결 방법이 나와있습니다.

Please commit your changes or stash them before you merge. 그리고

Please commit your changes or stash them before you switch branches. 라는 문구가 있습니다.

메세지 그대로 merge 또는 switch branch 이전에 변경사항을 commit 하거나 stash 하라고 합니다.

위에서도 말했지만 저는 쓸데 없는 커밋을 하고싶지 않아 방법을 모르고 새 프로젝트를 실행했지만

이때는 git stash 명령어를 사용하면 됩니다.

stash는 간단하게 버전관리 되는 대상들을 잠시동안 임시저장 해두는 방법이라고 말할 수 있습니다.

그래서 어떻게 하라는건가요?


위와 같은 상황에서는 아래와 같이 사용하면 됩니다.

1
2
3
4
5
6
# 현재 Staging 영역에 있는 파일의 변경사항을 스택에 넣어둡니다. 
$ git stash
# 아래 명령어와 같이 원격 저장소의 master에서 pull을 하거나, git checkout master와 같이 브랜치를 바꿀 수 있습니다.
$ git pull origin master
# stash 명령어로 스택에 넣어둔 변경 사항을 적용하고, 스택에서 제거하여줍니다.
$ git stash pop

간단하게 한줄로 표현하면 git stash && git pull origin master && git stash pop 와 같이 사용할 수 있습니다.

참고자료

git stash에 대한 자세한 사용법은 해당 링크에서 확인할 수 있습니다.