본문 바로가기

Coding/TIL (Today I Learned)

Git 02. 개념과 주요 명령어

immersive prep 스프린트를 진행하면서 처음으로 같은 프로젝트를 함께 코딩하는 경험을 했다. 이전에 github 에서 풀리퀘스트 하는 방법을 정리했는데 그때는 혼자 작업을 위한 과정이었음. 앞으로도 자주 사용하게 될 깃에 대한 개념을 정리해본다.

 


Git 이란?

"Distributed Version Control System"

소스 관리를 위한 분산 버전 관리 시스템으로 편리한 버전관리, 백업, 협업을 위한 도구.

- 작업 내용의 변화를 기록하고 특정 시점의 작업을 불러올 수 있어 버전 관리가 된다.

- 작업물이 서버 저장소에만 있는 것이 아니라 각각의 로컬 저장소에 분산되어 있다.

- 한 프로젝트의 코드를 여러 사람이 함께 작업 할 수 있도록 도와주고 공동작업 시 발생한 충돌을 처리해 준다.

 

그럼, GitHub란?

git 사용자를 위한 소셜 플랫폼.

git 저장소 서버를 대신 유지 및 관리해주는 서비스.

 

페어 프로그래밍을 위한 Git Workflow

1. 함께 작업할 프로젝트의 저장소(Repository)에서 멤버 각각 fork로 자신의 저장소에 복사한후 로컬에 clone한다.

//로컬에 클론하기
$ git clone http://github.com/<user_name>/<repository_name>.git

2. 페어의 원격 저장소와 내 로컬 저장소를 연결한다.

$ git remote add pair <pair's repository_name>

3. 연결 상태를 확인한다. 

//원격 저장소 이름과 URL 출력하기
$ git remote -v 

//출력 예시
origin	https://github.com/<username>/<project_name>.git (fetch)
origin	https://github.com/<username>/<project_name>.git (push)
pair	https://github.com/<pair's username>/<project_name>.git (fetch)
pair	https://github.com/<pair's username>/<project_name>.git (push)

4. 페어 프로그래밍을 진행 하고 내 저장소에 push한다.

$ git push origin master

5. pair 쪽에서는 진행된 프로젝트를 pull해서 변경사항을 내려받고 이어서 작업한다. (1번 부터 반복 진행)

$ git pull pair master

 

git init 이란?

깃 저장소를 초기화한다. 저장소나 디렉토리 안에서 이 명령을 실행하기 전까지는 그냥 일반 폴더. 초기화를 한 후에야 추가적인 깃 명령어들을 줄 수 있다. 터미널에 아래 명령어를 입력하면 폴더 안에 .git이라는 숨겨진 폴더가 생성됨.

$ git init 

Initialized empty Git repository in <경로>

 

branch (가지치기)

여러 명이 하나의 프로젝트를 진행하기위해서는 작업자들이 분리된상태에서 작업을 진행하고 완료 후 합치는것이 효율적. 저장소를 새로 만들면 기본으로 master  branch가 만들어진다. 일반적으로 작업자들은 메인 프로젝트의 브랜치를 따와서 자신이 변경하고 싶은 버전을 만들고 작업을 진행, 작업을 끝낸 후 프로젝트의 master에 브랜치를 merge한다.

//branch 목록보기 (*가 현재 브랜치)
$ git branch

//branch 만들고 바로 checkout (체크아웃이란 내가 사용할 브랜치를 지정한다는 의미)
$ git checkout -b <branch_name>

//branch 삭제
$ git branch -d <branch_name>

//master branch로 돌아가기
$ git checkout master

//특정 버전으로 이동하기
$ git checkout <version>

//branch 이름을 A에서 B로 변경하기
$ git branch -m A B

//모든 branch 보기
$ git log --branches

 

merge (갱신과 병합)

나누어 작업한 파일을 원격 저장소에 갱신하고 병합하면 한 사이클이 종료된다.

//원격 저장소의 프로젝트를 로컬 저장소로 동기화하고 merge 하기
$ git pull

//branch에 있는 변경 내용을 master에 병합하기
$ git merge <branch_name>

//변경 내용을 병합하기 전에 변경사항 확인하기
$ git diff <원래 branch_name> <비교할 branch_name>

//작업이 잘못된 경우 로컬의 변경 내용 되돌리기
$ git checkout -- <file_name>

 

stash

branch에서 작업하다가(add를 한번 이상 등록한 파일) 다른 branch로 옮겨야할 경우 commit하지 않고 작업하던 것을 저장해둘 때 쓰는 명령어. 급하게 수정이 필요하거나 한 경우에는 완료되지 않은 파일을 commit하는 대신 stash를 활용한다.

//하던 작업을 다른 곳에 저장해 두고 가장 최근 commit상태로 만든다
$ git stash

//저장된 작업 중 가장 퇴근의 stash를 불러올 때
$ git stash apply

//stash 목록 확인
$ git stash list

 

 

레퍼런스

github 참고 영상 :  https://youtu.be/w3jLJU7DT5E

제로초 블로그

빨간색코딩