Bitbucket Cloud로 브랜칭 알아보기
목표
이 자습서에서는 Git과 Bitbucket Cloud를 사용하여 브랜치를 만들고, 작업하고, 검토하고, 병합하는 기본 사항을 알려줍니다.
시간 | 대상 그룹 | 필수 조건 |
---|---|---|
35분 | 기본 Git 워크플로를 이미 이해하는 사용자 | Git이 설치되어 있습니다. |
Bitbucket 계정이 있습니다. |
이 자습서는 다음과 같은 방법을 포함하여 기본적인 Git 워크플로를 이미 이해하는 경우에 유용합니다.
- 복제: Bitbucket Cloud의 원격 리포지토리를 로컬 컴퓨터에 복사
- 추가 또는 스테이징: 변경 사항을 가져와 Git 기록에 추가할 준비
- 커밋: 리포지토리의 Git 기록에 새 파일 또는 변경된 파일 추가
- 풀: 다른 사용자가 리포지토리에 추가한 새로운 변경 사항을 로컬 리포지토리로 가져오기
- 푸시: 로컬 컴퓨터에서 원격 리포지토리로 변경 사항 가져오기
Git의 기본 사항을 모르더라도 걱정하지 마세요. Bitbucket Cloud로 Git에 대해 알아보기 자습서를 통해 금방 익힐 수 있습니다.
설치하기
우리는 사용자가 공통 Bitbucket 리포지토리에서 팀으로 작업하는 것처럼 느끼기를 원하기 때문에 제공한 공개 리포지토리에 포크하도록 할 것입니다.
- tutorials/tutorials.git.bitbucket.org로 이동합니다.
- 화면 왼쪽에 있는 +> 이 리포지토리 포크를 클릭합니다.
- 팀마다 고유하도록 이름을 수정한 다음 리포지토리 포크를 클릭합니다.
- 탐색하기 쉬운 리포지토리용 디렉터리를 만듭니다. 다음과 같이 선택할 수 있습니다.
$ mkdir test-repositories $ cd test-repositories/ $ test-repositories
- 포크한 리포지토리를 방금 만든 디렉터리에 복제합니다. 다음과 비슷하게 표시될 것입니다.
$ git clone https://dstevenstest@bitbucket.org/dstevenstest/mygittutorial.bitbucket.io.git Cloning into 'mygittutorial.bitbucket.io'... remote: Counting objects: 12392, done. remote: Compressing objects: 100% (12030/12030), done. remote: Total 12392 (delta 8044), reused 564 (delta 360) Receiving objects: 100% (12392/12392), 2.72 MiB | 701.00 KiB/s, done. Resolving deltas: 100% (8044/8044), done. $ cd mygittutorial.bitbucket.io/
브랜치를 만들고 브랜칭 워크플로를 사용하여 변경
이 브랜치에서는 웹사이트에 인용문을 추가할 것입니다.
- git branch 명령을 사용하여 브랜치를 만듭니다.
$ git branch test-1
- 방금 git checkout 명령을 사용하여 만든 브랜치를 체크아웃합니다.
$ git checkout test-1 Switched to branch 'test-1'
- git branch 명령을 사용하여 로컬에 있는 브랜치를 나열합니다.
$ git branch main * test-1
- 인용문을 추가하여 editme.html 파일에 업데이트합니다. 다음과 같은 인용문을 사용할 수 있습니다.
This is a quote, and I like it.
A quote: The Art of Quoting - 해당 변경 사항을 추가합니다.
git add editme.html
- 커밋 설명 메시지로 변경 사항을 커밋합니다.
git commit editme.html -m'added a new quote' [test-1 063b772] added a new quote 1 file changed, 3 insertions(+), 3 deletions(-)
- git push 명령을 사용하여 해당 변경 사항을 Bitbucket에 푸시합니다.
git push fatal: The current branch test-1 has no upstream branch. To push the current branch and set the remote as upstream, use git push --set-upstream origin test-1
- 브랜치를 푸시하고 git push branch 명령을 사용하여 변경합니다.
$ git push origin test-1 Counting objects: 3, done. Delta compression using up to 8 threads. Compressing objects: 100% (3/3), done. Writing objects: 100% (3/3), 363 bytes | 0 bytes/s, done. Total 3 (delta 2), reused 0 (delta 0) remote: remote: Create pull request for test-1: remote: https://bitbucket.org/dstevenstest/dans.git.bitbucket.org/pull-requests/new?source=test-1&t=1 remote: To https://bitbucket.org/dstevenstest/dans.git.bitbucket.org.git * [new branch] test-1 -> test-1
- 자습서 리포지토리를 열어 브랜치를 클릭합니다. 이제 main 브랜치와 test-1 브랜치를 모두 볼 수 있습니다. 다음과 비슷하게 표시될 것입니다.

