1. 브랜치 (branch)
- 브랜치 : 여러 개발자들이 동시에 다양한 작업을 할 수 있게 만들어 주는 기능으로, 각자 독립적인 작업 영역 안에서 마음대로 소스코드를 변경할 수 있다.
- 여러 명이서 동시에 작업할 때, 다른 사람의 작업에 영향을 주거나 받지 않도록 메인 브랜치에서 자신의 작업 전용 브랜치를 만든다.
- 각자 작업을 진행한 후에 다른 브랜치와 병합 (merge)를 해서, 작업한 내용을 다시 새로운 하나의 브랜치로 모은다.
- main branch (통합 브랜치) : git이 작동하는 하나의 흐름으로, 저장소를 처음 만들 때 만들어지는 브랜치이다. 만든 저장소에 새로운 파일을 추가하거나 추가한 파일의 내용을 변경하여서 저장하면 main라는 이름의 브랜치로 처리할 수 있게 된다.
- main branch에서 다른 브랜치를 만들지 않거나, 다른 브랜치로 이동하지 않는다면 모든 변경 작업은 main 브랜치에서 이뤄지게 된다.
2. 브랜치 만들기
(1) Repository Clone
https://chunshikkong.tistory.com/27
이 포스팅에 clone 하는 방법을 자세히 정리해두었다!
나는 /c/git/git-for-practice 경로에 clone을 해두었다.
※ 존재하는 branch 확인 ※
git branch
현재 존재하는 branch에는 main 뿐이다.
(원래 master 브랜치였는데, 명칭에 차별적인 의미가 담겨있다보니.. (master와 slave) main 브랜치로 바뀌었다.)
(2) 브랜치 만들기
git branch [ 브랜치 이름 ]
브랜치 이름은 주로 내가 구현하려는 기능의 이름을 적는다.
나는 주석을 작성할 것이기 때문에 'memo'라는 브랜치를 만들었다.
git branch라고 쳤을 때 브랜치 종류에 memo가 추가된 것을 볼 수 있다.
3. 브랜치 전환하기
(1) 브랜치 전환하기
git checkout [ 브랜치 이름 ]
(2) 파일 수정하기
Hello 파일의 1번 줄을 'Git Branch Practice'로 수정했다.
git status로 확인했을 때 'Changes not staged for commit' 이라는 문구가 나온 것으로 보아
수정 사항이 잘 저장된 것을 알 수 있다.
(3) 커밋하기
git add와 commit을 해준다.
(4) push 하기
git push origin [ 브랜치 이름 ]
4. 브랜치 병합하기
현재 상태에서 github repository를 가보면 다음과 같다.
'memo had recent pushes 2 minutes ago'
내 수정 사항 log가 잘 기록되어 있다!
(1) command로 병합하기
git checkout main
git merge [ 브랜치 이름 ]
병합은 main 브랜치에서 이뤄진다. 따라서 git checkout main으로 main 브랜치 이동해준다.
(2) github에서 직접 병합하기
Pull request 한 후에 Merge pull request 해준다.
성공적으로 merge 되었다!
수정 사항도 잘 반영되었다.
5. 충돌 (Conflict)
- 충돌이 일어나는 이유 : branch가 여러개인 경우에, 여러명이 동시에 같은 브랜치의 같은 내용을 접근하고 수정했을 때 발생한다.
(1) 충돌 발생 실습
branchA와 branchB를 만들었다.
git push까지 해주었다.
github에도 생성된 파일이 잘 적용되었다.
① branchA 작업
branchA로 이동해주고,
파일을 다음과 같이 수정해준다.
branchA에서 commit까지 완료해준다.
github에서도 push가 잘 된 것을 확인할 수 있다.
PR (pull request)까지 해준다.
② branchB 작업
branchB로 이동해주고,
파일을 다음과 같이 수정해준다.
branchB에서 commit까지 해준다.
github에서도 잘 반영되어있다.
PR까지 해준다.
(2) 충돌 해결 실습
merge를 하려고 했는데 다음과 같이
"This branch has conflicts that must be resolved"라는 경고문이 떴다.
Resolve conflicts를 클릭하고
어느 부분에서 conflict가 발생 했는지 확인한다.
branchB에서 2번 줄을 삭제해주고, commit merge 해준다.
이제 merge가 가능한 상태가 되었다.
2번 줄이 '비겼습니다'로 잘 적용되었다.
command에서 main branch로 이동하고, pull 해준다.
파일 내용이 아주 잘 바뀌었다.
'[ GIT ]' 카테고리의 다른 글
[ Git ] 깃허브로 협업하기 (1) : fork, clone (0) | 2022.02.12 |
---|