Search

Git을 사용하여 프로젝트 협업하기

목차

Git 이란?

프로젝트를 협업을 위해 여러 버전으로 관리하여 사용할 수 있도록 만들어주는 시스템이다.
즉 여러 개발자가 하나의 개발을 위해 각자 프로젝트를 만들어 합치지 않고, 한 프로젝트만 생성하고 git을 사용하여 여러 버전으로 관리하며 프로그램을 개발할 수 있는것이다.

Git 설치

mac은 기본적으로 git을 설치된 상태이다.
하지만 오래된 버전일 수 있으니, brew 를 사용하여 git을 새로 설치하는것이 좋다.
brew install git
Bash
복사

Git 기본적인 문법

Git 시작

본인이 작업하던 폴더를 사용하거나, 외부에 저장된 프로젝트를 로드하는 방법이 있다.

로컬 저장소를 만드는법

원하는 폴더로 이동하여 아래 명령어를 사용하면 된다.
git init
Bash
복사

로컬 저장소에서 원격 저장소 연결 설정

현재 로컬에 존재하는 폴더를 git 저장소로 설정하였을 때, 원격 저장소(Github 등)와 연결하고 싶을 때 사용한다.
# 보통 저장소 이름은 origin으로 사용한다. git remote add [저장소이름] [원격 저장소 주소]
Bash
복사

원격 저장소 가져오는 법

보통은 이 명령어가 익숙할 것이다. 프로젝트 폴더가 생성될 위치로 이동하여 아래 명령어를 사용한다.
git clone [원격 저장소 주소]
Bash
복사

프로젝트의 변경사항 저장하기

현재 git 저장소로 설정된 이 폴더의 변경사항을 저장할 수 있다. 보통 아래 3단계로 나뉜다.
1.
git add 를 사용하여 변경사항을 스테이징 영역에 넘긴다.
스테이징 영역이란? git commit 명령어로 실제 git 저장소에 변경사항을 남기기 전 git 저장소와 변경 이력 내역들 사이의 중간 영역 역할을 담당한다. 이 영역에 전달된 파일 변경사항을 git commit 명령어를 사용하여 실제 git 저장소에 이력으로 남게 되는 것이다.
# 현재 디렉토리의 변경사항 전달 git add . # 특정 폴더/파일의 변경사항 전달 git add [file/dir] # 현재 작업하는 디렉토리 내 모든 변경사항을 전달한다. git add -A
Bash
복사
2.
git commit -m "변경 내용 요약 TEXT" 명령어를 사용하여 git 저장소에 변경 이력을 저장한다.
# -a 명령어를 사용하여 git add -A 명령어 없이 모든 변경사항이 자동으로 이력이 설정된다. # 하지만 변경사항을 확실하게 확인하지 않고 바로 commit 하기 때문에 조심해야 한다. git commit -a -m "변경 테스트"
Bash
복사
3.
git push 명령어로 변경된 이력에 따라 코드가 업데이트 된다.
브런치 생성 후, 최초 push 작업을 실행하면 git push --set-upstream [원격 저장소] [브런치명] 을 입력하라는 에러가 발생한다. 이는 현재 브런치를 push 할 때 원격저장소에 설정된 브런치도 같이 코드의 업데이트가 진행되도록 설정하겠다는 의미이다.
git push [저장소명] [브런치명]
Bash
복사

Git 저장소 상태 확인

git 저장소의 상태를 확인하는 법

현재 폴더가 git 저장소 인지 확인하는 방법이다. 아래 명령어를 사용하면 git 저장소일 경우 최근 발생한 정보를 알려준다.
git status
Bash
복사

git 저장소의 로그를 확인하는 법

현재 git 저장소의 로그를 확인할 수 있다.
git log
Bash
복사

git의 branch를 이용한 협업 방법

하나의 같은 프로젝트에서 여러 개발자가 독립적인 영역에서 소스코드를 편집하여 새로운 버전을 만들기 위해 사용한다.
이렇게 만들어진 여러 브런치(branch)는 하나의 브런치로 병합(merge)하여 하나의 새로운 프로젝트의 버전을 만들 수 있다.

branch 관리

git 저장소에서 사용되는 branch를 관리하는 여러 명령어들이다.
기본적으로 master 또는 main 브런치가 생성되어 있다.

branch 생성

# 브런치를 생성한다. # feature/test1 처럼 폴더 형식의 브런치 명도 생성이 가능하다. # 현재 브런치의 정보를 가지고 있는 새로운 브런치를 생성하는것이다.(중요) git branch [브런치 명] # 브런치를 생성한 후, 해당 브런치로 이동한다. git checkout -b [브런치 명]
Bash
복사

branch 이동

git checkout [브런치 명]
Bash
복사

branch 삭제

# 로컬의 브런치 삭제 git branch -d [브런치 명] # 원격 브런치 삭제 git push [저장소 명] --delete [브런치 명]
Bash
복사

branch 병합하기

기본적으로 병합 명렁어(merge)는 아래와 같이 사용한다.
# fast-forward merge git merge [브런치 명] # non-fast-forward merge git merge [브런치 명] --no-ff
Bash
복사
하지만 위 명령어를 사용하기 전에 병합의 2가지 종류를 알고 사용해야 한다.

fast-forward 방식

요약
말 그대로 빨리 감기 방식이다. 병합하려는 브런치의 현재 상태로 그대로 같은 위치로 이동하는 것이다.
예시
예를 들어 master 라는 브런치가 존재한다.
이 브런치를 기준으로 하나의 새로운 브런치를 만든다. 이를 new 라는 브런치라고 하자.
new 브런치는 당연하게도 master 브런치의 정보를 가진 상태이며, 그 이후 새로운 기능을 추가하였다.
이때 fast-forward 병합을 사용한다면, 아래와 같이 master 브런치가 new 브런치와 동일한 위치로 이동하며 같은 상태가 된다.

non-fast-forward 방식

요약
내가 merge 하려는 브런치와는 별개로 다른 버전을 만들어 새로운 병합본을 만든다.
예시
예를 들어 master 라는 브런치가 존재한다.
이 브런치를 기준으로 하나의 새로운 브런치를 만든다. 이를 new 라는 브런치라고 하자.
new 브런치는 당연하게도 master 브런치의 정보를 가진 상태이며, 그 이후 새로운 기능을 추가하였다.
이때, master 브런치 상태에서 여러 수정사항이 생기면서 new 브런치로 분기한 이후 추가적인 commit 이 진행되었다.
이럴 경우, non-fast-forward 방식을 사용하여 새로운 통합본을 만들 수 있다.