원격 브랜치 만들고, 가져오고, 체크아웃
팀원과 함께 작업할 때는 다른 팀원이 만들고 Bitbucket으로 푸시하는 브랜치를 풀하거나 가져와야 하는 경우가 있습니다. 이 예시에서는 브랜치를 만들고 다른 팀원이 만든 브랜치로 작업하는 데 필요한 몇 가지 기본적인 사항을 알려드리겠습니다.
- 브랜치Bitbucket의 자습서 리포지토리로 이동하여 브랜치를 클릭합니다. 다음과 비슷하게 표시될 것입니다.
- 브랜치 만들기를 클릭하고 브랜치 이름을 test-2로 지정한 다음 만들기를 클릭합니다.
- 브랜치 체크아웃 대화 상자에 git fetch 명령을 복사합니다. 아마 다음과 비슷하게 표시될 것입니다.
$ git fetch && git checkout test-2 From https://bitbucket.org/dstevenstest/dans.git.bitbucket.org * [new branch] test-2 -> origin/test-2 Branch test-2 set up to track remote branch test-2 from origin. Switched to a new branch 'test-2'
- 터미널에서 git branch 명령을 사용합니다. 브랜치 목록은 다음과 비슷하게 표시될 것입니다.
$ git branch main test-1 * test-2
- git status 명령을 사용하면 다음과 비슷하게 표시될 것입니다.
$ git status On branch test-2 Your branch is up-to-date with 'origin/test-2'. nothing to commit, working tree clean
- git checkout 명령을 사용하여 다른 브랜치로 초점을 다시 바꿉니다. 명령은 다음과 비슷하게 표시될 것입니다.
$ git checkout test-1 Switched to branch 'test-1' Your branch is ahead of 'origin/test-1' by 3 commits. (use "git push" to publish your local commits)
변경 사항 푸시 및 풀리퀘스트 만들기
이제 첫 번째 변경 사항을 검토하고 브랜치를 병합할 차례입니다.
- +>풀리퀘스트 만들기를 클릭합니다. 소스 브랜치인 test-1 브랜치와 대상 브랜치의 main 을 볼 수 있습니다.
- 풀리퀘스트 만들기를 클릭합니다.
- diff(editme.html 파일의 변경 사항을 표시하는 영역)에서 줄을 선택하여 풀리퀘스트에 댓글을 추가합니다.
- 페이지 왼쪽 상단에서 승인을 클릭합니다. 물론 실제 풀리퀘스트에서는 검토자가 댓글을 추가하게 됩니다.
- 병합을 클릭합니다.
- (선택 사항) 세부 정보를 입력하여 커밋 메시지를 업데이트합니다.
- 두 가지 옵션 중에서 커밋 병합 병합 전략을 선택합니다.
- 커밋 병합—소스 브랜치의 모든 커밋을 유지하고 대상 브랜치의 일부로 만듭니다. 이 옵션은 명령줄에 git merge --no-ff를 입력하는 것과 같습니다.
- 스쿼시—소스 브랜치를 대상 브랜치에 병합할 때 커밋을 결합합니다. 이 옵션은 명령줄에 git merge --squash를 입력하는 것과 같습니다.
- 커밋을 클릭하면 방금 병합한 브랜치가 더 큰 변경 체계에 어떻게 적용되는지 확인할 수 있습니다.
브랜치를 삭제하고 main을 로컬 작업 브랜치로 풀
이제 기본적인 브랜칭 워크플로를 다뤘으며 변경 사항은 main에 있습니다. 마지막으로, 방금 병합한 브랜치를 삭제하고 업데이트된 main 브랜치를 풀하며 업데이트된 main 브랜치를 test-2 브랜치에 병합하는 방법을 알아보겠습니다.
- 터미널을 열어 git status 명령을 실행하면 결과는 다음과 비슷하게 표시될 것입니다.
$ git status On branch test-1 nothing to commit, working tree clean
- git checkout main 명령을 실행하여 main 브랜치로 전환합니다. 결과는 다음과 비슷하게 표시될 것입니다.
git checkout main Switched to branch 'main' Your branch is up-to-date with 'origin/main'.
- git pull 명령을 실행합니다. 결과는 다음과 비슷하게 표시될 것입니다.
$ git pull remote: Counting objects: 1, done. remote: Total 1 (delta 0), reused 0 (delta 0) Unpacking objects: 100% (1/1), done. From https://bitbucket.org/dstevenstest/dans.git.bitbucket.org 2d4c0ab..dd424cb main -> origin/main Updating 2d4c0ab..dd424cb Fast-forward editme.html | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-)
- git branch -d {branch_name} 명령을 실행하여 test-1 브랜치를 제거합니다. 결과는 다음과 비슷하게 표시될 것입니다.
$ git branch -d test-1 Deleted branch test-1 (was 063b772)
- git checkout 명령을 사용하여 test-2 브랜치로 전환합니다.
$ git checkout test-2 Switched to branch 'test-2' Your branch is up-to-date with 'origin/test-2'.
- git merge main test-2 명령을 사용하여 main 브랜치를 작업 브랜치로 병합합니다. 결과는 다음과 비슷하게 표시될 것입니다.
$ git merge main test-2 Updating 2d4c0ab..dd424cb Fast-forward editme.html | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-)
- 활성 브랜치는 중요합니다. main을 test-2에 병합하려면 test-2를 체크아웃(활성화)해야 합니다. 마찬가지로 test-2를 main에 병합하고 싶으면 main을 체크아웃해야 합니다.
- 어떤 브랜치가 활성 상태인지 보려면 git branch를 사용합니다. 활성 브랜치는 별표가 표시되어 있습니다. 또는 git status 를 사용하여 현재 사용자가 있는 브랜치와 보류 중인 로컬 변경 사항이 있는지 확인할 수 있습니다.
브랜칭 및 관련 명령에 대해 조금 익숙해지셨기를 바랍니다. 방금 다룬 내용을 복습해 보겠습니다.
브랜칭 워크플로 검토
Git 기능 브랜치 워크플로는 Bitbucket에서 팀원과 함께 작업할 수 있는 효율적인 방법입니다. 이 워크플로에서는 모든 기능 개발이 main 브랜치가 아닌 별도의 브랜치에서 이루어집니다. 따라서 여러 개발자가 메인 코드를 건드리지 않고 각자의 기능에 대해 작업할 수 있습니다.
![]() | main 브랜치에서 시작이 워크플로는 코드에 대해 최소한 한 명 이상의 다른 팀원과 공동 작업하는 데 유용합니다. Bitbucket 및 로컬 리포지토리가 최신 상태면 시작할 준비가 된 것입니다. |
새 브랜치 만들기작업 중인 기능이나 이슈마다 별도의 브랜치를 사용합니다. 브랜치를 만든 후에는 변경 사항이 해당 브랜치에 적용되도록 로컬에서 체크아웃합니다. | |
변경 사항 업데이트, 추가, 커밋, 푸시Git을 사용할 때와 마찬가지로 기능에 대해 작업하고 커밋합니다. 준비가 되면 커밋을 푸시하고 Bitbucket에서 기능 브랜치를 업데이트합니다. | |
코드 검토 받기코드에 대한 피드백을 받으려면 Bitbucket에서 풀리퀘스트를 만듭니다. 여기에서 검토자를 추가하고 병합하기 전에 모든 것이 문제가 없는지 확인할 수 있습니다. | |
피드백 확인이제 팀원들이 댓글을 추가하고 승인합니다. 로컬에서 댓글을 확인 및 커밋하며 변경 사항을 Bitbucket에 푸시합니다. 업데이트는 풀리퀘스트에 나타납니다. | |
브랜치 병합다른 팀원이 리포지토리를 변경한 경우 병합하기 전에 병합 충돌을 해결해야 할 수 있습니다. 풀리퀘스트가 승인되고 충돌이 없으면 main 브랜치에 코드를 추가할 수 있습니다. Bitbucket의 풀리퀘스트에서 병합합니다. |
이 자습서는 브랜치가 팀을 더 효율적으로 만드는 방법을 보여주는 것으로 제한되어 있습니다. 브랜칭에는 여러 가지 접근 방식이 있으며, 이러한 접근 방식 중 일부를 워크플로 비교에서 설명합니다.