2012. 12. 12. 15:00
Git, GitHub/Git Lec01
git은 branch를 만들어 "테스트할 기능", "새로운 기능", "버그 픽스"등에 대하여 만들고, master에 다시 merge를 할 수 있다. branch를 만들고, merge하는 방법을 알아보자
▶ Git 제어
- git branch new : 새로운 branch 를 만든다. 아무런 내역이 없다.
- git checkout new : 새로 만든 new 브랜치로 이동한다
- git checkout -b alternate master : master를 복제하여 브랜치를 만들고 alternate로 checkout 이동한다
- git branch -m alternate alternative : 브랜치의 명칭을 alternative로 변경한다 (-M 기존 같은 명칭 브랜치 있어도 덮어씀)
- git brranch -d alternative : alternative 브랜치를 삭제한다 (-D 옵션은 강제 삭제)
▶ Merge 전략
- Straight Merge (바로 합치기) : 브랜치 변경 이력 전체를 합치는 방법
- Squashed Commit (커밋 합치기) : 한 브랜치 이력 압축하여 다른 브랜치의 최신 커밋으로 하나 만드는 방법
- Cherry-picking (선택하여 합치기) : 다른 브랜치의 하나의 커밋을 현재 브랜치에 적용하는 방법
각 합치기에 대해서 위->아래 명령순으로 살펴보자
> 바로 합치기
- git checkout -b alternate master
- git add about.html (내용 넣음) -> git commit -m "add about"
- git checkout master
- git merge alternate : master 브랜치에 alternate 브랜치를 합친다 (즉, about.html 파일이 신규로 합쳐짐)
> 커밋 합치기
- git checkout -b contact master
- git add contact.html (주소 내역 추가) -> git commit -m "add contact address"
- contact.html (email 내역 추가) -> git commit -a -m "add contact email" (즉, commit object 두개가 된다)
- git checkout master
- git merge --squash contact : contact의 커밋 두개를 하나로 만들어 master의 staging에 추가함 (git status 확인)
- git commit -m "add contact address" -m "add contact email" (master 브랜치에 contact.html 을 커밋한다)
> 선택하여 합치기
- git checkout contact
- git commit -a -m "add contact sns id" (contact.html안에 twitter 계정추가 commit object Hash 코드를 34abcd 로 가정함)
- git checkout master
- git cherry-pick 34abcd ( contact 브랜치의 34abcd 커밋을 master 브랜치에 커밋한다)
- git reset --hard HEAD 마지막 커밋을 master 브랜치에서 제거
- git cherry-pick -n 34abcd ( -n 옵션 사용하면 master 브랜치의 staging에 넣음, 커밋안함. git status 로 확인)
- git commit (최종 커밋함)
▶ Merge시 충돌 해소하기
두개의 브랜치를 합치기하다 같은 파일의 내용이 동시에 변경되었을 경우 해결방법을 알아보자.
- git checkout -b about master : about 브랜치 생성 후 checkout
- git add about.html (about 내역 입력) -> git commit -m "add about"
- git branch about2 abut : about 브랜치를 기반하여 about2 브랜치를 생성
- git commit -a -m "add XXX" : about 브랜치의 about.html 파일에 XXX 입력
- git checkout about2
- git commit -a -m "add YYY" : about2 브랜치의 about.html 파일에 YYY 입력 (이제 about 브랜치의 about.html과 about2 브랜치의 about.html 파일에 XXX 와 YYY 충돌이 발생함)
- git checkout about
- git merge about2 : about2 브랜치를 about 브랜치로 바로 합치기
- about.html 안에 conflict 내역이 표시됨 : 내역을 직접 수정하거나, git mergetool 명령으로 merge.tool 값 확인하고 도구로 합치기 시도함 (도구 사용법은 다시 상세히 봐야겠음)
<<<<<<<< HEAD : 밑으로 현재 브랜치 코드 나옴
>>>>>>>> about2 : 합치려는 다른 브랜치 코드 나옴
======= : 구분자
예) about.html 파일안의 conflict 내역
<<<<<<<< HEAD
XXX
=======
YYY
>>>>>>>> about2
'Git, GitHub > Git Lec01' 카테고리의 다른 글
[Git] tag 다루기 (0) | 2012.12.20 |
---|---|
[Git] Remote 저장소 연결 및 관리 (0) | 2012.12.17 |
[Git] History 이용 및 관리하기 (0) | 2012.12.13 |
[Git] Reset 사용하기 (0) | 2012.12.11 |
[Git] Hash Object 정보보기 (0) | 2012.12.11 |