계속 헷갈리는 github 사용법 정리

jonghyuck’s velog·2021년 5월 6일
2

계속 한 환경에서만 git을 사용하다 보니 레파지토리를 옮긴다거나 서버를 옮겼을때 git 설정 방법이 헷갈렸다.
그래서 github에 대한 자주 사용하는 사용 방법을 정리해보려고 한다.

  • 먼저 github에 새로운 repository를 생성해준다.

새로 생성한 repository에는 위 사진 처럼
create a new repository on the command line 과
or push an existing repository from the command line으로 나뉘게 된다.

전자의 경우는 로컬 저장소가 아직 없다면 지신이 git에 업로드하고 싶은 저장소를 설정해주면 된다.
후자의 경우는 이미 로컬 저장소가 있다면 로컬 저장소를 원격저장소인 github와 연결해주는 작업이다.

위 명령어대로 터미널에 쳤다면

이렇게 .git이라는 디렉토리가 하나 생성됬을 것이다.
이제 우리가 github와 .git디렉토리를 통해서 연결되었으니 마음대로 사용할 수 있다.

1️⃣ github에 업로드할 파일 또는 디렉토리를 선택

git add filename
git add directory/

위와 같이 선언하면 된다. 이때 디렉토리의 뒤에/를 붙여주어야 디렉토리로 인식된다.

2️⃣ github에 업로드시 입력할 commit내용 작성

git commit -m 'first commit'

위 명령어를 치고 first commit 자리에 원하는 메시지를 작성하면 된다. 양쪽의 따옴표는 있어야 한다.

3️⃣ github에 업로드

git push

여기까지만 사용해도 평소 git을 사용하는데는 큰 지장없이 사용할 수 있다. 하지만 조금 더 배워보자.

branch를 만들어보자

코드를 작성하는 도중 만약 issue가 발생하면 브랜치를 만들어서 따로 분류할 수 있다.

git branch <branchname>

만약 issue라는 branch를 새로 만들었다면

master
issue

이렇게 두가지 branch가 존재하게 된다. 하지만 현재 github에 연동된 branch는 master이기 때문에 우선 이를 해지해주어야 한다.

git checkout issue

checkout이라는 명령어는 이 branch를 사용하겠다고 선언하는 명령어이다. 이전까지는 master라는 branch에 HEAD가 존재하고 있었다가 checkout을 사용하면 변경한 branch로 HEAD가 이동하게 된다.

그럼 이렇게 issue 브랜치에서 코드를 작성하다 issue가 잘 정리 되었다. 이제 issue는 사라졌고 master에 병합을 해야 한다. 이때 주의해야 할 점은 병합은 HEAD를 기준으로 병합이 되기 떄문에 issue 라는 branch에서 병합하고자하는 master branch로 다시 checkout해주어야 한다.

git merge issue

merge 명령어를 사용하면 이제 branch가 병합된다. 이제 마지막으로 필요없어진 issue branch를 삭제해주면 된다.

git branch -d issue

이렇게 간단한 명령어로 프로젝트의 issue를 관리할 수 있다.

git clone, pull, fetch 뭐가 다른데?

위 3가지 명령어는 git을 사용하면서 가장 많이 접할 수 있는 명령어들이다.

먼저 clone부터 살펴보자.

git clone https://~~~.git

위와 같은 명령어를 사용하면 github에 올라와 있는 코드를 바로 다운받을 수 있다. git clone의 경우 다른사람의 git도 바로 가져올 수 있기 때문에 자주 사용하게 된다.

두번째로 pull이다.

pull 명령어의 경우 원격저장소의 변경된 데이터를 가져와 로컬 저장소에 동기화시켜준다. 다른사람이 github에 코드를 변경했을 경우 변경된 코드를 불러와서 내 로컬에 병합시키는데 주로 사용된다.

git pull

다만 pull 명령어를 사용할 때는 주의사항이 있다. 만약 1일에 로컬에서 마지막으로 github에 commit을 하고 10일간 프로젝트를 백업하지 않고 진행했다. 그런데 팀 프로젝트였다면? github의 코드도 10일간 변했을 것이지만 내 로컬의 코드도 변경되었다. 이 경우 두 저장소의 변경된 코드가 겹친 상태로git pull을 사용하면 오류가 발생한다. 이때는 겹치는 부분을 수정한 후 pull 해주어야 한다.

세번째로 fetch이다.

pull 명령의 경우 원격저장소의 데이터를 로컬과 병합시키게 된다. 하지만 github의 데이터를 확인은 하고 싶지만 병합을 하고싶지않다면? 이 경우 fetch 명령어가 사용된다. 이 때 가져온 최신 커밋 이력은 이름 없는 브랜치로 로컬에 가져오게 된다.. 이 브랜치는 'FETCH_HEAD'의 이름으로 체크아웃 할 수 있다.

git fetch

추가사항

git pull을 하는데

위와 같은 오류가 발생할 수 있다.

cd .git/objects
sudo chmod -R 770 *

이 경우 위와 같은 명령어로 해결할 수 있다.

0개의 댓글