SH 개인공부용 문제 해결 정리

1. 패치 (fetch)

원격에 있는 저장소의 정보를 가져와서, 로컬에 있는 저장소의 정보를 갱신합니다

로컬 브랜치는 영향을 받지 않습니다.

변경되는 것은 로컬 저장소입니다

 

2. 풀 (pull)

현재 지정된 로컬 저장소의 브랜치(왼쪽 브랜치 목록에서 굵은 색인 것)에 대해서,

현재 지정된 원격 저장소의 브랜치 정보가 더 최신이라면 그 정보를 가져와서 반영합니다

로컬 브랜치가 바로 영향을 받습니다

변경되는 것은 로컬 저장소입니다

 

3. 푸시(Push)

현재 지정된 로컬 저장소의 브랜치가

현재 지정된 로컬 저장소의 브랜치의 원격 브랜치 정보보다 최신이라면 그 정보를 업데이트하여 올립니다.

변경되는 것은 원격 저장소입니다

 

여기서 하려고 하시는 것은 2번의 풀이며, 에러 메시지는 풀 땡기기 전에 작업한 내용을 모두 커밋하라는 내용입니다.

 

 

커밋해야할 때 풀 땡기고 머지하고 커밋하는게 아니라

1. 커밋을 한 후에 

2. 페치하여 원격 저장소의 변경이 있는지 확인하고

3. 원격 저장소의 변경이 있다면 로컬 브랜치와 원격 브랜치를 머지하고

   -> 브랜치명이 branch라면  brach가 로컬, origin/branch가 원격 이므로 이 둘을 머지

       다른 사람이 origin/branch를 수정했다면 현재 자신의 branch와 origin/branch가 다른 경로로 나뉘어져 있으므로 이를 합쳐야 함.

4. 커밋 후

5. 푸시하면 됩니다.

 

위와 같이 한다면, 소스트리의 그래프는 1자로 가다가  양갈래길로 잠깐 나뉘어졌다가 작성자님에 의해 다시 길 하나로 합쳐지는 형태가 됩니다. 

 

참고로 풀이나 페치가 전부 원격으로부터 로컬을 갱신하는 것인데 가장 큰 차이점은

풀을 땡기면 바로 현재 브랜치에 적용이 되는 것이고

페치는 정보만 가져오므로 원격과 로컬 브랜치 상황이 다르다는걸 볼 수 있어, 이 괴리감? 을 해결하기 위해 머지 수행 후 반영할 수 있다는 것입니다

 

로컬 브랜치와 로컬 브랜치 사이를 이동할 때는 커밋을 하지 않아도 작업 내역을 옮겨 다닐 수 있지만 (커밋 하기 전)

원격 브랜치를 로컬 브랜치로 땡겨올 때는 커밋을 해야합니다

 

그리고 DPJ님 말씀처럼 커밋 후 풀을 땡기는 경우든

제가 말한 것 처럼 커밋 후 페치하고 머지 후(여기서 컨플릭트) 커밋하고 올리든

같은 파일의 같은부분을 수정했다면 컨플릭트가 나는데, 이거는 머지툴 등을 활용해서 해결 후 커밋하면 됩니다.

 

출처 : OKKY - 소스트리 사용법을 잘 모르겠습니다. 조언 부탁드립니다.

공유하기

facebook twitter kakaoTalk kakaostory naver band
loading