GitHub에서 본인 프로필에 들어가시면 repository 탭이 있습니다. 여기서 new를 클릭해 주시면 새로운 remote repository(원격 저장소)를 생성할 수 있습니다.
레포지토리를 생성할 때 주의할 점은 원격 레포와 로컬 레포의 이름이 같아야 한다는 것입니다. 그래서 만약 이미 로컬에 레포를 만들어놓으셨다면 원격에서도 같은 이름으로 지정해 주셔야 git이 레포를 찾을 수 있습니다!
repository name: 원하는 레포명 (필수)
description: 레포 설명 (선택)
public or private: 레포 공개 옵션 설정
private repo는 깃허브 잔디가 안 찍혀서 저는 보통 public으로 합니다 (아직 프로젝트만 하는 학생이라,,)
add a readme file: readme파일을 자동으로 추가하고 싶다면 체크해 주세요.
자동 추가는 readme 파일에 레포 이름만 포함되어 들어갑니다.
add .gitignore: .gitignore 파일을 생성할 예정이라면 미리 체크해서 파일을 만들어 주세요.
지금 체크 안 하셔도 나중에 직접 만드시면 되고, 만드는 방법도 어렵지 않아 현재 단계에서는 생략하셔도 됩니다.
저는 레포 이름은 test, description은 작성하지 않았고, public 레포 설정, readme와 .gitignore는 포함하지 않았습니다.
저와 같이 레포를 생성하시면 위와 같이 레포가 만들어져 있을 겁니다. 가장 아래에 있는 박스를 보시면 github가 친절히 어떻게 레포를 만들고 원격과 로컬을 연결하는지 알려주고 있습니다. 이제 이걸 바탕으로 로컬 레포와 원격 레포를 연결해 보겠습니다!
✌🏻 원격과 로컬 레포 연결하기
원격 레포와 로컬 레포를 연결하는 방법은 두 가지가 있습니다.
1) git clone을 통해 로컬 저장소를 만드는 동시에 원격 저장소에 연결하는 방법
2) 노트북에 폴더를 만든 후 git remote add 명령어를 사용해 원격 저장소와 연결하는 방법
저는 보통 1번 방법을 사용하는데 이미 만들어져 있는 폴더를 원격 저장소와 연결하고 싶을 땐 상황에 따라 2번 방법을 사용합니다.
1) git clone을 통해 로컬 저장소를 만드는 동시에 원격 저장소에 연결하는 방법
우선 원격 레포지토리의 url을 복사합니다.
그 후 vscode에서 clone repository를 클릭한 다음, 복사한 url을 붙여 넣습니다. 그럼 directory를 선택하라고 할 텐데 이때 원하는 경로를 직접 선택해 주시고 open 해주세요.
만약 터미널 명령을 통해 git clone을 받아오고 싶으시면 원하는 경로에서 git clone 명령을 사용해 받아올 수 있습니다,
오류가 나오는 이유는 같은 경로에 test라는 디렉터리가 이미 존재하기 때문입니다.
💡 여기서 주목해야 할 점은 .(온점)의 유무입니다. - git clone https://github.com/yugyeongh/test.git 현재 위치한 경로에 test라는 폴더를 만들기 - git clone https://github.com/yugyeongh/test.git. 현재 위치한 경로에 test 안에 있는 폴더들 혹은 파일들을 풀기
👉🏻 즉, 온점이 없다면 test 폴더를 현재 위치한 경로에 가져오는 것이고, 온점이 있다면 test 폴더를 현재 위치한 경로에 풀어 test 안에 있는 파일이나 폴더들을 해당 경로로 가져오는 것입니다.
그럼 이제 네모박스처럼 test라는 폴더가 열린 것을 볼 수 있습니다. 터미널을 확인해도 test 디렉터리로 들어와 있음을 알 수 있습니다. 터미널을 여는 방법은 ctrl + shift + ` 입니다. 그리고 터미널에서는 master 브랜치인 것을 볼 수 있는데 github 원격 레포의 default 브랜치로 설정이 된 것입니다. 만약 main으로 나오신다면 해당 레포의 default 브랜치가 main이라 그런 것이니 저와 다르다고 이상한 것이 아닙니다!
혹시 터미널 설정을 하지 않아 깃허브 브랜치가 나타나지 않는다면 아래 글을 참고해 주세요.
git remote -v 명령을 사용해 원격 레포지토리와 잘 연결되어 있는 것을 확인했습니다. 이렇게 원격 저장소에 만들어져 있는 폴더를 로컬 저장소에 만들고 깃허브와 연결하는 첫 번째 방법은 끝입니다.
🥸 정리하자면 1. git clone 깃허브주소 2. clone 받은 폴더의 경로에서 git remote -v 명령을 통해 원격과 로컬 저장소 연결 확인
2) 노트북에 폴더를 만든 후 git remote add 명령어를 사용해 원격 저장소와 연결하는 방법
우선 왼쪽 아래 사진과 같이 새로운 폴더를 만들어 주겠습니다. 이미 폴더가 있으신 분들은 생략하셔도 좋습니다. 폴더를 open 한 뒤, 터미널을 열어보면 위에서 봤던 터미널과 달리 master 브랜치에 연결이 되어 있지 않습니다.
(1) git init
우선 git init 명령을 통해 로컬 저장소 안에 .git 폴더를 만들어줍니다. .git 폴더가 만들어졌기 때문에 master 브랜치가 생성되었는데요, 아직 원격 저장소에 연결된 것은 아니고 git에만 연결된 것으로 이제부터 git을 사용할 수 있어졌습니다. git remote -v로 원격 저장소와 연결되었는지 확인을 해보면 연결되지 않은 것을 볼 수 있습니다. 다음 단계에서 원격 저장소와 연결해 보겠습니다.
(2) git remote add origin 깃허브주소
위와 같은 명령어를 입력하면 remote 레포와 local 레포를 연결할 수 있습니다.
생각보다 간단하게 원격과 로컬 레포를 연결할 수 있습니다.
여기서 하나만 추가적으로 말씀드리겠습니다. 바로 원격 레포와 로컬 레포의 연결을 끊는 방법입니다. git remote remove origin 만 기억하시면 됩니다.
이렇게 원격 레포지토리가 연결된 상태로 이제 본격적으로 깃허브에 코드 올리는 명령어를 알아보겠습니다.
기억해 주실 건 add, commit, pull, push입니다.
1️⃣ git add
git이 파일을 tracking 할 수 있게 추가해 주는 단계
총 세 개의 파일(hello.py, README.md, main, go)을 만들어 보았습니다.
git status라는 명령을 통해 현재 git의 상태를 확인해 봅니다. untracked files에 제가 방금 전에 만든 세 가지의 파일이 올라가 있는 것을 볼 수 있습니다. untracked file이라는 건 단어 그대로 추적하고 있지 않은 파일을 의미합니다. 즉, git 저장소에 있지만 git이 추적하고 있지 않는다는 것입니다. 그럼 저희는 이제 git이 추적할 수 있게 만들어줘야 합니다. git이 추적할 수 있게 만들어주는 명령어가 git add가 되는 것입니다.
# git add <깃허브에 올릴 파일>
$ git add README.md
$ git add . # 현재 디렉토리에 있는 파일 모두 올리기
git add 명령어를 입력한다면 git에서 파일을 추적할 수 있게 만들 수 있습니다. 올리고 싶은 파일의 이름 하나만 입력해도 되고, 현재 디렉터리에 있는 파일 모두를 올리고 싶다면 .을 사용할 수도 있습니다. 저는 README.md와 main.go만 add 하겠습니다.
git status를 통해 상태를 확인해 주니 new file로 README.md와 main.go 파일이 생겼습니다. 이제 git에서 README.md, main.go 파일을 추적할 수 있게 된 것입니다. new file 위에 있는 글을 보면 changes to be committed라고 나와 있습니다. 이 두 파일은 이제 커밋을 기다리는 단계가 된 것입니다. 하지만 hello.py는 add 하지 않았기에 git에서 추적할 수 없고, commit을 기다리지도 않는 것입니다.
2️⃣ git commit
add 한 여러 개의 파일을 하나의 박스에 담는 단계
commit은 add한 두 개의 파일을 하나의 박스에 담아 git으로 전달하기 편하게 만들어 주는 단계입니다.
$ git commit -m "커밋 메시지"
git commit 명령을 사용해 commit 했습니다. 커밋한 후 status를 확인하면 new file에서 README.md와 main.go가 사라진 것을 볼 수 있는데요, commit이 되어 박스에 담겼기 때문이라고 생각해 주시면 됩니다.
3️⃣ git pull
원격 저장소에 있는 코드 당겨와 내 코드와 합치기
커밋까지 마친 파일들은 push 명령을 통해 원격 저장소로 밀어 넣어줘야 합니다. 그런데! 그전 원격 저장소에 있는 파일들과 로컬 저장소에 있는 파일들이 같은지 확인해 주는 단계가 꼭! 꼭! 필요합니다.
개인적으로 사용하는 레포에는 다른 사람이 코드를 푸시할 일이 없지만 협업을 할 때는 다른 사람이 코드를 푸시할 일이 매우 많아 push 전 pull을 꼭 해줘야 합니다.
현재 test 디렉터리의 원격 저장소에는 아직 브랜치가 만들어지지 않아 pull을 할 수 없어 예시를 들 수 없지만 꼭 git pull을 해야 한다는 것을 명심해 주세요!
$ git pull origin <브랜치명>
4️⃣ git push
로컬 저장소에 있는 코드를 원격 저장소로 밀어 넣기
$ git push origin <브랜치명>
push 명령으로 commit 한 파일들을 원격 저장소에 올립니다. 그럼 아래와 같이 깃허브 저장소에 README.md와 main.go가 업로드된 것을 확인할 수 있습니다. hello.py는 add, commit을 하지 않았기에 깃허브 레포에서 확인할 수 없습니다.
✍🏻 요약 1. 원격 레포지토리 만들어 로컬 레포지토리와 연결하기 (git clone) 2. git이 추적할 수 있도록 add 명령어를 사용해 stage에 코드 올리기 (git add) 3. 올린 코드를 한 박스에 담기 (git commit) 4. 코드를 원격 저장소에 밀어 넣기 전, 원격 저장소에 있는 코드 당겨오기 (git pull) 5. 로컬 저장소에 있는 코드를 원격 저장소로 밀어넣기 (git push)