팀장이 git repository를 만들어 lala와 cos를 콜라보 초대하여 하나의 git으로 관리한다.
맡은 기능 중 의존하지 않는 기능부터 만든다. (cos가 e기능부터 만드는 이유)
각 기능이 각자의 브랜치에서 완료되면, merge를 하여 master 브랜치에 통합해야 한다. 그런데 master브랜치와 자신의 브랜치 형상이 다를 경우 push를 할 수 없다. 이 경우 형상을 맞춰 주어야 push할 수 있다.
아래 예시로 형상이 다르다는 의미와 형상이 다를 경우 어떻게 해야 하는지 알아보자.
netflix
파일 - master 브랜치에 a기능완료까지 커밋netflix_home
생성 후 git bash로 브랜치 받아오기git clone의 원리 : init - remote - pull(git pull origin [브랜치명]
) 의 단계
touch
vi [파일명(Tab으로 부르기)]
이런 화면이 뜨는데, 현재 글쓰기 모드가 아니기 때문에 글자가 입력되지 않는다.
영어 i
키(insert)를 눌러 글쓰기 상태로 만든다.
내용 적기. (엔터치면서 아래에도 적을 수 있다.)
ESC
를 누르면 글쓰기 모드에서 다시 읽기 모드로 변해 글을 입력할 수 없다.
: wq
로 저장하고 에디터 빠져나가기. (q
는 저장 없이 빠져나가기만 한다.)
cat [파일명(Tab키로 찾기)]
: 해당 파일을 출력해서 보여줌
이후 b기능 commit
netflix
파일로 다시 돌아가 c기능완료 만들기 (형상을 다르게 만들기)형상이 달라 push가 되지 않는다.
git pull origin master
pull = fetch(다운로드)+merge
: 먼저 원격 브랜치의 내용을 가져온 뒤(= git fetch), 가져온 원격 브랜치의 내용을 현재 로컬 브랜치로 가져와 병합(= git merge)을 진행한다.
가상의 (fetch) stream 브랜치(다운로드 전용가지, 마스터가지의 속성을 지님) 를 만들어 다른 가지에 merge시킨다.
git pull을 하면 Merge했다는 로그까지 보여준다.
내가 기능을 수정하는 동안 다른 사람이 같은 기능을 수정할 수 있으므로 push를 작업시작 전 한 번, 작업을 다한 뒤 push하기 전 pull한 번 하고 commit해야 한다.
netflix_home
파일에 작업 중인 d기능 세팅 후 push( [집] d기능 작업 중 ) 으로 로그를 저장해야 하는데 [집]태그를 실수로 붙이지 못했다. d기능 작업 중
로그는 [집]에서 작업하고 있는 파일이다.)
netflix
파일에도 다른 작업 중인 d기능 세팅push하려고 하면 형상이 달라 실패한다.
netflix
파일에 pull 실행사이사이에 값이 있어 형상이 달라 충돌하야 merge가 되지 않았음을 확인할 수 있다. (1,2,3,444,555,666 이었다면 pull이 되었을 것이다.)
1까지는 형상이 같아서 충돌이 나지 않았으나, 그 이후로는 형상이 달라 충돌한다. 무엇이 옳은 형상인지 git이 판별하지 못하기 때문에, ======
위아래를 기준으로 둘 중 하나를 선택하여 사용하지 않을 코드를 지우면 된다.