[Github] 원격 저장소 - 1

haejun-kim·2020년 7월 7일
0

[Git & Github] 

목록 보기
3/3
post-thumbnail

원격 저장소(remote repository)에 대해서 알아보자.
지금까지는 작업한 결과물들을 지역 저장소(local repository)라 불리는 내 컴퓨터에만 저장을 했다면 이제는 인터넷의 어딘가에 올려서 백업을 하고, 다른사람들과 협업을 하는 등의 작업을 할 수 있는 저장소를 원격 저장소라고 한다.
원격 저장소의 가장 중요한 두가지 기능은 다음과 같다.

  1. 버전(소스코드)을 백업한다.
  2. 다른사람과 협업을 한다.

local 원격 저장소 생성

git init --bare remote(만들고싶은 저장소 이름)

--bare 명령어는 저장소의 기능만 수행하는 저장소를 만드는 옵션이다. 따라서 위의 명령은 remote라는 저장소를 만들겠다. 라는 것을 의미한다.

push

지역저장소의 내용을 원격저장소로 업로드할 때 사용하는 명령어가 push다.

git push --set-upstream origin master

위여 명령을 조금 세분화해서 해석해보자.

git push origin master

=> 현재 master 브런치를 push할 때 originmaster branch로 push한다.

--set-upstream

=> 앞으로 master branch에서 push 명령을 내리면 자동으로 origin의 master branch로 push 하겠다는 명령이다. 즉, 현재 local branch와 remote branch 사이에 명시적으로 연결을 셋팅해주는 명령이다.


Github - 오픈소스 활용방법

먼저 오픈소스의 코드를 확인하고, 본인이 직접 편집할 수 있는 방법을 알아보자.
github.com/git/git 사이트로 들어가보자.

오른쪽에 초록색 박스로 code라고 적힌 버튼이 있다. 이 버튼을 누르면

이런 창이 뜨는데, 보라색 테두리의 주소를 복사하면 된다. 이제 터미널로 넘어가서 복사한 코드를 작업을 진행할 폴더에 들어가서 다음의 명령어를 입력해준다.

git clone (복사한 주소) (생성할 폴더 이름)

cloning이 완료되면 본인이 생서할 폴더의 이름을 가진 폴더가 생겼을 것이고, 그 폴더의 안으로 들어가서 내부 파일 목록을 조회해보면 굉장히 많은 목록들이 보인다.

로그 확인하기

git log

역순으로 log 확인하기

git log --reverse

첫번째 커밋의 소스코드 확인하기 ( 원하는 커밋버전의 소스코드 확인하기 )

  • commit ID를 복사한다.
  • 다음의 명령을 입력한다.
git checkout (복사한 commit id)
  • 디렉토리 목록에 나오는 여러 파일들을 이제 열어보고 편집할 수 있게 된다.

Github - 원격 저장소 만들기

로컬환경에서 작업한 결과물을 원격 저장소에 올리기

만약 본인이 작성하고 있는 프로그램을 Github에서 새로 생성한 원격 저장소에 올리려면 자신의 프로젝트 폴더에 들어가서 다음의 명령을 입력해준다.

git remote add origin (올리려는 github repository 주소)

이 명령어는 현재 로컬 저장소에 'remote repisitory를 add 시킬거고, 그 remote repository는 다음의 주소 이다. 그리고 origin이라는 별명을 부여하겠다.' 라고 git에게 알려주는 동작이다. 명령이 정상적으로 수행하면 아무런 메세지도 출력되지 않는다. 제대로 동작했는지 확인하기 위해선 다음의 명령을 입력한다.

git remote

라고 명령했을 시 방금 생성한 origin이라고 출력된다면, 정상적으로 origin이라는 원격저장소가 만들어진것이다.
추가적으로

git remote -v

의 명령어로 입력하면 조금 더 상세하게 주소까지 확인할 수 있다.
origin은 나의 로컬저장소와 연결지어있는 기본적인 원격저장소 (주로 동기화하는, 메인이 되는)의 이름을 통상적으로 origin이라고 짓는다.
이제 연동을 시켰으니 실제로 로컬에서 원격저장소로 밀어주면 된다.

git push -u origin master

origin의 저장소 중에 master branch로 push(동기화)하겠다. 라는 뜻이다.
-u는 원격저장소와 master branch를 자동으로 연결시키는 명령이다. 이 명령어는 처음에 한번만 사용해주면 되고, 이 명령어를 사용했다면 다음부터는 git push만 입력해주어도 자동으로 push동작을 수행한다.
push까지 수행한 후 github 사이트로 넘어가서 페이지를 새로고침해보면 커밋한 파일이 정상적으로 github에 등록이 된것을 확인할 수 있다.

