branch 란?
Conflict 란?
실습환경을 구축하고 시작해봅시당

자 이제 우리는 프로그래머고
고객사 마다 납품해야할 work.txt를 만들어야 한다.
이때 어떻게 해야할까?
branch를 사용하면 된다~
브랜치를 만들고 열람하고 사용해보는 걸 해보자.
git 화면을 두개 만들어보자
아래화면에는 git log --all --oneline(브랜치까지 싹다 보여줌)
--oneline : 너무 버전이 장황하게 안나오게 보여줌.
혹은 git log --graph (시각적으로 다보여줌)
을 쳐서 보고 있구
위 화면으로 실습하자.
밑에 master 보임?
우린 여태 master라는 기본 branch에서 작업하던거였음.
고객사인 apple 의 branch를 생성하고싶으면
git branch apple 이런식으로 치면 됨.
*별표가 보이면 그친구가 마스터라는 거임.아래 화면에서 log를 확인해보자
apple 브랜치가 생성되어 있다.HEAD -> master 우리는 현재 master에 속해있다. git branch google : google 브랜치도 만들어보자
work.txt 에서 master content 치구 나와보쟈
글구 그친구를 commit 해보자
log 에는 이렇게
자 그럼 apple 브랜치에 들어가볼까용?
git checkout apple


우와ㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏ

헤드를 옮기는 명령어
checkout으로 자유롭게 돌아다닐수 있다.
현재 apple이라는 브랜치에 있음.
work.txt 에 apple work 4 기입
그리고 apple.txt 생성하구 apple work 4 기입.
add 하구, commit -m "apple work 4" 해보자
로그 제대로 확인해보기 : git log --oneline --graph --decorate
- 그래프가 말을 안들어서 명령어를 이정도 추가해서보니 아주깔끔하게 다보여준다.

google, ms 에도 똑같이 해보자(복습)

브랜치는 뭐다? 멀티버스다!!!
Merge가 머지? (ㅋㅋㅋㅋ, 강사도 ㅇㅈㄹ 하고있음 ㅋㅋㅋㅋㅋ)
Commit을 하구, Commit을 하고 버전들이 여러개 만들어짐.
근데 branch도 하고 branch도 하고 branch를 하면 또 마스터 브랜치와 여러가지 브랜치가 만들어짐.
근데 타 브랜치와 브랜치 간 병합을 하고 싶을때가 있음.
이 작업을 merge라고 함.
병합된 새로운 버전을 만들게 됨.
합치려는 브랜치 의 공통 조상을 base 라고함.
그리고 합쳐진 브랜치를 merge commit 이라고 함.
실습
현재 디렉토리에서 새롭게 init 해보자
git init manual-merge
cd manual-merge : 새로생성한 git 디렉토리로 들어감
자유롭게 버전 만들자.
나는 work1.txt로 함.
새로운 브랜치를 만들거임
일단 마스터 브랜치에 master.txt 만들고 버전 올리셈.
새로운 브랜치 o2 만들기.
글구 checkout o2 후 o2.txt 만들구 버전올리셈
혹시 현재 commit 된 버전이름을 바꾸고싶다면
git commit --amend : 현재 버전 이름을 수정할 수 있음.
로그확인

이제 o2브랜치를 master 브랜치에 합쳐보겠음
git merge o2
reset 으로 날리고 복습 2회 하기!
같은파일끼리 Merge해보기
새로운 레포지토리 생성 및 위에서 했던거 처럼 작업환경 구축하기
단 work.txt내용은
#content
work
#content
work
이런식으로 작성
master와 o2 브랜치끼리 work.txt의 각자 위아래 코드를 수정하자.
o2를 master로 merge 해보자

합쳐진 파일을 한번 봐보까용?

(엄청나네.. 그냥 합쳐주네)
같은파일이어도, 다른내용이면 자동으로 수정해주는 Git의 강력한기능을 구경해봤음.
한번 충돌(Conflict)를 내보자.
아까와 같이 환경설정 후 (master, o2 브랜치)
work.txt를 위와같이 적고
고친내용이 겹치도록
중간내용만 수정해보자


이렇게 만들어둠

그럼 어떤상태가 됐을까?

그럼 work.txt 는 어케됐누

=== 구분자 를 중심으로
HEAD 와 o2 간 충돌났다고 보여줌
이거 주인님이 좀 고쳐줘용.. 하는 표시가 나옴.
그래서 이렇게 우리가 손수 고쳐줌 
Git 아! 내가 손수 고쳐줬어 라는 표시로 add 해줌

알게쪄 주인! 고마워 함.
그리고 git commit 만 쳐도
자동으로 Merge 됐다구 다 나옴. (똑똑해 참)
로그를 보면 새로운 버전이 생김
충돌이 나면 깃이 다알려줌. 완전 친절함.
강의 마지막말:
삶에 있어 branch라는게 있으면 얼마나 좋을까요?
하지만 우리의 삶은 version만 되구, branch, reset, merge 이런건 없습니다.
무엇을 잃어야 그것에 대한 소중함을 얻는것들이 너무 많은 것 같아요.
제발 부디 그러지 말고, 사랑하는 이들을 후회없이 사랑하는 삶을 살았으면 좋겠습니다.
(와닿네용 강사님)