본문 바로가기
Git 공부

Git Branch 명령어

by daisy0461 2024. 4. 25.

git branch

git branch 명령어는 현재 존재하는 Branch 목록을 보여주는 역할을 한다.

현재 master branch만 있는 것을 확인할 수 있다.

 

git branch <branch-name>

새로운 branch를 생성하는 명령어이다.

branch-name에 들어가는 이름은 공백을 포함하면 안된다. 해당 브랜치를 잘 나타내야한다.

단지 새로운 branch를 만들 뿐 해당 branch로 이동하진 않는다.

위 명령어로 oldies라는 branch를 만든 후 branch 목록을 보니 생성된 것을 확인할 수 있다.

git log로 log를 출력하니 HEAD -> master가 나와서 아직 이동은 하지 않았음도 알 수 있다.

 

git switch <branch-name>

위 명령어는 branch 이동을 위한 명령어이다. branch-name을 가진 branch로 이동한다.

switch를 실행 후 HEAD -> olies로 바뀐것을 확인 가능하고

MINGW62 ~/branchingTest옆에도 oldies로 바뀐것을 확인 가능하다.

아직까지 새로운 commit을 수행하지 않았기에 같은 commit을 가르키고 있다.

새로운 commit을 실행하니 해당 commit에 대해선 HEAD -> oldies로 나오는 것을 볼 수 있다.

그리고 log 아래에 master branch는 뒤에 있는 것을 확인할 수 있다. master는 여전히 해당 commit을 참조하고 있다. 

여기서 git switch master로 하면 oldies에서 변경한 사항은 적용되지 않은 것을 확인 가능하다.

따로따로 활동이 가능하단 것을 다시 한번 Test 가능하다.

그리고 master로 옮긴 후 log를 보면 

oldies에서 commit했던 "Add bigbang song"은 보이지 않는 것을 확인할 수 있다.

 

그럼 더 Test해보자

다시 oldies로 간 다음 oldies에서 branch를 하나 더 만들고 commit하고 다시 oldies로 가서 commit하고 이후에 더 만든 branch로 가면 어떤 결과가 있을까?

새 blackpink라는 branck에서 작업한 것이다.

여기서 다시 oldies로 가면

blackpink는 사라진 것을 확인할 수 있다.

그럼 여기서 txt를 변경하고 commit 후 blackpink로 가보자

다시 blackpink로 왔을 때 빅뱅 노래 2개가 없다.

결국 여기서 알 수 있는 건 이전 branch(oldies)에서 commit을 해도

이후 파생된 branch(blackpink)는 영향을 안받는 다는 것을 확인 가능하다.

서로 독립적이라는 것을 다시 한번 확인이 가능하다.

 

그럼 작업을 하고 commit을 안한 상태에서 branch를 옮기는건 어떻게 될까?

git status로 확인했을 때 playlist가 변경된것을 확인할 수 있고 commit하지 않은 상태에서 switch하면 에러가 발생한다.

간단하게 에러의 내용은 다른 branch로 이동하려고 하면 commit하지 않은 변동사항이 사라질 것이라는 것이다.

그렇기에 변동사항이 생기면 branch를 이동하기 전에 항상 add 후 commit하는 것이 권장된다.

 

 

git switch -c <branch-name>

위 명령어는 branch-name이란 branch를 생성하고 이동하는 작업을 한번에 한다.

git switch에서 존재하지 않는 branch-name을 입력하면 없는 것이라고 나타난다.

 

git branch -d <branch-name>

branch-name에 해당하는 branch를 삭제하는 명령어이다.

만약 branch-name에 해당하는 branch에 현재 있을 경우 삭제가 불가능하다. branch를 옮긴 후에 가능하다.

그리고 완전히 병합되지 않은 경우에 에러 메세지를 띄우며 불가능하다고 나온다.

이 경우에 강제로 삭제하고 싶은 경우 -d를 -D로 바꾸면 강제로 삭제가 가능하다.

 

git branch -m <branch-name>

branch 이름을 변경할 때 사용한다.

해당 명령어를 사용하면 현재 있는 branch의 이름이 변경된다.

 

 

 

git checkout <branch-name>

위의 git switch <branch-name>과 동일한 작업할 수 있다. 하지만 branch를 이동하는 것보다 더 많은 작업을 수행한다.

git checkout은 git switch의 구형 버전이라고 생각하면 된다. git checkout이 이동을 하는 것뿐만 아니라 다른 여러 작업을 수행해서 복잡하다고 사람들이 느껴서 git switch가 나오게 되었다.

 

혹시 다른 블로그나 다른 팀원이 사용할 수 있기에 간단하게 위처럼 소개만 한다.

 

 

 

 

'Git 공부' 카테고리의 다른 글

Git Branch란?  (0) 2024.04.24
Commit 수정하기  (0) 2024.04.24
Git Atomic Commit  (0) 2024.04.24
Git Log  (0) 2024.04.22
Git Add & Commit  (0) 2024.04.19