반대로, 원격저장소에 있는 파일을 로컬환경으로 가지고오고싶다면 이 글의 가장 위에서 언급한것처럼 주소를 복사해와서 clone하면 된다.

Github - 동기화 방법

이번에는 두개의 지역저장소가 하나의 원격저장소를 중간매개로 해서 작업을 동기화하는 방법을 알아보자. 먼저 원격저장소의 주소를 가져와서 로컬환경에서 두개의 지역저장소를 클론한다. 통칭 home, office라 하겠다. 그럼 현재는 home, office 저장소의 내용은 같을것고, 여기서 home는 집에서 작업을 한 후 원격저장소에 올리는 경우이며, office는 회사에 출근해서 원격 저장소의 내용을 가지고 오는 경우라 가정한다.

home

여기서는 위에서 배운 내용과 동일하다. 클론해 온 내용에서 본인이 필요한 작업을 하고 add하고 commit해주고 마지막으론 push해주면 된다.

office

git pull

지역저장소의 입장에서 원격 저장소의 내용을 당겨오겠다는 뜻이다. 그러면 현재 master branch의 위치에 있고, 이 master branch는 origin에 연결되어 있을것이다.(cloning했기 때문)
이제 원격저장소의 내용들이 로컬로 당겨와졌으니 본인의 작업을 수행하면 된다. 작업을 끝마친 후에는 동일하게 add, commit, push를 해주면 된다.


Github - ssh를 이용해서 로그인 없이 원격저장소 사용하기

ssh = Secure Shell에 대해서 알아보자. 먼저 Github 사이트에서 내 원격저장소 주소를 복사해왔던 화면을 보면

Clone with HTTPS라는 문구와 그 오른쪽에 Use SSH가 있다.

  • Clone with HTTPS : 특별히 복잡한 개념이나 설정을 하지 않고도, ID와 PW의 입력만으로도 원격저장소에 push할 수 있다는 장점이 존재하나 push 또는 원격저장소에 접속할 때마다 ID와 PW를 입력해야하는 번거로움이 있다.
  • Clone with SSH : 매번 로그인을 하지 않아도 되기때문에 많은 번거로움을 덜어주는 장점이 있다.
    ( SSH도 HTTPS처럼 대등한 관계의 통신 방법일 뿐 자동로그인을 위한 수단은 아님! 그저 로그인에서의 편의성을 제공하는 통신 방법 )

ssh-key 생성

터미널을 열고 다음의 명령을 입력해보자

ssh-keygen

입력을 하면 세번의 물음이 나오는데 모두 입력없이 그냥 엔터를 눌러주면 다음과 같은 화면이 출련된다.

여기서 파일 경로 중 id_rsaid_rsa.pub에 주목하자.
id_rsa : private key. 비밀번호가 저장되어 있는 파일. 자신의 로컬 컴퓨터에 저장됨. 절대 유출되면 안되는 파일.
id_rsa.pub : public key. 공개된 정보가 저장되어 있는 파일. 원격저장소가 있는 서버컴퓨터에 저장됨. 접속하고자하는 컴퓨터에 저장을 해놓으면 자동로그인이 가능.

Github라는 서비스를 사용하기때문에 직접 서버컴퓨터에 접속하는 복잡성은 감당하지 않아도 된다. 그저 Github이 제공하는 웹사이트를 통해 public key를 저장해주면 된다. 이제 ssh파일이 저장되어있는 경로로 들어가서 id_rsa.pub파일의 내용을 확인해보자.

cat id_rsa.pub

상당히 복잡한 내용의 여러 문자열(?)들이 출력된다. 이 내용을 잘 복사해서 Github 페이지로 들어간다.

github에 ssh 등록

Github 페이지의 우측 상단에 내 프로필을 눌러보면 아래 사진처럼 Settings가 있다.
여기로 들어가자.

좌측에 SSH and GPG keys 항목에 들어가 SSH keysNew SSH key 버튼을 누르고 항목을 작성해준다. Title에는 본인이 알아볼 수 있는 제목, Key에는 터미널에서 복사한내용을 입력해준다.
이 작업은 Github의 서버컴퓨터에 내 public key를 등록한 과정이다.
이제 본인의 저장소를 만들때 git url을 https가 아닌 ssh 주소를 복사해와서 위에서 했던 내용처럼 입력해주면 된다.

ssh 사용

git clone (git-ssh 주소) (만들 디렉토리 이름)

위 명령어를 입력하면 한번도 접속하지 않은 컴퓨터인데 접속을 계속하겠냐는 보안적인 문구가 출력되고 yes를 입력해주면 다음으로 넘어간다. 새로운 파일을 만들어보고 add, commit, push 과정을 진행해본다. 여기서 push가 제대로 동작한다면 정상적으로 ssh방식으로 로그인을 성공한거다.


0개의 댓글