Git의 버전 관리 기능 활용 (2)

igNite·2022년 1월 6일

Git

목록 보기
3/3
post-thumbnail

Intro

이번 시간에는 다른 사람들과 함께 협업을 할 때 git의 버전 관리 기능을 어떻게 활용할 수 있을지 알아봅시다.
내가 만든 git 프로젝트를 다른 사람들과 함께 작업하기 위해서는 어떻게 하면 될까요?

  1. 내 컴퓨터에서 생성한 디렉토리를 init 명령어를 통해 Git의 관리 하에 들어가게 만들어 줍니다.
  1. 내 컴퓨터의 Git 디렉토리를 Remote Repository와 연결시켜 줍니다.
  1. 동료 개발자의 변경 사항과 나의 변경 사항을 Remote Repository를 통해서 공유합니다.

이제 각 단계들에서 구체적으로 어떤 일이 일어나는 지 알아봅시다.

Contribution Step

git init

이 디렉토리는 내 컴퓨터에만 존재하기 때문에 버전 관리를 위해 먼저 Git Repository로 변환시켜 주고 싶습니다.
내 컴퓨터에서 내가 직접 만든 디렉토리를 Git의 관리 하에 들어가게 만들어 주는 명령어는 git init 입니다.

git init

기존 프로젝트를 Git Repository로 변환하거나 새로운 Repository를 초기화하는 데에 사용할 수 있습니다.

이렇게 Local Repository가 생성되었습니다.

git remote

변환한 Local Repository를 Github에서 원격으로도 관리한다면 나중에 협업을 하기에도 편리하겠죠?
원격으로 관리하기 위해서는 Local Repository를 Remote Repository와 연결하는 작업이 필요합니다.

이 때 git remote add 명령어를 사용할 수 있습니다.

git remote add origin <Repository 주소>

이번에는 remote add를 활용해서 다른 사람의 Repository 와 연결해봅시다.
Remote Repository를 연결함으로서 Github Repository를 함께 공유할 수 있습니다.

아까는 git remote add 뒤에 origin과 내 Repository 주소를 입력했었는데요. 이번에는 origin이 아닌 다른 이름과 연결하고자 하는 상대방의 Repository 주소를 입력해 볼게요.
상대방의 Repository의 이름은 편의상 pair라고 짓겠습니다. git remote add pair ‘주소’를 입력해 상대방의 Repository와 연결했습니다.

git remote add <pair_name> <Repository 주소>

명령어를 입력했을 때 터미널창에 나타나는 변화는 없습니다.

그리고 개발을 하다보면 현재 내 Local Repository와 연결된 Remote Repository들에 대한 혼동이 올 수 있습니다. 이럴 때에는 git remote -v 명령어를 통해 현재의 Local Repository와 연결된 모든 Remote Repository 목록을 확인할 수 있습니다.

git remote -v

git pull

다른 사람이 서버 작업을 완료해서 Repository의 master 브랜치에 작업한 코드를 올려 놓았다고 합니다. 작업한 내용을 받아와서 확인하고 싶으면 어떡해야할까요?

git pull <shortname> <branch>
ex> git pull origin master

git pull pair master 명령어를 통해 동료의 Remote Repository에 있는 작업 내용을 받아올 수 있습니다. 받아오는 내용은 자동으로 병합(merge) 됩니다.

충돌 관리

작업 내용을 받아오는 와중에 이 때 만일 동료와 내가 동일한 라인을 수정한 파일이 있다면 어떻게 될까요?
이 때는 자동 병합(merge)에 실패하게 되고 충돌이 발생합니다.

해당 문제가 발생하면 위 사진과 같이 Merge conflict가 발생해서 Automatic merge에 실패했다고 출력됩니다.

이는 git status 명령어를 통해 어떤 파일이 충돌하고 있는지 확인할 수 있습니다.

충돌이 발생한 파일을 열어 보면 어떤 부분에서 충돌이 발생한 것인지 확인할 수 있습니다. 그리고 충돌이 일어난 부분은 하나 하나 직접 확인 후 수정이 필요합니다.

Accept Current Change를 클릭해서 내가 수정한 내용으로 파일에 반영할 수 있습니다.

Accept Incoming Change를 클릭해서 Remote Repository의 내용으로 파일에 반영할 수 있습니다.

Accept Both Changes는 변경 사항 모두를 반영합니다.

위 4가지 옵션 이외에도 직접 파일을 수정해서 반영하는 방법도 있습니다.

수정을 마치면 병합 커밋(merge commit)을 생성해 주기 위해서 파일을 staging area로 추가해야 합니다.

충돌한 파일 수정을 완료했다면 Remote Repository에 업로드 하기 위해서 staging area에 파일을 추가합니다.
Merge commit은 자동으로 Commit 메시지가 생성됩니다. (물론 메시지를 수정할 수도 있습니다.)
그리고 Remote Repository에 Push 한다면 다음 화면과 같이 Merge branch ‘master’ of 라는 commit 메시지가 기록됩니다.

드디어 Remote Repository로 push가 완료되었습니다.

Outro

이번 시간에는 다른 사람들과 함께 협업을 할 때 git의 버전 관리 기능을 어떻게 활용하는지에 대해 알아보았습니다. 기본적인 원리는 모두 습득하였으니, 이제 조금 더 심화된 git의 명령어와 기능에 대해 알아보도록 하죠.

profile
아직은 많이 미숙한 개발자 꿈나무

0개의 댓글