협업(1) 로컬은 변함없는데 원격이 변한 경우

Hyun·2021년 10월 19일
0

깃 & 깃허브

목록 보기
6/7

내 로컬 저장소는 변함 없는데 원격 저장소는 변한 경우

pull 로 내 컴퓨터를 동기화 시킨다음(원격저장소와 내용이 같아짐), 추가로 코드를 작성하고
push 한다.

실습

github에 collaboration 레퍼지토리를 만들어준다. 내 컴퓨터에 collaboration 폴더를 생성하고 그 안에 test.txt 파일을 만들어준다. 내용으로 "첫번째 버전관리" 를 입력한다.

git init, git remote add origin <collaboration 레퍼지토리 url> 등의 기본작업을 해주고, add & commit & push 를 진행한다. (기본 코드 생략)



정상적으로 github의 collaboration 레퍼지토리에 push 된 것을 볼 수 있다.

만약에 누가 원격 저장소의 내용을 변경하였다면 pull 을 이용해 내 컴퓨터를 동기화 시킨다음 추가로 코드를 작성해 push 한다.

원격 저장소에서 내용을 변경해주었다.

pull 을 통해 내 컴퓨터를 원격 저장소와 동기화 시켜준다. 이전에 push 할때 -u 옵션으로 default 값을 설정해주었기 때문에 git pull 까지만 적으면 된다.

pull 을 통해 로컬에 새로운 버전을 등록하였기 때문에 git log 에서 두번째 커밋 로그가 생성된 것을 볼 수 있다.

정상적으로 내 컴퓨터가 원격저장소와 동기화 된 것을 볼 수 있다.

로컬 저장소와 원격 저장소가 각각 변했을 때(참고용)

만약 내 로컬 저장소와 원격 저장소가 서로 다른 내용으로 각각 변했다면,
git commit 으로 만든 버전을 push 할때, 그리고 git pull 로 만든 버전을 내 컴퓨터에 merge 할때 각각 충돌(conflict)이 생길 수 있다. 충돌된 상태를 conflict 상태라고 한다.

1. git commit 으로 만든 버전을 push 할때의 충돌

원격 저장소의 test.txt 파일의 내용을 변경해준다.

로컬 저장소의 test.txt 파일 또한 변경해준다.

두 저장소의 버전은 세번째 줄의 내용이 겹치게 된다. 로컬 저장소에서 push 할때 중복되는 부분에 있어서 로컬의 버전을 github 에 반영할지, 아니면 기존의 github 에 있던 버전을 그대로 반영할지 결정을 할 수 없기 때문에 에러가 발생한다.

2. git pull 로 내 컴퓨터에 pull 할때의 충돌

위와 마찬가지로, 내 로컬 저장소를 동기화 시킬때 중복되는 부분에 있어서 원격저장소의 버전을 동기화 할지, 아니면 기존의 로컬 저장소의 버전을 그대로 반영할지 결정할 수 없기 때문에 에러가 발생한다.

<<<<<<< HEAD======= 사이에 있는 부분이 기존에 로컬에 있던 내용이고, =======>>>>>>> ~~ 사이의 부분이 pull 하려고 하는 내용이다. 세번째 줄이 중복되기 때문에 이렇게 표시가 되고, 우리가 수동적으로 선택해서 사용할 수 있다.

만약 중복되는 것 중에서 "세번째 버전관리" 내용을 사용하고 싶으면 아래와 같이 중복되는 나머지 내용을 지우고 push 한다.

따라서 결과적으로 pull 을 사용한 다음 중복된 부분을 처리하고 다시 push 해준 결과를 볼 수 있다.

더 자세하고 디테일 한건 다음 글에서 알아보도록 하자.

profile
better than yesterday

0개의 댓글