hyperskill - Git branches 영어 원문
이제, git에 우리가 저장한 프로젝트들의 복사본이 어떻게 구성되어지는지 알아 낼 시간입니다.
이번 주제에서는 branching에 익숙해 질 것이며, 이것이 왜 필요하고, 이것으로 무엇을 할 수 있는지 다룰 겁니다.
Branching - 브랜치 만들기
가끔 개발 모듈을 분리하거나, 이전 버전과 비교하여 대체 된 프로젝트 버전이 더 나은지 보기 위해 생성합니다.
몇몇 경우들에서, 원본 브로젝트의 복사본을 작업하는 것은 좋은 연습입니다.
이러한 복사는 branch라고 부릅니다.
브랜치들은 그들만의 history (히스토리:역사)를 가지고 있으며,
당신이 해당 브랜치를 병합하기로 결정 할 때 까지 다른 브랜치들로부터 변경 사항이 독립됩니다.
이런 방식을 가지는 데에는 여러 이유가 있습니다 :
- 이미 작업중이며, 안정된 코드 버전이 저장되었으며,
- 다른 프로그래머들에 의해 병렬적으로 다양하고 새로운 기능들이 개발되었을 때,
- 개발자들은 codebase가 누군가의 변경 사항으로 인해 변경 될 리스크 없이 그들의 브랜치에서 작업 할 수 있습니다.
- 의심이 가는 경우, 당신은 서로 다른 브랜치에서 같은 아이디어를 다른 구현으로 개발 할 수 있으며, 이를 비교할 수 있습니다.
다른 말로, branching은 하나의 프로젝트에서 버전을 나누는 능력이며, 이를 갈라서 작업한다는 것 입니다.
어떻게 branch를 생성 할 수 있을까요?
각각의 repository의 주요 branch는 main 브랜치라고 부릅니다.
또다른 브랜치를 생성하기 위해서, branch <name>
명령어를 사용하세요 :
$ git branch new_branch
이는 새로운 브랜치를 생성 할 겁니다.
이것은 지금으로선, main branch의 정확한 복사본입니다.
당신은 이를 나중에 변경 할 수 있으며, main branch에 영향을 끼치지 않고 새로운 버전의 코드를 얻을 수 있습니다.
에러들과 실패들의 이벤트가 있다면,
main branch로 돌아가 작업을 계속하는 것을 고려하거나,
당신이 가질 수 있는 수의 브랜치의 제한이 없는 것 처럼 대신 또다른 브랜치를 생성 할 수 있습니다.
Switching between branches - 현재 branch 바꾸기
만약 git branch
명령어를 실행한다면, 두 가지 선택권이 있을 겁니다 :
$ git branch
new_branch
* main
Main 브랜치가 현재 브랜치이기 때문에, asterisk (별표) 로 표시되어 있습니다.
하지만 우리는 새로운 branch 인 edit-readme
를 작업하고 싶기 때문에, 이를 스위칭해야 합니다.
이를 위해서, git checkout
명령어를 사용합니다.
이 명령어는 단지 하나의 마라미터만을 갖습니다 : 존재하는 브랜치의 이름 중 하나
$ git checkout new_branch
Merging branches - 브랜치 병합하기
그래서, 당신은 새로운 브랜치로 스위칭했으므로, 새로운 브랜치에서 작업을 시작 할 수 있습니다.
예를 들어, 당신은 프로젝트 코드의 새로운 버전을 위해서 새로운 문서 파일을 add, 그리고 commit 할 수 있습니다.
$ git add new_documentation.txt
$ git commit -m "New documentation version complete!"
변경 사항을 완료했기 때문에, main 브랜치로 변경할 수 있습니다 :
$ git checkout main
지금 우리가 파일 관리자에서 우리의 프로젝트를 오픈한다면, new_documentation.txt
파일을 볼 수 없을 겁니다.
왜냐면 우리는 해당 텍스트 파일이 존재하지 않는 main branch로 돌아왔기 때문입니다.
main 브랜치에 새로운 버전에 있는 파일을 넣고 싶다면, git merge
명령어를 사용하세요.
Merging (병합) 은 그저 새로운 브랜치에서의 변경 사항을 프로젝트의 주요 버전에 적용시킨다는 의미와 같습니다.
$ git merge new_branch
만약 새로운 변경 사항들을 분리하여 저장하는 것이 이치에 맞지 않거나,
이미 main 의 일부가 되었다면, git branch -d
명령어를 사용하여 브랜치를 삭제 할 수 있습니다.
-d
옵션의 의미는 delete (삭제) 입니다 :
$ git branch -d new_branch
Resolving merge conflicts - 병합 과정의 문제 해결하기
브랜치들을 병합 할 때 갈등 (오류)가 일어 날 수 있습니다.
가장 흔한 사례는 하나의 파일이 두 번 commit 되었을 때 입니다.
이러한 버전 갈등 사례에 대한 것을 좀 더 자세히 봅시다.
예를 들어, main branch가 e = mc^4
라는 내용이 있는 initial.file
을 가졌습니다.
게다가, 또 다른 두 개의 브랜치들이 있습니다.
첫 번째 브랜치는 e = mc^2
라는 내용을 가진 올바른 버전을 가진 파일이 있습니다.
두 번째 브랜치는 e = mc^3
라는 내용을 가진 틀린 버전을 가진 파일이 있습니다.
한 프로그래머가 merge 명령어를 사용해서 이러한 모든 브랜치들을 함께 병합하려고 시도합니다 :
git merge origin/fix-formula-wrong
git merge origin/fix-formula-right
결과로 이러한 에러 메세지를 수신받습니다 :
Auto-merging initial.file
CONFLICT (content): Merge conflict in initial.file
Automatic merge failed; fix conflicts and then commit the result
그리고 main branch내부의 파일에서는, 이미 e = mc^4
라는 내용이 이미 있습니다.
만약 두 브랜치가 이들의 모든 변경 사항을 취소한다면, 올바르지 않은 수학식 e = mc^4
을 다시 받게 될 겁니다.
결과적으로, 그들의 출력을 올바르게 하기 위해 수학 식을 수동으로 변경하고, 이를 commit (커밋) 한다는 것 입니다.
보다시피, 이러한 과정은 꽤 지루하고, 거대한 프로젝트들에서는 매우 어려울 수 있습니다.
많은 개발자들은 GUI clients to resolve conflicts 를 사용하는 것을 선호합니다.
하지만, 우리가 여기서 다른 간단한 예제에서는 중요하지 않습니다.
어쨋든 간에, 어떠한 것을 하기 이전에, 당신의 동료와 논의하는 것이 더 낫습니다.
Conclusion - 결론
이번 주제에서 배운 것들을 요약 해 봅시다 :
- 원본 프로젝트를 복사한 것은 branch 라고 부릅니다.
브랜치를 생성하기 위해git branch <branch name>
명령어를 사용합니다. - 브랜치들 사이에서 변경하기 위해서,
git checkout <branch name>
을 사용합니다. - 브랜치를 병합한다는 것은 하나의 브랜치에서 또다른 브랜치로 변경 사항을 적용한다는 것을 의미합니다.
병합하기 위해git merge <branch name>
명령어를 사용합니다. - 브랜치를 삭제하기 위해
git branch -d <branch name>
명령어를 사용합니다. - 브랜치들을 병합 (merge) 할 때, 갈등이 일어 날 겁니다.
당신은 모든 행동을 주의 깊게 하며, 계속 추적하세요.
그룹 프로젝트라면, 당신의 동료의 행동에도 추적해야 합니다.
words to remember
tedious : 지루한
'Hyperskill - 컴퓨터 CS 및 영어 독해 > Introduction to Git' 카테고리의 다른 글
Gitflow auxiliary branches - Gitflow와 보조 브랜치 (0) | 2024.05.30 |
---|---|
Introduction to Gitflow - Gitflow에 대한 소개 (0) | 2024.05.29 |
Local work - 로컬 저장소에서 Git 작업하기 (0) | 2024.05.28 |
Working with remote repository - Git 원격 저장소와 작업하기 (0) | 2024.05.27 |
Help files - 도움말 페이지 (0) | 2024.05.25 |