Git의 공식 명칭은 **분산 버전 관리 시스템(VCS)**이다.
쉽게 말하면, 프로젝트 파일의 변경 사항을 추적하는 시스템이다.
설치 후 버전 확인
git --version
git config --global user.name "이름"
git config --global user.email "이메일"
Git repository는 Git으로 관리하는 프로젝트 저장소이다.
Local repository: 본인의 컴퓨터에 저장된 로컬 버전의 프로젝트 저장소.
Remote repository: 로컬 repository와는 반대로 내 컴퓨터가 아닌 (일반적으로 원격 서버) 버전의 프로젝트 저장소.
새 저장소를 만들고 Git으로 프로젝트 관리를 시작하려면 터미널에서 프로젝트 폴더로 이동 후 아래 명령어를 실행해주면된다.
git init
위 명령어를 사용하면 폴더 내에 숨겨진 .git
디렉토리를 생성한다.
이 후에 Git은 현재 저장소에 대한 모든 변경사항을 추적/관리하게 된다.
Git에서 **
commit
**이란, 프로젝트의 현재 상태를 나타내는 체크포인트 또는 스냅샷으로 생각할 수 있다.
쉽게 말해, 현재 버전의 코드를 커밋에 저장한다고 생각하면 된다.
git
으로 작업중인 현재 상태가 궁금하거나, 파일이 추가된 것을 확인하고 싶다면 아래 명령어를 입력해주면 된다.
git status
프로젝트에서 git add
명령어를 사용하면 원하는 파일들을 **staging area
**로 추가할 수 잇다.
# 파일 하나 추가
git add hello.py
# 파일 여러 개 추가
git add hello1.py hello2.py hello3.py
# 파일 한 번에 추가
git add .
git add
로 파일을 staging area
에 추가 해주었다면, 이제 커밋 명렁어로 커밋을 남길 수 있다.
git commit -m "Commit message"
프로젝트의 모든 커밋 내역을 보고싶다면 다음 명령어를 입력하면 된다.
git log
git log
를 보다가 특정 커밋 시점으로 코드를 돌리고 싶다면, 아래 명령어를 사용해준다.
git checkout <commit-hash>
# commit-hash example
commit c587656320540a81d40d5f908888a692e511922d (origin/feature/juhyung-lee)
staging area
에 추가하고 싶지 않거나, git에서 관리하지 않아도 되는 파일이 있다면
.gitignore
파일을 프로젝트 폴더에 생성해주면 된다.
# .gitignore example
.DS_*
*.log
logs
**/*.backup.*
**/*.back.*
node_modules
bower_components
.gitignore
파일 안에, 해당하는 파일명과 폴더명을 나열하면 된다 (새로운 줄에 입력되어야 함).
브랜치란 독립적으로 어떤 작업을 진행하기 위한 개념이다.
필요에 의해 만들어지는 각각의 브랜치는 다른 브랜치로부터 아무 영향도 받지 않기 때문에, 여러 작업을 동시에 진행할 수 있다.
여러 명이서 동시에 작업을 할 때에 다른 사람의 작업에 영향을 주거나 받지 않도록, 먼저 메인 브랜치에서 자신의 작업 전용 브랜치를 만든다.
그리고 각자 작업을 진행 후, 작업이 끝난 사람이 메인 브랜치에 자신의 브랜치의 변경 사항을 적용한다.
이렇게 함으로써** 다른 사람의 작업에 영향을 받지 않게 되고, 독립적으로 특정 작업을 수행한 다음, 그 결과를 하나로 모아서** 나가게 된다.
이러한 방식으로 작업을 하는 경우 , 즉 브랜치로 그 작업의 기록을 중간 중간 남기게 되므로,
문제가 발생할 경우 원인이 되는 작업을 찾아내거나 그에 따른 대책을 세우기 쉬워진다.
저장소를 처음 만들면 Git
은 바로 master
라는 이름의 브랜치를 만들어 둔다. 이 새로운 저장소에 새로운 파일을 추가 한다거나 추가한 파일의 내용을 변경하고,
그 내용을 저장(commit)하는 것을 모두 master
라는 이름의 브랜치를 통해 처리할 수 있게 되는 것이다.
Master
브랜치가 아닌 또 다른 브랜치를 만들어서 사용하려고 선언하지 않는 이상 모든 작업은 default로 마스터 브랜치에서 이루어 진다.
아래 명령어를 사용해서 새로운 브랜치를 생성할 수 있다.
git branch <branch-name>
새로 만들어진 브랜치는 현재 프로젝트의 코드를 그대로 반영해서 생성된다.
보통 코드를 개선하고 새로운 실험 기능을 추가하는 등의 작업을 할 수 있는 development
브랜치를 만드는 것이 좋다.
새로운 기능을 개발하고 테스트 한 후 버그가 없고, 사용할 준비가 되있는지 확인했다면 최종적으로 master
브랜치에 병합할 수 있다.
git checkout <branch-name>
브랜치를 이동하면 그 이후의 작업은 해당 브랜치에만 영향을 주게 되고, 다른 브랜치로 이동하기 전까지는 다른 브랜치에 영향을 전혀 받지 않게 된다.
아래 명령어로 브랜치를 만듦과 동시에 전환하는 것도 가능하다.
git checkout -b <new-branch-name>
git merge <branch-name>
A
라는 브랜치에서 작업한 내용을 B
라는 브랜치에 적용하고 싶다면, 브랜치 A와 B를 병합(merge) 해줄 수 있다.
특정 브랜치에서 새로운 기능의 구현과 테스트를 완료했다면, 이제 기준이 되는 마스터 브랜치에 적용시켜야 하는데, 그럴 때 merge
를 사용한다.
아래 명령어를 사용해서 브랜치를 삭제하는 것도 가능하다.
git branch -d <branch-name>