Git을 사용하기 위한 기본적인 사용방법에 대해 정리해 보고자 합니다.

Git 초기 설정은 이전 글의 Git을 시작하며-4.초기설정편을 참고하세요.

원격 저장소 관리

원격 저장소는 github와 같이 네트워크 존재하는 저장소를 말합니다.

원격 저장소 확인

이전 글의 Git 기본 사용법-로컬 저장소편-저장소 만들기에서 얘기한 것처럼 기본적으로 git clone을 하면 origin이라는 이름으로 원격저장소가 등록됩니다.

저장소 이름 확인

$ git remote

저장소 이름과 URL 확인

$ git remote -v

원격 저장소 추가

git init등을 통해 로컬에 새로운 git 저장소를 만들어 사용한 경우 직접 원격 저장소를 추가해 주어야 합니다.

원격 저장소를 origin이라는 이름으로 추가

$ git remote add origin https://github.com/codebaragi23/codebaragi23.github.io.git

원격 저장소에 저장하기

origin 원격 저장소의 master 브랜치에 저장하기

$ git push origin master

origin 원격 저장소의 로컬 브랜치와 동일한 이름의 브랜치에 저장하기

$ git push origin HEAD

-u 옵션 사용

먼저 가장 많이 쓰이는 예를 보겠다.

$ git push -u origin master

이 명령어에서 -u 옵션은 master라는 현재 브랜치를 origin 원격저장소의 master 브랜치로 연결해 주어 다음부터는 간단히 git push만 입력하면 동일한 동작을 해 준다.

원격 저장소 변경

이름 변경

$ git remote rename origin new_name

삭제

$ git remote rm origin

브랜치와 병합

개인 프로젝트 관리를 위해 git을 사용한지 얼마 안되다 보니 아직 브랜치와 머지에 대해 정리가 부족합니다. 그러한 이유로 먼저 참고 자료를 정리해 보고자 합니다.

소프트웨어를 개발할 때에 개발자들은 동일한 소스코드를 함께 공유하고 다루게 됩니다. 동일한 소스코드 위에서 어떤 개발자는 버그를 수정하기도 하고 또 다른 개발자는 새로운 기능을 만들어 내기도 하죠. 이와 같이 여러 사람이 동일한 소스코드를 기반으로 서로 다른 작업을 할 때에는 각각 서로 다른 버전의 코드가 만들어 질 수 밖에 없습니다.

이럴 때, 여러 개발자들이 동시에 다양한 작업을 할 수 있게 만들어 주는 기능이 바로 ‘브랜치(Branch)’ 입니다. 각자 독립적인 작업 영역(저장소) 안에서 마음대로 소스코드를 변경할 수 있지요. 이렇게 분리된 작업 영역에서 변경된 내용은 나중에 원래의 버전과 비교해서 하나의 새로운 버전으로 만들어 낼 수 있습니다. 브랜치 예시
출처: 누구나 쉽게 이해할수 있는 Git 입문-브랜치란?

위 예시처럼 여러 작업자가 각자 작업을 하거나 큰 이슈들에 대한 별도의 처리과정을 남기고 다시 병합하는 과정 등으로 브랜치를 활요할 수 있습니다.

브랜치 만들기

issue1이라는 이름으로 브랜치 만들기

$ git branch issue1

브랜치로 이동

issue1이라는 브랜치로 이동

$ git checkout issue1

issue1이라는 브랜치를 만들고 이동

-b옵션을 사용하여 브랜치를 만들고 이동하는 동작을 한번에 할 수 있습니다.

$ git checkout -b issue1

병합

브랜치 이동 작업 후 master에 반영하기 위해 병합하려면 다음의 과정을 거칩니다.

1단계: master 브랜치로 이동

$ git checkout master

2단계: master에 issue1을 병합

$ git merge issue1

3단계: 병합 충돌 해결

병합과정에서 아래와 같은 충돌(Conflict) 메시지를 보는 경우가 있습니다.

$ git merge issue1
Auto-merging main.c
CONFLICT (content): Merge conflict in main.c
Automatic merge failed; fix conflicts and then commit the result.

이 경우 해당 충돌 파일(위 예시에서는 main.c)을 열어보면 충돌난 부분을 아래와 같이 확인 할 수 있고 하나하나 직접 정해줘야 합니다.

아래 main.c예를 보겠습니다.

// main.c
int calc(int n1, int n2)
{
<<<<<<< HEAD
  n1 = n1 + 2;
=======
  n2 = n2 - 2;
>>>>>>> issue1 
  return n1+n2;
}

이 경우 반영할 내용을 확인 후 수정을 하고 다시 커밋을 합니다.

// main.c
int calc(int n1, int n2)
{
  n1 = n1 + 2;
  n2 = n2 - 2;
  return n1+n2;
}
$ git add main.c
$ git commit -m "issue1 branch merge"

4단계: 브랜치 삭제

더이상 브랜치가 불필요한 경우 아래와 같이 브랜치를 삭제할 수 있습니다.

$ git branch -d issue1

댓글남기기