본문 바로가기
Git&GitHub

[GIT 08] 브랜치(Branch) 생성

by 어쩌다개발 2023. 1. 19.
반응형

참고: Do It! 깃&깃허브 입문

1) manual 이라는 새 디렉터리를 만들고 해당 디렉터리로 이동한다.

mkdir manual
cd manual

2) manual 디렉터리를 저장소로 만들고, .git 디렉터리가 생성됐는지 확인한다.

git init
ls -al

3) manual 디렉터리 안에 work.txt 파일을 만든 후, 'content 1' 이라는 내용을 입력한 뒤 저장한다.

vim work.txt

4) work.txt 파일을 스테이지에 올리고 커밋한다. 커밋 메세지는 'work 1'로 해준다.

git add work.txt
git commit -m "work 1"

5) git log로 커밋 내역을 확인한다.

git log

6) work.txt 파일에 'content 2'를 추가 입력 후 'work 2' 라는 메세지와 함께 커밋한다.

vim work.txt
git commit -am "work 2"


7) work.txt 파일에 'content 3'을 추가 입력 후 'work 3'라는 메세지와 함께 커밋한다.

vim work.txt
git commit -am "work 3"

8) git log 로 커밋 내역을 확인한다. 커밋 메세지가 'work 1', 'work 2', 'work 3' 인 커밋들이 보인다. master 브랜치가 가장 커밋인 'work 3' 를 가리키고 있고, HEAD가 master 브랜치를 가리키고 있다. 
* HEAD는 여러 브랜치 중에서 현재 작업 중인 브랜치를 가르킨다.

새 브랜치 생성

1) 깃에서 브랜치를 만들거나 확인하는 명령은 git branch 이다. git branch를 입력하면 * master 라고 나오는데 우리가 작업하고 있는 브랜치가 master 라는 의미이며, 저장소를 만들 때 기본적으로 master 브랜치가 만들어진다.

git branch

2) 새로운 브랜치를 만드려면 git branch [만들 브랜치명] 을 입력한다.

git branch apple

3) 현재 브랜치를 확인하기 위해 git branch 를 입력한다. 해당 명령어는 브랜치를 만들거나 확인 할 때 사용된다.

git branch

4) 브랜치가 추가된 후에는 커밋 로그 화면도 다르게 나타난다. git log  명령어를 입력해서 로그를 확인해보면 그 동안은 'HAED -> master' 라고 표시되던 곳에 apple 브랜치가 추가되면서 'HEAD -> master, apple' 로 변경됐다. 이 표시는 저장소에 master, apple 2개의 브랜치가 있고, HEAD -> master 이므로 현재 작업 중인 브랜치는 master 브랜치라는 의미이다.

git log

5) 추가로 google, ms 브랜치를 생성한 후, 생성된 branch를 확인한다.

git branch google
git branch ms
git branch

 

브랜치 사이 이동 - git checkout

1) git log 명령어로 log를 확인해보면 master 브랜치를 비롯해 ms, google, apple 브랜치가 'work3' 커밋 상태에서 만들어진 것을 확인할 수 있다. 즉, master 브랜치 뿐만 아니라 ms, google, apple 브랜치에도 최신 커밋이 'work3'이라는 뜻이다.

git log

2) work.txt에 'master content 4'를 추가한 뒤 'master content 4' 라는 메세지와 함께 커밋한다.

vim work.txt
git commit -am "master content 4"

3) git log 명령어에 --oneline 옵션을 추가해서 확인해본다. --oneline 옵션은 한 줄에 한 커밋씩 나타내 주기 때문에 커밋을 간략히 확인할 때 편리하다.

git log --oneline

4) HEAD가 master를 가르키고 있으므로, 현재 브랜치는 master 이고 master의 최신 커밋은 "master content 4" 시점이다. 또한 ms, google, apple은 아직 "work 3" 커밋 시점인걸 알 수 있다.

5) 현재 master 브랜치에서 다른 브랜치로 이동해서 어떻게 변하는지 확인하려면 git checkout 명령어를 이용해 브랜치를 이동할 수 있다. 그리고 log를 확인해보면 HEAD 가 apple을 가르키고 있는 것을 확인할 수 있다. 즉 master 브랜치에 있던 커밋들은 apple 브랜치를 분기하기 전까지 그대로 apple 브랜치에 복사된 것을 알 수 있다.

git checkout apple
git log --oneline

6) cat work.txt 로 내용을 확인해보면 work3 시점인 content3 까지만 있는 걸 확인할 수 있다. apple 브랜치가 master 브랜치에서 분기된 이후에 master 브랜치에 추가된 커밋은 apple 브랜치에 영향을 미치지 않는다는걸 알 수 있다.

반응형

댓글