Dev/[Git] Basic

[Git] 브랜치 (Branch)

호락호락한순무 2023. 6. 20. 23:15
반응형

협업을 위해 Git을 사용하는 경우, 다수의 사람들이 동시에 소스코드를 작성하고, 변경하는 경우가 많다.

 

이러한 상황에서 Git에서는 브랜치를 사용하여 여러 사람이 동시에 작업할 수 있도록 한다.

 

이번 글에서는 Git 브랜치의 개념과, 여러명이 협업하기 위해 브랜치를 사용하는 이유 등에 대해 상세히 설명하겠다.

1. Git 브랜치란?

Git 브랜치란, Git에서 소스코드를 분리하여 관리하는 개념이다.

 

브랜치를 사용하면 하나의 저장소에서 다양한 소스코드의 버전을 유지하고, 관리할 수 있다.

 

각각의 브랜치는 독립적으로 작업할 수 있으며, 다른 브랜치와 병합할 수 있다.

 

이를 통해 여러명이 동시에 작업하고, 변경사항을 통합할 수 있다.

 

2. Git 브랜치 사용 이유

Git에서 브랜치를 사용하는 이유는 크게 두 가지입니다.

 

1) 다수의 개발자들이 동시에 작업할 경우

여러명의 개발자들이 동시에 작업할 경우, 각각의 개발자들이 독립적으로 브랜치를 생성하여 작업할 수 있다.

이를 통해 각각의 개발자들은 서로의 작업에 영향을 받지 않고, 독립적으로 작업할 수 있다.

2) 소스코드의 안정성 유지를 위해

Git에서는 브랜치를 사용하여 소스코드의 안정성을 유지할 수 있다.

예를 들어, 메인 브랜치에서는 안정적인 코드만을 관리하고, 개발용 브랜치에서는 실험적인 코드를 관리할 수 있다.

이를 통해 안정적인 코드와 실험적인 코드를 분리하여 관리할 수 있으며, 소스코드의 안정성을 유지할 수 있다.

3. Git 브랜치 사용 방법

Git에서 브랜치를 사용하는 방법은 다음과 같습니다.

1) 브랜치 생성하기

$ git branch <branch-name>

위 명령어를 사용하여 새로운 브랜치를 생성할 수 있습니다.

2) 브랜치 전환하기

$ git checkout <branch-name>

위 명령어를 사용하여 브랜치를 전환할 수 있습니다.

3) 브랜치 병합하기

$ git merge <branch-name>

위 명령어를 사용하여 브랜치를 병합할 수 있습니다.

4) 브랜치 삭제하기

$ git branch -d <branch-name>

위 명령어를 사용하여 브랜치를 삭제할 수 있습니다.

 

이처럼 Git에서는 브랜치를 사용하여 협업을 위한 소스코드 관리를 용이하게 할 수 있습니다.

1. Git 브랜치와 포인터

Git에서 브랜치는 각각의 커밋을 가리키는 포인터이다.

 

브랜치를 생성하면, Git은 브랜치명을 가진 새로운 포인터를 생성하고, 현재 브랜치가 가리키는 커밋을 이 포인터에 저장한다.

 

이렇게 생성된 포인터는 새로운 커밋이 추가될 때마다, 해당 커밋을 가리키도록 업데이트된다.

 

Git에서는 브랜치를 생성하면, 마치 포인터를 생성하는 것과 비슷하다고 볼 수 있다.

 

새로운 브랜치를 생성하면, Git은 해당 브랜치명을 가진 포인터를 생성하고, 현재 브랜치가 가리키는 커밋을 이 포인터에 저장한다.

 

이후 새로운 커밋이 추가될 때마다, 해당 브랜치 포인터를 업데이트하여 가장 최신의 커밋을 가리키도록 한다.

2. Git 브랜치의 작동 방식

Git에서 브랜치는 위에서 설명한 것과 같이 포인터로 동작한다.

 

즉, 브랜치를 생성하면, 새로운 포인터가 생성되고, 해당 포인터는 현재 브랜치가 가리키는 커밋을 가리키게 된다.

 

이후 새로운 커밋이 추가될 때마다, 해당 브랜치 포인터를 업데이트하여 가장 최신의 커밋을 가리키도록 한다.

 

이렇게 Git에서 브랜치가 포인터로 동작하므로, 여러 브랜치를 생성하여 각각 독립적으로 작업할 수 있다.

 

각각의 브랜치는 서로 다른 포인터를 가지고 있으며, 각각의 브랜치에서 추가된 커밋은 해당 브랜치의 포인터에 저장된다.

 

 

따라서, Git에서 브랜치를 사용하면, 여러명이 동시에 작업하고, 변경사항을 통합할 수 있으며, 소스코드의 안정성을 유지할 수 있다.

반응형

'Dev > [Git] Basic' 카테고리의 다른 글

[Git] Pull request  (0) 2023.06.20
[Git] 브랜치 충돌 상태  (0) 2023.06.20
[Git] 파일의 상태  (0) 2023.06.20
[Git] Github에 commit 올리기 (원격저장소 만들기)  (0) 2023.06.20
[Git] Git authentication 에러  (0) 2023.06.20
//