git 협업 관리 (1) - 형상관리 기초 원리

bethe·2022년 9월 29일
0

Git

목록 보기
7/8

git 협업 방식


팀장이 git repository를 만들어 lala와 cos를 콜라보 초대하여 하나의 git으로 관리한다.


맡은 기능 중 의존하지 않는 기능부터 만든다. (cos가 e기능부터 만드는 이유)

각 기능이 각자의 브랜치에서 완료되면, merge를 하여 master 브랜치에 통합해야 한다. 그런데 master브랜치와 자신의 브랜치 형상이 다를 경우 push를 할 수 없다. 이 경우 형상을 맞춰 주어야 push할 수 있다.

아래 예시로 형상이 다르다는 의미와 형상이 다를 경우 어떻게 해야 하는지 알아보자.



형상관리 기초 원리

1. netflix파일 - master 브랜치에 a기능완료까지 커밋

2. 집에서 작업하는 환경을 가정하기 위해 netflix_home 생성 후 git bash로 브랜치 받아오기

git clone의 원리 : init - remote - pull(git pull origin [브랜치명]) 의 단계

3. git bash로 b기능완료 파일 생성

touch

4. vi에디터로 b기능완료 파일 내용 수정

vi [파일명(Tab으로 부르기)]

이런 화면이 뜨는데, 현재 글쓰기 모드가 아니기 때문에 글자가 입력되지 않는다.
영어 i키(insert)를 눌러 글쓰기 상태로 만든다.

내용 적기. (엔터치면서 아래에도 적을 수 있다.)

ESC를 누르면 글쓰기 모드에서 다시 읽기 모드로 변해 글을 입력할 수 없다.

: wq로 저장하고 에디터 빠져나가기. (q는 저장 없이 빠져나가기만 한다.)

cat [파일명(Tab키로 찾기)] : 해당 파일을 출력해서 보여줌

이후 b기능 commit

5. netflix파일로 다시 돌아가 c기능완료 만들기 (형상을 다르게 만들기)

형상이 달라 push가 되지 않는다.

6. 형상맞추기 (git pull 원리)

git pull origin master

pull = fetch(다운로드)+merge
: 먼저 원격 브랜치의 내용을 가져온 뒤(= git fetch), 가져온 원격 브랜치의 내용을 현재 로컬 브랜치로 가져와 병합(= git merge)을 진행한다.

가상의 (fetch) stream 브랜치(다운로드 전용가지, 마스터가지의 속성을 지님) 를 만들어 다른 가지에 merge시킨다.

7. 형상맞추기(실제 실행)

git pull을 하면 Merge했다는 로그까지 보여준다.

8. commit하여 확인하기

[ push는 2번 하자 ]

내가 기능을 수정하는 동안 다른 사람이 같은 기능을 수정할 수 있으므로 push를 작업시작 전 한 번, 작업을 다한 뒤 push하기 전 pull한 번 하고 commit해야 한다.



형상 충돌시 관리 원리 (pull할 경우에도 충돌하는 경우)

1. netflix_home 파일에 작업 중인 d기능 세팅 후 push

( [집] d기능 작업 중 ) 으로 로그를 저장해야 하는데 [집]태그를 실수로 붙이지 못했다. d기능 작업 중로그는 [집]에서 작업하고 있는 파일이다.)

2. netflix 파일에도 다른 작업 중인 d기능 세팅

push하려고 하면 형상이 달라 실패한다.

3. netflix 파일에 pull 실행

사이사이에 값이 있어 형상이 달라 충돌하야 merge가 되지 않았음을 확인할 수 있다. (1,2,3,444,555,666 이었다면 pull이 되었을 것이다.)

4. 해결방안 (둘 중 하나를 선택하기)

1까지는 형상이 같아서 충돌이 나지 않았으나, 그 이후로는 형상이 달라 충돌한다. 무엇이 옳은 형상인지 git이 판별하지 못하기 때문에, ====== 위아래를 기준으로 둘 중 하나를 선택하여 사용하지 않을 코드를 지우면 된다.

5. 코드를 선택한 뒤 push하기 (커밋로그에 [충돌해결] 등 구분할 수 있게 적기)

6. commit

profile
코딩을 배우고 기록합니다. 읽는 사람이 이해하기 쉽게 쓰려고 합니다.

0개의 댓글