[Git] GitHub 사용법(1): 원격 저장소와 지역 저장소 연결

한은기·2022년 1월 25일
1

Git

목록 보기
3/4
post-thumbnail

💾 지역 저장소와 원격 저장소

지역 저장소(local repository)는 작업하는 컴퓨터의 저장소를 말한다. 반면 원격 저장소(remote repository)란 로컬이 아닌 컴퓨터 혹은 서버의 저장소를 말한다.


😺 깃허브(GitHub)

협업과 백업에 있어 원격 저장소가 중히 쓰이는데, 깃과 더불어 원격 저장소의 기능을 웹에서 제공하는 서비스 중 하나가 깃허브(GitHub)이다. 깃허브로는 아래와 같은 일을 할 수 있다.

  • 원격 저장소에서 깃을 사용할 수 있다. 지역 저장소와 연결해 사용하기도 한다.
  • 지역 저장소를 백업할 수 있다.
  • 협업자(Collaborater)를 추가해 협업 프로젝트에 사용할 수 있다.
  • 깃허브에서 소스를 수정하는 등의 개발 이력을 남길 수 있다.
  • 타인의 소스를 살펴보거나, 오픈 소스에 참여할 수 있다.

깃허브를 시작하려면 깃허브 계정이 필요하니, 하나쯤 가입해주자!


😎 깃허브 레포지토리

깃허브에서는 저장소를 리포지토리(repository)라 한다. 원격 저장소를 만들거고, 지역 저장소를 원격 저장소와 연결하는 방법을 알아보자.

💻 깃허브에서 직접 원격 저장소 만들기

로그인 후 우측 상단의 [+] 버튼 - [New repository]를 눌러 필요 항목을 입력해 리포지토리를 만들 수 있다.

  • repository name: 저장소의 이름으로, 영문, 숫자, 언더바(_), 붙임표(-) 등을 사용할 수 있으며, 공백은 자동으로 붙임표로 바뀐다.
  • Public/Private: 공개 저장소로 할지, 비공개 저장소로 할지 여부이다.

  • Initialize this repository with a README: 저장소의 설명을 작성하는 파일 README 파일을 자동을 만드는 기능이다.
  • Add .gitignore: 어떤 언어와 관련된 것을 .gitignore 파일에 지정할지 선택한다. C++을 선택한다면 관련 컴파일 라이브러리나 실행파일 등을 깃에서 무시한다.
  • Add a License: 오픈 소스의 라이선스를 말한다.

깃허브 저장소의 접속 프로토콜(방법)을 지정할 수 있다. 웹 브라우저에서 접속할 때는 HTTPS를 사용하며, 뒤에 붙는 주소가 접속 주소가 된다. (SSH는 추후 다시 다룬다.)

보통 깃허브 접속 주소는 아래와 같은 형식을 가진다.

https://github.com/아이디/저장소명

🔔 리포지토리에 파일을 올리는 법
위 사진에서 몇 가지 방법이 제시되었다. 해당 내용은 아래에서 몇 가지를 볼 것이다.

  • creating a new file or uploading an existing file
  • create a new repository on the command line
  • push an existing repository from the command line
  • import code from another repository

➰ 지역 저장소를 원격 저장소에 연결하기

[1] 지역 저장소를 만든다. 만약 이미 만들어둔 저장소가 있다면 해당 저장소의 위치로 이동한 뒤 이 과정은 생략한다. 필자는 이전 포스팅([Git] Git 저장소 만들기 및 Commit)에서 이미 만들어둔 내용을 활용할 것이다.

$ git init git_test   # 디렉토리 만들기와 git 저장소 초기화를 동시에 함
$ cd git_test

[2] 문서 하나를 만들고 임의로 내용을 만든 뒤 커밋한다. 커밋 내역이 이미 있다면 이 과정은 생략한다.

$ vim hello.txt
$ git add hello.txt
$ git commit -m "M1"

[3] 이 저장소를 푸시함으로써 지역 저장소의 파일을 원격 저장소로 올릴 것이다. 깃허브의 원격 저장소 주소를 복사해 아래와 같이 입력한다.

