웹사이트 검색

Git 브랜치를 사용하는 방법


이 기사는 "Git 사용하기" 시리즈의 세 번째 기사입니다.

버전 제어 시스템의 세계에서 GIT는 틀림없이 유연성 측면에서 최고 중 하나입니다. 구문을 배우고 git이 작업 흐름과 환경에 가장 잘 맞는 방법을 파악하는 것은 매우 쉽습니다.

이 자습서에서는 두 개의 분기(마스터 및 개발)를 만드는 방법과 개발 단계에서 프로덕션으로 코드를 병합하는 방법을 알려줍니다.

본질적으로 분기는 고유한 이름을 가진 고유한 일련의 코드 변경입니다.

기본적으로 첫 번째 브랜치는 \마스터\입니다.

브랜치 보기

새 분기를 만들기 전에 존재하는 모든 분기를 확인하려고 합니다.

git branch -a

명령 끝에 "-a"를 추가하면 GIT에 우리가 가지고 있지 않은 브랜치를 포함하여 존재하는 모든 브랜치를 보고 싶다는 것을 알 수 있습니다.

출력은 다음과 유사하게 표시됩니다.

* master
  remotes/origin/master

출력의 첫 번째 줄에서 "마스터" 옆에 있는 별표는 현재 해당 분기에 있음을 나타냅니다.

가지를 보는 방법을 알았으니 이제 첫 번째 가지를 만들 차례입니다.

브랜치 만들기

이 문서의 시작 부분에서 언급했듯이 우리는 코딩 환경을 위한 개발 및 프로덕션 설정을 원합니다.

우리는 기본 "master" 브랜치를 프로덕션으로 취급할 것이므로 개발 또는 사전 프로덕션을 위한 단일 브랜치를 생성해야 합니다.

개발이라는 새 분기를 만들려면 다음을 입력합니다.

git checkout -b develop

"develop"라는 브랜치가 아직 없다고 가정하면 출력은 다음과 같습니다.

Switched to a new branch 'develop'

해당 이름의 분기가 이미 존재하는 경우 GIT는 다음과 같이 알려줍니다.

fatal: A branch named 'develop' already exists.

git checkout 명령을 사용하여 두 분기 사이를 전환할 수 있습니다.

git checkout master

또는

git checkout develop

전환하려는 분기가 있다고 가정하면 다음과 유사한 출력이 표시됩니다.

Switched to branch 'master'

다음과 같이 존재하지 않는 분기로 전환하려고 하면

git checkout nosuchbranch

힘내는 당신에게 말할 것입니다 :

error: pathspec 'nosuchbranch' did not match any file(s) known to git.

이제 여러 분기가 있으므로 이를 잘 활용해야 합니다.

이 프로세스를 설명하려면 개발 브랜치로 다시 전환해야 합니다.

git checkout develop

개발 브랜치 변경

이 분기에서 \develop\라는 이름의 새 빈 파일을 만들 것입니다.

touch develop 

이전 튜토리얼에서와 마찬가지로 git에게 이 새 파일을 추적하고 싶다고 알려야 합니다.

다음을 입력하여 "develop" 파일을 추가할 수 있습니다.

git add develop 

위의 명령 세트는 "develop"라는 이름의 빈 파일을 만들고 GIT에 추가합니다.

또한 이 파일을 커밋해야 합니다. 그러면 이 파일이 현재 있는 "develop" 브랜치에 첨부됩니다.

git commit -m "develop file" develop 

이 파일은 현재 개발 브랜치에 있습니다. 곧 알게 되겠지만 마스터 브랜치에는 존재하지 않습니다.

먼저 현재 개발 브랜치에 있는지 확인하겠습니다. 다음을 입력하여 이를 수행할 수 있습니다.

git branch 

출력은 다음과 유사하게 표시되어야 합니다.

* develop
  master

브랜치 이름 옆의 별표는 현재 해당 브랜치에 있음을 나타냅니다.

"ls" 명령을 실행하면 두 파일이 존재한다는 것을 알 수 있습니다:

ls

출력은 각각 \file\ 및 \develop\라는 이름의 두 파일이 모두 발견되었음을 보여줍니다.

develop file

분기 간 코드 병합

흥미로운 부분은 git checkout 명령으로 수행할 수 있는 마스터 브랜치로 다시 전환한 후에 나타납니다.

git checkout master

마스터 브랜치에 있는지 확인하기 위해 다음을 실행할 수 있습니다.

git branch 

출력은 별표로 표시된 우리가 하나인 분기를 알려줍니다.

  develop 
* master

"ls"를 다시 실행하면 새 파일이 없는 것 같습니다.

file

누락되지 않았습니다. 개발 브랜치에 있고 우리는 마스터 브랜치에 있습니다.

시나리오에서 이 파일은 개발 지점에서 모든 테스트를 통과하고 프로덕션에 들어갈 준비가 된 모든 파일(또는 완전히 새로운 파일)에 대한 모든 변경 사항을 나타냅니다.

병합할 때 병합하려는 지점에 있어야 함을 기억하는 것이 중요합니다.

이 경우 "develop" 파일이 있는 개발 브랜치에서 마스터 브랜치로 병합하려고 합니다.

우리가 이미 마스터 브랜치에 있다는 점을 고려하면 병합 명령을 실행하기만 하면 됩니다.

병합 명령에 전달할 수 있는 옵션 중 하나인 "--no-ff"는 git이 병합 전에 모든 커밋 메시지를 유지하기를 원함을 의미합니다. 이렇게 하면 향후 변경 사항을 더 쉽게 추적할 수 있습니다.

개발 브랜치에서 마스터 브랜치로 변경 사항을 병합하려면 다음을 입력하십시오.

git merge develop --no-ff

명령의 출력은 다음과 유사합니다.

Merge made by the 'recursive' strategy.
 0 files changed
 create mode 100644 develop

ls 명령을 다시 실행하면 "develop" 파일이 이제 마스터 브랜치에 있음을 확인할 수 있습니다.

develop file

원격 서버에서 이 변경 사항을 적용하기 위해 이제 마지막으로 해야 할 일은 변경 사항을 푸시하는 것입니다. 이 작업은 git push 명령의 도움으로 수행할 수 있습니다.

git push

원격 서버의 개발 브랜치에서 마스터 브랜치로 병합되었음을 확인하는 다음과 유사한 출력이 표시됩니다.

Counting objects: 4, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 332 bytes, done.
Total 3 (delta 1), reused 0 (delta 0)
To ssh://git@git.domain.tld/repository
   9af2dcb..53649cf  master -> master

결론

위의 자습서를 따르면 작동하는 이중 분기 워크플로 설정이 있어야 하며 어떻게 작동하는지 이해할 수 있기를 바랍니다.