[Git] 기초(7) 원격 저장소 작성, 푸시(Push)와 풀(Pull), 페치(Fetch), 클론(Clone)-GitHub 레퍼지토리 작성, 복제, 업로드, 다운로드

원격 스토리지(Remote Repository)에는 깃허브, 비트버켓 등 다양하게 있는데, 그 중에서도 가장 유명하고 활발한 플랫폼은 깃허브다.

원격저장소는 세계 어디서나 협업해 버전을 관리할 수 있는 일종의 클라우드와 같은 플랫폼이다.

GitHub는 그 가치를 인정받았는지 마이크로소프트(Microsoft)사가 75억달러(약 8조원)에 인수했다.

깃허브에 업로드되는 자료를 바탕으로 내놓은 통계다.

이를 통해 세계에서 가장 인기 있고 활발한 프로그래밍 언어를 확인할 수 있다.

Pull Requests Year 2021 Quarter 1 #Ranking Programming Language Percentage (Change) Trend 1 Java Script 18.756% (+0.053%) 2 Python 16.628% (+0.390%) 3 Java 11.680% (+0.742%) 4 Go 7.829% (-1.176%) 5Ruby 7.588% (+0.785%) 6C++6.98% (-0.439%) Type

GitHub

GitHub is where over 56 million developers shape the future of software, together.Contribute to the open source community, manage your Git repositories, review code like a pro, track bugs and feat…github.com

원래 일정 서비스 이상은 유료였지만 지금은 무료로도 웬만한 기능은 다 쓸 수 있다.

2019년 1월부터 무료 계정도 비공개 저장소를 만들 수 있게 됐다.

README.md 파일은 말 그대로 사용하기 전에 읽어 달라는 뜻이다.사용하기 위해서는 알아야 할 정보와 사용법, 비밀번호 등을 적어둘 수 있다.

확장자가 *.txt가 아니라 *.md인데, 이는 마크다운(markdown)을 의미한다.

*.ignore는 전술한 변경 삭제 방지용 파일이다.이 ignore 파일에 기록된 파일은 unstaged된다.

원격 스토리지 연결(Remote)

깃허브 저장소에 접속할 때는 HTTP 프로토콜을 이용하는 방법과 SSH를 이용한 방법이 있지만 웹 브라우저에서 접속할 때는 HTTP를 이용한다.

원격 스토리지와 연결하기 전에 연결할 로컬 저장소를 생성한다.

girremoteaddorigin 커맨드 뒤에 원격 스토리지 주소를 쓰면 자동으로 해당 디렉토리와 원격 스토리지가 연결된다.

gitremote-v 옵션을 사용하여 origin의 주소를 확인할 수 있다.

만약 remote를 틀렸다면 두 가지 방법이 있다.

  1. gitremoteset-urlorigin 명령어로 원격 스토리지url 설정을 다시 시작
  2. 2. gitrremoteremoveorigin 명령어로 연결된 원격 저장소를 삭제하고 다시 add한다.

푸시(Push)와 풀(Pull)

로컬 저장소에서 원격 저장소로 업로드하는 것은 푸시(Push)라고 하며, 반대로 원격 저장소에서 다운로드하는 것은 풀(Pull)이라고 한다.

gitpush-uorigin master는 지역 저장소(master)를 원격 저장소(origin)와 연결하는 명령어이다.

-u옵션은 처음에 한번만 사용한다.

gitstatus를 하면 평소와는 다른 메시지가 뜬다.마스터 브랜치가 origin/마스터 브랜치로 최신화되었음을 의미한다.

원격 스토리지를 리로드(F5)해 확인해보니 새로 업로드된 것을 확인할 수 있다.

여기서 알 수 있는 것은 로컬 저장소로 커밋한다고 해서 그대로 업로드 되는 것이 아니라 푸시를 해야 업로드된다는 것이다.

즉, 파일의 생성/변경-ad/commit-push 등의 과정을 거쳐야 한다.

그럼 반대로 원격 저장소에서 다운받아보자.

텍스트 파일 f1.txt를 삭제하고 커밋한다.

이후 새로고침을 하면 원격저장고에도 사라진 것을 볼 수 있다.

이번에는 로컬 저장소가 아닌 원격 저장소로 새로 파일을 만든다.

형식과 내용은 적당히 한다.

커밋 메시지도 뭐든 쓴다.

새로운 파일이 생성되었다.

로컬 저장소에서 확인해보니 아직 최신화가 되지 않았다.

gitpull을 해주면 원격 저장소에서 만든 파일인 f2.txt가 생겼음을 알 수 있다.

속치(Fetch)

fetch는 불러온다는 뜻을 가지고 있다.

pull이 무조건 임포트(다운로드)였다면 fetch는 다른 점을 확인해 마음에 들면 다운받을 수 있도록 하는 기능이다.

즉 선별적으로 커밋을 최신화할 수 있다는 뜻이다.

동일한 방법으로 원격 스토리지에서 파일을 생성한다.

gitfetch 명령은 커밋 내용을 불러온다.

ls 명령어로 파일 목록을 확인해보니 f3.txt가 보이지 않는다.

gitstatus를 하면 yourbran chisbehind~~~라고 나온다.

즉 아직 최신화되지 않았다는 얘기다.좀 더 정확히 말하면 커밋 포인터(HEAD)가 1분 늦어지고 있다는 뜻이다.

fetch의 포인터인 FETCH_HEAD에서 브런치를 이동할 수 있다.

FETCH_HEAD 브랜치와 병합(merge)을 하면 f3.txt가 다운로드되었음을 확인할 수 있다.

브런치를 잘 구분할 줄 알아야지.

로컬 저장소 마스터와 HEAD가 있듯이 원격 저장소에는 origin/master, origin/HEAD가 존재한다.

포인터를 혼동해서는 안 된다.

원격 저장소가 근본(?)이기 때문에 origin이라는 이름이 붙은 것이다.

클론(Clone)

클론(Clone)은 말 그대로 복제하는 것이다.

깃허브가 공개된 플랫폼인 만큼 다른 사람이 작업한 내용을 서로 공유할 수 있는데, 이때 다른 사람의 프로젝트를 다운로드할 때 사용한다.

gitinit와 gitremote 명령을 합친 것이 gitclone이다.

폴더 하나를 생성한 후 gitclone 주소를 하면 그대로 복제된다.

error: Content is protected !!