Git ⎮ Branch & Merge

Chris-Yang·2021년 9월 19일

Git&Github

목록 보기
2/3
post-thumbnail

> Branches

git에서 시작된 branch와 merge는 github으로 이어져
github repository에서도 branch를 나누고 주요 branch에 merging할수있다.

하지만 여기서는 git에서의 branch와 merge 컨트롤에 집중하겠다.


▶︎ Branch?

branch의 사전적 의미가 나뭇가지인 것 처럼
어떤 중심이 되는 작업에서 가지처럼 뻗어 나와서 별도의 작업을 하는 공간이 된다.

그리고 그 별도의 작업물이 완성되면 중심이 되는 작업물과 병합되어
기존 기능을 보강하거나 새로운 기능을 추가할 수 있다.

예를 들어 집을 짓거나 수리하는데 그 집에 설치할 창문을 다른 곳에서 만들고
만들어진 창문이 집에 적합하면 그 때 집에 설치하는 것과 같다.

이런 별도의 작업과 병합은 기록을 남기게 되는데
문제가 발생하는 경우 이 기록을 통해 수월하게 원인을 찾을 수도 있다.

또한 다른 branch들끼리 영향을 받지 않으므로 여러가지 작업을 동시수행할 수 있다.

마치 완성된 창문, 조명, 싱크대, 가구들이 외부에서 별도로 만들어진 후
짓고있는 집에 각각 설치 / 배치되는 것 처럼.


▶︎ 주의사항

repository를 처음 만드는 경우 git은 기본값으로 설정되어 있는
main 혹은 master라는 이름의 branch를 생성한다.

그리고 (현재 branch가 main이라고 했을 때)이곳에서 새로운 파일 생성/수정 후
commit한 내용들은 모두 main이라는 branch에 저장되고 관리된다.


❗️주의 1.
그리고 이 상태에서 github repository에 기존에 만들어두거나 새로 만든 branch로
push하기 위해 git push origin 다른branch를 하는 경우가 있다.

이전 작업내역에 따라 다르겠지만 처음부터 github repository에는 아무 변화가
없던가 2번째 push부터 Everything up-to-date만 응답받을 것이다.

다시 파일을 수정, 추가 하고 add / commit을 해보면 또 잘 된다.

비유하자면 우리는 main이라는 폴더에서 멋지게 작업하고 저장한 후
조용히 잘 자고있던 다른 엉뚱한 폴더를 전송한 것이다.

언제나 현재 작업하고 있는 branch를 잘 확인해야 한다.


❗️주의 2.
또한 VScode와 같은 code editor로 main이나 기타 branch에서 작업하다가
새로운 branch를 생성해서 이동하거나 기존의 다른 branch로 이동했을 때
VScode를 기준으로 main에서 작업한 파일이름 옆에 deleted가 뜨게된다.

당황하지 말고 우선 이동한 branch에서 deleted가 붙은 파일을 저장하면 안된다.

만약 branch 이동 전에 파일을 저장하지 않았다면 다시 이전 branch로
돌아간 다음 수정한 파일 등을 저장한 후에 다른 작업을 해야 한다.





> Branch 다루기

<>는 내가 임의로 넣는 부분이라는 뜻이고 <>를 실재로 작성하진 않는다.

예: git branch <new-branch-name> -> git branch mybranch


▶︎ Create

git branch <new-branch-name>

현재 위치한 branch의 code를 모두 계승한 새로운 branch가 생성된다.

만약 main에서 main2 branch를 만들었는데 main2 branch 위치에서
main3 branch를 만든 경우 main3은 main2의 code를 계승받는다.


git branch 

생성된 branch들은 git branch 명령어를 통해 확인할 수 있다.

빠져나올 때는 q 혹은 esc, :, q를 순차적으로 입력하면 된다.



▶︎ Changing

git checkout <branch-name>

다른 branch로 이동하면 작업중이던 내용이 이동한 branch의 마지막
commit내용으로 전환된다.(VScode에서는 경우에 따라 열어놓은 파일에
deleted가 표시됨)

그리고 그 시점부터 commit한 내용은 이동한 branch에 기록된다.

각각의 branch는 독립되어있기 때문이다.


git checkout -b <new-branch-name>

새로운 branch를 생성하는과 동시에 checkout할 수도 있다.



▶︎ Merging

main branch가 아닌 다른 branch에서 파일 내용을 수정


add / commit을 하고 main branch로 checkout.

git merge 합병하고싶은branch 명령어로 main branch에 수정한
branch 내용을 합병.

vi ./합병된 파일 이름 명령어로 main branch에 수정된 파일 확인.


원래 main branch에 없던 내용인 print('branch-test2 merging')
다른 branch로부터 합병되어 추가/수정된 것을 확인할 수 있음.

git merge <branch-name>


▶︎ Deleting

git branch -d <branch-name>

필요 없어진 branch를 삭제할 수 있다.





🌈 작은 회고 🤔

알아야할 것도 알고싶은 것도 많은데 추석시즌이라 행사가 많아
인기 연예인의 삶이 이런걸까..라며 바보같이 혼자 피식하면서 이런저런 부담감에 이동하면서 노트북을 열어 이번 글의 대략적인 가이드라도 적어놨다.

그리고 일정 중간중간 글을 채워넣고 겨우겨우 완성시켰다. 뿌듯🕺

이번 연휴기간에 부족하다 생각하는 부분들을 채우고 싶다.

회고 욕심은 일단 여기서 끊어야겠다.🧖‍♂️

profile
sharing all the world

0개의 댓글