원격 저장소 - Github

Violet_Evgadn·2023년 9월 3일
0

Git

목록 보기
6/33

지금까지 로컬 저장소를 만들어보고 그곳에 커밋까지 해보았다.
하지만 협업을 위해선 로컬 저장소에서 작업한 것을 모두가 공유할 수 있는 협업 장소에 등록해야 한다.

그리고 Git에서는 이러한 협업 공간(공유 공간)을 "레포지토리(Repository)"라고 부른다.

이전에 말했듯, Github 같은 Git 호스팅 사이트는 이런 레포지토리를 제공해 줌으로써 협업 공간을 제공해 주는 것이다.


원격 저장소 만들기

1. 깃허브 로그인 & [New Repository] 선택

2. 원하는 설정대로 Repository 생성

Repository Name

Github는 레포지토리 이름으로 원격 저장소 주소를 만들기 때문에 레포지토리 이름이 프로젝트를 잘 드러내고, 웬만하면 영어로 만드는 것을 추천한다.

알다시피 터미널에 한글을 입력하는 것은 쉽지 않은 과정이다.

Description

Optional(입력 선택) 값이다.
필자는 과거에 거의 쓰지 않았지만 최근에는 웬만하면 간단히 프로젝트에 대한 설명을 쓰는 편이다.

Public / Private

레포지토리의 공개 범위를 정하는 선택 값이다.

  • Public : 모든 사람이 레포지토리를 읽을 수 있음
  • Private : 레포지토리 주인이 허용한 사람만이 레포지토리를 보고 커밋 할 수 있음

Add a README file

리드미 파일(README file)이란 마크다운 언어를 활용해 코드를 보는 사람들에게 프로젝트를 구체적으로 설명해 주는 가이드북이라고 볼 수 있다.

모든 프로젝트는 README 파일을 통해 설명되는 것이 좋으며 Add a README file을 추가하면 Github 측에서 알아서 기본 Template의 README.md 파일을 생성해 준다.

Add .gitignore

.gitignore은 뒤에서 배우겠지만 Github에 올리면 안 되는 개인정보 파일이나 DB 정보 파일 등을 커밋 자체가 불가능하도록 막는 파일이라고 할 수 있다.

이 파일은 대부분의 경우 IntelliJ 같은 작업 공간에서 만드는 것이 일반적이므로 굳이 Github 측에서 추가시키지 않아도 된다.

Choose a license

Github 소스 코드에도 저작권이 엄연히 존재한다.
하지만 이를 선택하기 위해선 법을 잘 알아야 하고, 이 값이 필요할 때쯤이면 회사에 이미 이런 걸 담당하는 법률 전문가가 있을 것이므로 자세히 알 필요는 없다.

3. 원격 저장소 주소 복사

빨간색 네모 안에 있는 값이 Github 원격 저장소 주소이다.
협업하고 싶은 다른 개발자에게 이 주소를 알려주면 협업이 가능해지며, 로컬 저장소와 연결할 때에도 사용된다.


원격 저장소와 로컬 저장소 연결

1. Git Bash 열어 연결시켜주기

git remote add origin [원격 저장소 주소]

로컬 저장소와 원격 저장소를 연결시켜주는 명령어는 git remote add이다.
이때 Git Bash의 Working Directory는 원격 저장소와 연결시켜주고 싶은 로컬 저장소의 .git 폴더가 존재하는 폴더여야 한다.
(즉, .git 폴더의 상위 폴더)

git remote add 부가설명

git remote add origin ~는 원격 저장소를 origin이라는 이름으로 추가하라는 뜻이다.
즉, git remote add - 원격 저장소 추가, origin - 원격 저장소 이름이 되는 것이다.

만약 origin이 아닌 myOrigin 같이 다른 이름으로 설정한다면 해당 이름으로 원격 저장소 이름이 지정될 것이다.

하지만 대부분의 Git GUI 툴이나 IntelliJ 같은 작업 공간에선 원격 저장소 이름을 “origin”이라고 설정하기 때문에 혼란을 막기 위하여 무조건 origin을 사용하는 것이 좋다.

2. 브랜치 생성

이 부분은 나중에 브랜치와 명령어를 배우며 자세히 배울 것이지만, 일단 지금은 실습을 해야 하니 따로 설명을 하지 않고 설명만 하겠다.

git branch -M main

위 명령어를 입력하면 원격 저장소에 "main"이라는 브랜치가 생성된다.

3. 원격 저장소에 로컬 저장소 작업물 저장

로컬 저장소에 있는 커밋들은 원격 저장소에 "Push" 과정을 통해 저장할 수 있다.

명령어는 아래와 같다.

git push origin main

이를 좀 풀어서 설명하면, "원격 저장소(origin)의 main이라는 브랜치에 로컬 저장소의 커밋들을 올려라(push)"라는 의미를 가진다.

4. Github 원격 저장소 확인

성공적으로 로컬 저장소의 작업물들이 등록되었음을 확인할 수 있다.

error: src refspec main does not match any

아마 순서대로 실습했을 때 3번 과정에서 위와 같은 문구가 나오며 실패할 때도 있을 것이다.

이를 알기 위해선 Git의 특성을 알아야 하는데, 바로 Push 할 때 로컬 저장소의 브랜치 이름과 원격 저장소의 브랜치 이름이 같아야 한다는 것이다.
즉, 내가 "branch"라는 이름의 원격 저장소 브랜치에 로컬 저장소의 작업물을 Push 하고 싶다면 로컬 저장소의 브랜치 이름 또한 "branch"여야 한다는 것이다.

그리고, 둘의 브랜치 이름이 같지 않을 때 위와 같은 에러 문구가 발생한다.

우리는 위에서 "main"이라는 브랜치 이름을 사용했다.
이는 Github에서 2021년 10월 이후로 Black Lives Matter 운동에 동참하며 노예와 주인을 떠오르게 하는 "master"보다는 "main"을 메인 브랜치 이름으로 사용하기로 했기에 이에 따른 것이다.

하지만 Git Bash에서는 아직 Default 메인 브랜치 이름이 "master"로 설정되어 있다.

git show-ref

따라서 로컬 저장소의 메인 브랜치 이름을 master -> main으로 바꿔주면 된다.
방법은 아래 명령어를 입력하면 된다.

git branch -m master main

브랜치 이름이 main으로 정상적으로 바뀌었음을 확인할 수 있다.

마지막으로 이런 일이 다시는 발생하지 않도록 Default 메인 브랜치 이름이 main으로 만들어지게 전역 설정을 해두자.

git config --global init.defaultBranch main  
profile
혹시 틀린 내용이 있다면 언제든 말씀해주세요!

0개의 댓글