원격저장소와 Github - 2

2019. 10. 3. 10:29드론

수월한 git 튜토리얼을 위해 원격 저장소를 새로 생성하려고 한다. README 파일은 체크 해제하고 생성하는데 이 이유는 fetch 과정에 있다

 

 

로컬 저장소에 디렉토리를 만들고 clone을 하도록 한다. 하지만 파일이 없기 때문에 clone은 실패한다

$ mkdir github_tutorial
$ cd github_tutorial
$ git clone https://github.com/surinoel/github_tutorial.git

 

웬만하면 모든 절차는 github에서 친절히 알려주고 있다

 

원격 저장소와 로컬 저장소를 원격으로 연결하려고 한다

$ git init
$ git remote add origin https://github.com/surinoel/github_tutorial.git
$ git remote -v

 

성공적으로 연결된 모습이다

 

push를 통해서 원격저장소에 로컬저장소 파일들을 넘길 수 있다

$ git config --global user.email ""
$ git config --global user.name ""
$ git push -u origin master

 

모든 브랜치에 대해서 push를 하고 싶다면

$ git push origin --all

 

이제 본격적으로 가장 중요한 fetch와 pull을 알아보려고 한다. 원격 저장소를 이용하다 보면 다른 누군가(협력자)가 커밋할 경우가 있다. push를 할 경우에는 로컬과 원격을 서로 맞춰야 한다. 만일 맞춰지지 않는다면 push가 되지 않는다. 이럴 때 하는 것이 fetch며, 사용자는 로컬로 가져온 커밋들을 자신이 여태까지 한 로컬 저장소의 작업과 적절히 병합해서 원격 저장소에 제출해야 한다

 

위에서 말한 fetch와 관련한 명령어는 fetch와 pull 크게 두 가지가 있다. pull은 자동으로 로컬 저장소와 병합까지 수행한다. 하지만 fetch와 merge를 자동으로 동시에 수행하는 것은 큰 단점이 있다. 어떤 내용이 바뀌면서 가져오는지 모르기 때문에 추천하지 않는다. fetch는 커밋을 가져온 후 사용자가 수동으로 병합을 하게 된다

 

hello.py를 웹 상에서 수정을 해보자. 그러면 원격 저장소에 하나의 커밋이 새로 만들어졌기 때문에, 로컬과 커밋이 맞지 않는다.

 

 

그리고 로컬에서 push를 하면 에러가 뜬다. fetch를 우선적으로 하라고 명시하고 있다

 

$ git merge [tab] 

 

$ git merge origin/master
$ git diff
$ vim hello.py

 

git diff는 로컬 저장소의 브랜치와 원격 저장소의 브랜치 사이에 어떤 차이점이 있는지 미리 알아보는 명령이다. 변경사항을 정확하게 확인한 후 병합을 실행할 수 있다

 

다음과 같이 수정한 후 commit을 하면 (master|MERGING)이 master로 수정된다

 

마지막으로 push를 한 후 수정된 파일을 확인할 수 있다

 

[출처] 만들면서 배우는 Git, Github 입문 윤웅식

'드론' 카테고리의 다른 글

Github 이슈 트래커 작성  (0) 2019.10.04
git commit --amend  (0) 2019.10.04
Git untracked content 해결하기  (0) 2019.10.02
원격 저장소와 Github - 1  (0) 2019.10.02
.gitignore 작성하기  (0) 2019.10.02