깃(Git)_브랜치(branch)
▶브랜치(branch)란?
브랜치란 독립적으로 어떤 작업을 진행하기 위한 개념으로서 필요에 의해 만들어지는 각각의 브랜치는 다른 브랜치의 영향을 받지 않기 때문에, 여러 작업을 동시에 진행할 수 있다.
또한 이렇게 만들어진 브랜치는 다른 브랜치와 병합(Merge)함으로써, 작업한 내용을 다시 새로운 하나의 브랜치로 모을 수 있다.
▶브랜치(branch) 명령어
※git branch : branch 리스트를 보여준다.
현재 존재하는 깃 리스트는 master 하나밖엔 없으며 앞의 *과 초록색으로 현재 master를 사용중이다 를 알 수 있다.
※git branch [branch 이름] : 새로운 branch 만들기
newb라는 이름의 branch를 만들었고 git branch로 newb가 잘 저장되어있는지 확인한다.
※git checkout [branch이름] : branch이름으로 대상변경
입력한 branch이름으로 접속 상태를 변경한다고 생각한다.
git checkout으로 master -> newb로 변경됨을 확인할 수 있다.
newb로 변경된 상태에서 f3.txt라는 파일을 생성했고 commit을 했다.
그리고 master로 git checkout으로 branch상태를 변경하였다.
그러자 f3.txt 파일이 없어졌다.
즉, 서로 연동을 하지 않은 상태에선 서로 다른 branch끼리의 파일 공유 및 확인이 불가능하다.
master로 branch하고 log하면 newb에서 commit한 3commit이 보이지 않고
newb로 branch하고 log하면 master에서 commit한 commit4가 보이지 않는다.
log파일 역시 각각 관리가 된다.
※git log --branches --decorate : 저장되어있는 모든 branch의 log가 보여지게된다.
특별한 표시가 없는 것은 branch로 나누어지기 전 COMMIT이 된 값이다.
※git log --branches --decorate --graph: 앞에 그래프 추가
특별히 branch하지 않아도 master는 기본 branch로 저장되어있고(초록선) newb를 새로 생성하면서 branch로 갈라져(빨간선)있음을 그래프로 확인할 수 있다.
※git log --branches --decorate --graph --oneline : 로그 내용을 한 줄로 보기 편하게 나열
※git log branchA..branchB: A 에는 없고 B에는 있는 것
master에는 없고 newb에는 있는 것: 3commit
newb에는 없고 master에는 있는 것: commit4
※git log -p branchA..branchB: A 에는 없고 B에는 있는 것
newb에는 없고 master에는 있는 것이 f2.txt라는 파일 내용까지 나오면서 더 세부적으로 보여진다.
▶branch끼리의 병합: merge
※git merge branchA : branchA를 현재 branch으로 marge한다.
git checkout 으로 master로 설정해둔 상태에서 git merge newb로 newb와 병합을 시킨다.
해당 화면이 나타나면 내용도 가능하나, 입력할 내용이 없을 경우 :wq로 나가준다.
그리고 graph로 확인해보면 master 와 newb가 병합됨이 확인되고
원래 master엔 f2.txt , newb엔 f3.txt만 확인이 가능했지만 병합되어 master branch에서 ls로 보유파일을 확인하면 f2와 f3이 모두 확인됨을 볼 수 있다.
단, 다시 newb로 checkout하여 ls해보면 f2.txt가 보이지않는다.
master에서 newb를 연결시킨 것이기에 newb 역시 master와 파일을 공유하고 싶다면
git merge master를 사용하여 병합시켜준다.
보통 합병할 땐 주로 양쪽으로 진행하거나 하나의 branch로 파일을 모으고 나머지 branch는 삭제시키는 등의 방법을 사용한다.