여기서 origin은 붙여넣은 깃허브 저장소 주소를 가리키는데, 이 주소가 길기 때문에 origin이라 이름붙여 remote에 추가한다는 의미이다. 지역 저장소를 특정 원격 저장소에 연결하는 과정은 한 번만 수행하면 된다.

$ git remote add origin 복사한 주소

🔔 깃에서는 기본 브랜치를 master라 하고, 기본 원격 저장소를 origin이라고 한다.

[4] 잘 연결이 되었는지 확인하자. 아래 명령어를 수행했을 때 두 줄이 잘 나온다면 성공이다.

$ git remote -v


😆 깃허브 사용하기

🔼 원격 저장소에 파일 처음 올리기

푸시(Push)는 '민다'라는 뜻을 떠올리면 된다. 지역 저장소의 커밋을 원격 저장소로 (밀어)보내는 것이다. git push 명령을 사용한다.

$ git push -u origin master

위 명령은 지역 저장소의 브랜치를 origin(원격 저장소의 master 브랜치)로 푸시하라는 뜻이다. -u 옵션으로 지역 저장소의 브랜치를 원격 저장소의 master 브랜치에 연결하도록 하며, 이는 처음 한 번만 사용하면 된다. 만약 푸시 명령 후 로그인 창이 나타나면 깃허브 로그인을 진행하면 된다.

😥 깃허브 로그인 에러
만약 로그인 시 비밀번호가 맞지 않는다면서 오류가 뜬다면 아래 링크를 통해 해결하자. 깃허브에서 로그인을 할 때 비밀번호 대신 토큰을 사용해서 벌어진 오류일 것이다.

remote: Support for password authentication was removed on August 13, 2021. Please use a personal access token instead.
remote: Please see https://github.blog/2020-12-15-token-authentication-requirements-for-git-operations/ for more information.
fatal: Authentication failed for 'https://github.com/EunGiHan/test-github.git/'

참고링크) GitHub 토큰 인증 로그인 하기 - [오류 해결]

푸시 후 깃허브에 들어가 보면 원격 저장소로 파일이 올라간 것을 확인할 수 있으며, 파일 목록 위 commits으로 지역 저장소 커밋 내용이 동일하게 올라간 것을 볼 수 있다. 또한 파일명 옆 커밋 메시지를 클릭하면 어떤 내용이 어떻게 바뀌었는지 소스코드로 비교해 볼 수 있다.

원격 저장소에 다시 푸시할 때는, 이미 지역 저장소의 브랜치와 origin의 master 브랜치를 연결했으므로 이후부터는 아래처럼 간단히 할 수 있다.

$ git push

📝 깃허브 사이트에서 직접 커밋하기

지역 저장소가 없는 컴퓨터를 사용하는 등의 상황에서, 깃허브 사이트에서 직접 소스코드를 편집하고 커밋을 진행할 수 있다. [Add file]-[Create new file]로 파일을 새로 만들거나, 수정할 파일의 연필 모양 아이콘(Edit)로 편집을 할 수 있다.

여기서는 hello4.txt를 만들어보겠다.

🔽 원격 저장소에서 파일 내려받기

풀(Pull)은 Push의 반대로 당긴다는 뜻을 떠올리자. 원격 저장소에 수정되어 있거나 하는 등 지역 저장소와 상태의 차이가 있을 때, 지역 저장소의 파일 상태를 원격 저장소의 것과 같이 만드는 것이다. 원격 저장소의 소스를 (당겨)가져온다.

[1] 지금 원격 저장소의 상태는 지역 저장소와 다르게 hello4.txt가 만들어져 있다. 지역 저장소의 파일 목록을 출력해보자.

$ ls

[2] 원격 저장소의 변경 사항을 지역 저장소로 풀 해보자. 아래 명령은 원격 저장소인 origin을 master 브랜치로 가져온다는 뜻이다. 단순히 기본 원격 저장소와 지역 저장소의 기본 브랜치가 각각 origin, master로 되어 있으므로 git pull만 해도 명령은 유효하다.

$ git pull origin master

[3] 파일 목록과 깃 로그를 살펴보자. 원격 저장소에서 변경한 내역이 그대로 옮겨와 있다.

profile
🏫Inha Univ. Naval Architecture and Ocean Engineering & Computer Engineering (Undergraduate) / 🚢Autonomous Vehicles, 💡Machine Learning

0개의 댓글