git

git pull 예제

열곰탱 2022. 9. 29. 11:16

프로젝트 시작시 팀장, 팀원이 해야할 git 관리

 

팀장
1. 프로젝트세팅
2. 팀장이 자신의깃헙 콜라보 초대(팀원들)


팀원
1. 팀장 깃헙 git clone
2. branch생성  
ex) a기능을 만든다 a-topic
checkout 해서 a-topic브랜치로 이동
3. a기능 완료
4. a-topic push
5. a --PR요청--> master
6. 형상을 맞춘다.
7. squalth merge

 

git pull -> 코드 다운로드 = 다운로드 + 병합(merge)

 

한번도 작업한적이 없어서 git clone

작업한적 있으면 git pull을 사용해서 데이터 동기화

 

____________________________________________________________________________________

상황

학원에서 작업중인 netflix와 집에서 작업중인 netflix_home 2명이 작업중

________________________________________________________________________________________________

 

1. netflix가 환경세팅.txt / a기능완료.txt를 만들었음

2. netflix_home이 pull해서 다운받기

  1. git init
  2. git add.
  3. git remote add origin + netflix주소
  4. git pull origin master

 

pull = fatch + merge 기능을 한다.

git  주소 변경 : gir remote set-url + 주소

 

 

3. netflix_home에서 b파일 생성

netflix_home폴더 생성후 git bash실행

 

 

 

 

touch b기능완료.txt 

touch  - 빈파일 생성

 

ls : 리스트 보기

리스트를 보면 b기능완료.txt가 만들어진것을 확인할수 있다.

vi모드 사용

vi 파일

 

기본모드 - 에디터모드

글자가 적히지 않음

 

i입력 - 글쓰기 모드(insert모드)로바뀜

insert 모드로 변경해서 b기능완료.txt에 "완"이라고 글 작성

esc입력 ->  insert모드에서 빠져나가기(다시 에디터 모드로 변경)

드라이버 모드로 돌아가기

shift+ : 드라이브 모드

shift : wq 

wq : 저장하고 종료

 

 

cat - 텍스트 파일(File)의 내용을 화면에 출력

에디터 모드에서 적은 "완"을 확인할수 있다.

 

b기능완료.txt를 git에 push

 

netflix_home폴더는 b기능완료까지 저장되었다.

 

 

netflix가 c기능을 추가하고 push해보기

-> c기능을 추가하고 push를 하면 형상이 다르기때문에 거절!!!

-->현재 master에는 a기능+b기능이 있고, c기능에는 a와b기능이 없으므로 형상을 맞춰줘야함(강제push 금지!!!)

 

pull로 merge해보기

git pull origin master 

git log 로그 확인

전체 push로그와 merge한것까지 확인할 수 있다.

 

git push origin master를 해준다.

- 이제 오류가 발생하지 않을것이다. 

 

새로운환경에서 시작하기전에  pull을 하고

최종적으로 올릴때 pull을한다.

2번 pull을 한다.

 

 

netflix_home에 형상 맞추기

- netflix_home에는 아직 a,b기능만 있는 상태이다.

 

git pull origin master 입력

git log로 확인해보면

동기화 완료

 

충돌시켜보기

 

netflix_Home폴더 자체에 d기능.txt생성

 

master에 push

-> 현재 형상이 같은 상태에서 d를 추가한것이니까 netflix_home과 git의 netflix로그가 같아짐

 

다시 netflix에 d기능.txt만들기

d.기능.txt 파일안의 내용을 수정해본다.

- 현재 같은 d.txt파일을 2명이서 수정중인 상황

 

 

push해보기

이렇게하면 큰일.. 오류 발생

- netflix와 netflix_home에서 push한 형상이 달라서 거부당합 (현재 git에 d기능이 있기 때문)

 

형상을 맞추기 위해 pull을 해본다.

CONFLICT 충돌발생 -> pull해서 같은 파일을 합치는 중 어디서 충돌이 났다고 알려줌!

 

해결방법

코드를 확인해보면

========기준으로 위에것을 사용할지 아래것을 사용할지 선택을 해야한다.

아래의 파란박스

1을 제외한 빨간박스를 삭제해주고 push를 해준다(1은 빨간박스 잘못넣은것이다...)

 

 

최종 git 결과확인을해보면 commit이 잘 된것을 확인할수있다.