Problem. 고객사에 따라 다른 제품, 사용 설명서

 

Solution 1. 처음에 작업했던 저장소 전체를 여러 개 복사해서 각 고객사의 이름을 붙인다음 저장소마다 버전관리를 따로 하는 방법 

 ex) 처음에 작업했던 저장소 : master 각 고객사 : ms, google, apple

but 비효율적!

(1) 자료중복

(2) 고객사마다 디렉터리 이름을 다르게 사용(버전 관리 시스템의 장좀 미이용)

(3) 한 디렉터리의 최신버전코드를 복사해 다른 디렉터리에 붙여 넣고 커밋하는 과정에서 에러가 발생 

 

Solution 2. 브랜치!

 

브랜치 기능작동 순서

1. 깃으로 버전관리를 시작하면 master라는 브랜치 생성

2. 사용자가 커밋할 때마다 master브랜치는 최신 커밋을 가리킴 ( 브랜치 = 커밋을 가리키는 포인터)

3. 새 브랜치 생성 시, 기존에 저장한 파일을 master브랜치에 그대로 유지하면서 기존 파일 내용 수정 및 새로운 기능을 구현할 파일 생성 가능 ("branch(분기)한다")

4. 새브랜치에 있던 파일을 master 브랜치에 합칠 수 있음 ("merge"(병합)한다")

깃에서 브랜치를 만들거나 확인하는 명령

$ git branch

 

새 브랜치 만들기

$ git branch 브랜치이름

 

브랜치 사이 이동하기 ( 다른 브랜치로 이동하기)

$ git checkout 이동하고자하는브랜치이름

 

한 줄에 한 커밋씩 확인

$ git log --oneline

 

한 줄에 한 커밋 씩, 각 브랜치의 커밋 확인

$ git log --oneline --branches

 

한 줄에 한 커밋 씩, 각 브랜치의 커밋, 그래프 형태로 확인

$ git log --oneline --branches --graph

 

브랜치 사이의 차이점 알아보기 (ex. A브랜치와 B브랜치 사이의 차이점)

A에는 없고 B에만 있는 커밋확인 (A를 기준으로 B비교)

$ git log A..B

B에는 없고 A에만 있는 커밋 확인 (B를 기준으로 A비교)

$ git log B..A

 

서로 다른 파일 병합하기 

1. 각 브랜치에 커밋만들기

2. master브랜치로 체크아웃

3. 병합하기

$ git merge 병합할브랜치이름

 cf) 편집기 창을 열지 않고 깃에서 지정하는 커밋 메시지를 그대로 사용하려면

$ git merge 병합할브랜치이름 --no-edit

 cf) 브랜치를 병합할 때 편집기 창이 나타나지 않도록 설정한 경우, 커밋 메시지를 추가 및 수정하려면

$ git merge 병합할브랜치이름 -edit

 

같은 문서의 다른 위치를 수정했을 때 병합하기

-> 문서를 확인 해 보면 수정한 내용들이 합쳐져 있음

 

같은 문서의 같은 위치를 수정했을 때 병합하기

-> git merge 명령을 사용하면 "conflick"메시지가 나타남

-> 문서를 열어 수정해야함 

-> 커밋

이 과정에서 나는 commit을 하지 않아

error: Merging is not possible because you have unmerged files.

hint: Fix them up in the work tree, and then use 'git add/rm <file>'
hint: as appropriate to mark resolution and make a commit.
fatal: Exiting because of an unresolved conflict.

라는 에러 메시지가 떴었다. 

 

병합이 끝난 브랜치 삭제하기 (완전히 저장소에서 없애는 것이 아닌 깃의 흐름 속에서 감추는 것)

(같은 이름으로 브랜치를 만들면 예전에 작업했던 내용이 그대로 나타남)

1. master로 checkout하기

2. 병합이 끝난 브랜치 삭제

$ git branch -d 삭제할브랜치이름

위에서 commit을 하지 않은 채로 브랜치를 삭제하려고 시도하니 다음과 같은 에러메시지가 떴다.

error: The branch '삭제할브랜치이름' is not fully merged.
If you are sure you want to delete it, run 'git branch -D 삭제할브랜치이름'.

이때 두가지 해결 방안이 있다. 하나는 해당 파일을 commit하기 나머지 하나는 (git branch -D 삭제할브랜치이름) 입력하기

+ Recent posts