DevOps/GIT

github#10 git push and pull

aliceintr 2020. 11. 24. 00:30
반응형

 

git pull

여러대의 컴퓨터가 협업을 할 때 사용하는 기능인 git push 와 pull 에 대해 알아 보자.

 

항상 업무를 시작하기 전에 git pull 명령어를 이용해서 최신 코드를 git remote 저장소로 부터 가지고 온다.

git pull [github ssh or http]

만약 pull 을 하지 않으면 원격저장소와 지역저장소의 코드 gap 이 발생하기 떄문에 작업 이후 push 하면 rejected 당할 수 있다.

따라서 pull 을 하고 원격저장소의 코드와의 코드 병합과 conflict를 해결한 후 push 를 다시 해준다.

 

만약에 git pull을 실수로 했다면 병합하기 이전 상태로 돌릴 수 있는데 이를 위해서는

/ORIG_HEAD 오브젝트의 나온 정보를 이용하면 된다.

 


git fetch

git fetch 명령어는 pull 과 유사하나 하나의 큰 차이가 있다.

git fetch 를 하게 되면

로컬저장소의 commit 은 즉 (HEAD -> master) fetch 명령어를 하기 전의 commit ID 를 가르키고 있지만

원격저장소의 commit 은 즉 origin/master는 다른 commit ID 를 가르킨다. 에를 들어, 누군가가 원격저장소에 commit 을 push 했고 이 commit 내용이 8이라고 하면, origin/master 는 8이라는 commit 포인팅한다.

 

이런경우, 원격저장소의 commit 이 로컬저장소의 commit을 한단계 앞서 가 있다고 볼 수 있다.

 

따라서 이런경우 git diff HEAD origin/master 명령어로 둘 사이의 차이점을 확인한 후 merge 해준다

git merge origin/master

 

pull :  원격저장소로 부터 내용을 가지고 온 후 병합

fetch : 원격저장소로 부터 내용을 가지고 온 후 병합X 

 

 

 


원격저장소의 원리

git remote 명령어를 통해 원격저장소와 연결을 시도하고

(자세한 내용은 아래 글 참조)

 

[IT/DevOps] - github#9 git remote repository

 

github#9 git remote repository

다른사람과의 협업이나 나의 코드 백업을 위해서는 원격저장소가 remote repository 가 필요하다. 전체적인 흐름을 보면 아래와 같다. 1. local 과 remote repository 개념 이해하기 이번 실습은 remote reposito.

buildgoodhabit.tistory.com

 

 

 

그 후에 gistory 에서 /config 오브젝트를 확인하면 원격저장소 연결 정보를 확인 할 수 있다.

 

 

 

 

 

gistory 사용법은 아래 링크를 클릭하세요

[IT/DevOps] - github#3 gistory and git rm

 

github#3 gistory and git rm

1. Python 설치하기 www.python.org/downloads/release/python-390/ Python Release Python 3.9.0 The official home of the Python Programming Language www.python.org 2. gistory Mac 설치하기 파이썬 설치를..

buildgoodhabit.tistory.com

 

 

 

 

 

또한 git 에서 upstream 이란 표현은 로컬저장소 입장에서 보았을 때 원격저장소를 의미한다.

만약에 git push 를 했는데 아래와 같은 에러가 뜬다면 git 로컬저장소의 브랜치와 원격저장소의 브랜치를 연결해 줘야 함을 의미한다.

%git push
fatal : The current branch master has no upstream branch. 
To push the current branch and set the remote as upstream
use 
git push --set-upstream origin master

 

 

 

 

push 후에 gistory 확인해보면 push 된 commit 정보를 ./refs/remotes/origin/main(master 브랜치 이지만, 이름이 main) 에서 볼 수있다.

정리하자면

./refs/remotes/origin/main (or master) : remote repository commit history 볼 수 있음 즉, remote repository 로 Push 된 commit 들만 확인가능

 

./refs/heads/main(or master) : 로컬 저장소의 commit 기록을 볼 수 있음.

 

 

 

내용이 도움이 되셨다면 블로그 구독하기 부탁드리겠습니다.

* 이 글의 모든 저작권은 aliceintr에 있으며 무단 배포 및 사용은 자제해 주시기 바랍니다. *

반응형

'DevOps > GIT' 카테고리의 다른 글

github#12 git rebase 기초  (0) 2020.11.26
github#11 git tag 와 branch 차이  (0) 2020.11.25
github#9 git remote repository  (0) 2020.11.21
github#8 git stash  (0) 2020.11.20
github#7 3 ways merge  (0) 2020.11.20