Git의 공식 명칭은 분산 버전 관리 시스템 (VCS) 입니다.
다시말해 프로젝트 파일의 변경 사항을 추적하는 시스템입니다. 이를 통해 개발자들은 프로젝트의 변경 사항을 기록하고, 특정 시점의 버전으로 언제든 돌아갈 수 있습니다. 이런 버전 관리 시스템은 많은 사람들이 효율적으로 함께 작업하고, 프로젝트를 중심으로 협업할 때 사용할 수 있습니다. 각 개발자가 자신만의 프로젝트 버전을 본인 컴퓨터에 갖게됩니다. 나중에 이러한 개별 버전의 프로젝트를 병합하여 기준이 되는 버전의 프로젝트에 적용 할 수 있게 됩니다.
Git은 주로 command-line interface (CLI)를 통해 사용합니다.
터미널에 git --version
커맨드를 입력해주세요.
git --version
Git
이 정상적으로 설치되었다면 아래와 같이 설치되어 있는 Git 버전
이 표시됩니다.
Git에 본인 정보를 등록하기 위해 터미널에서 아래 커맨드를 입력해주세요.
git config --global user.name "이름"
git config --global user.email "이메일"
Git을 사용할 때는 repository 라는 용어를 잘 알고 있어야합니다. Git repository는 Git으로 관리하는 프로젝트 저장소입니다.
Git repository 에는 크게 두 가지 종류가 있습니다.
git init
이 명령어는 프로젝트 폴더 내에 숨겨진 .git 디렉토리를 생성합니다.
현재 저장소에 대한 모든 변경사항을 추적/관리하게 됩니다.
Git
에서 commit 이란 현재 버전의 코드를 커밋에 저장한다고 생각하시면 됩니다. 커밋 히스토리에 필요한만큼 커밋을 생성 할 수 있으며 커밋 간 앞뒤로 이동하여 프로젝트 코드의 다른 변경사항을 확인할 수 있습니다. 이를 통해 프로젝트의 진행 상황을 효율적으로 관리할 수 있게 됩니다.
터미널에서 (프로젝트 폴더 내) 다음 명령어를 입력하여 repository의 현재 상태를 확인할 수 있습니다.
git status
위 명령어는 Git
으로 작업 할 때 굉장히 자주 사용되는 명령어입니다. 어떤 파일이 변경되었는지, 어떤 파일이 추가되었는지 등을 전부 보여줍니다.
git status
명령어를 통해 Git 으로 관리되고 있지 않던 파일이 있다면 해당 파일들을 staging area 로 추가해줄 수 있습니다.
모든 파일이 Git으로 관리되고 있는 시점에서는 git status
명령어를 통해 모든 변경사항을 확인할 수 있고 커밋을 남기기 위해 staging area 로 추가해줘야 합니다.
프로젝트 폴더에서 git add
라는 명령어를 통해 우리가 원하는 파일들을 staging area 로 추가해줄 수 있습니다.
아래와 같이 특정 파일만 추가할 수 있습니다.
git add file.js
여러개의 파일들을 추가하고 싶다면 아래와 같이 할 수 있습니다.
git add file.js file2.js file3.js
파일을 각각 추가하지 않고 아래와 같이 모든 파일을 한번에 추가할 수도 있습니다.
git add .
위 명령어는 프로젝트 폴더 내의 모든 파일과 폴더를 staging area 에 추가하고 커밋을 남길 수 있게 해줍니다.
커밋은 특정 시간의 코드 스냅샷의 형태로 해당 repository의 커밋 기록에 남게됩니다. git add
명령어를 사용하여 모든 파일을 staging area에 추가 해주었다면 커밋을 남길 수 있습니다.
아래 명령어를 통해 staging area에 있는 파일들을 커밋할 수 있습니다.
git commit -m "Commit message"
식별을 위해 큰 따옴표안에 커밋 메세지를 작성해야 합니다.
커밋 메시지는 repository에 커밋하는 변경 사항을 설명하는 짧은 summary 여야 합니다.
위 명령어를 실행하면 터미널에 방금 남긴 커밋에 대한 세부 내용이 보여지게 됩니다.
새 커밋을 남기려면 staging area에 파일을 추가 한 다음 커밋을 남기는 프로세스를 반복해야합니다. git status
명령어를 통해 어떤 파일이 수정, 추가 또는 추적되지 않고 있는지 확인할 수 있습니다.
프로젝트의 모든 커밋 내역을 보려면 다음 명령어를 입력하면 됩니다.
git log
git log 명령어를 통해 보여지는 log는 각 커밋에 대한 자세한 정보를 담고 있습니다. (작성자, hash 값, 날짜와 시간, 그리고 커밋 메세지)
만약 특정 커밋 시점의 코드로 되돌리고 싶다면, 아래 명령어를 사용할 수 있습니다.
git checkout <commit-hash>
<commit-hash>
를 git log
에서 보이는 커밋의 실제 hash 값을 입력하면 됩니다.
staging area 에 추가하고 싶지 않거나, git 에서 관리하지 않아도 되는 파일이 있다면 .gitignore
파일을 프로젝트 폴더에 생성해주시면 됩니다.
.gitignore
파일 안에, 해당하는 파일명과 폴더명을 나열하면 됩니다. (각 파일, 폴더 새로운 줄에 입력)
// 예시
.DS_*
*.log
logs
**/*.backup.*
**/*.back.*
node_modules
bower_components
브랜치
란 독립적으로 어떤 작업을 진행하기 위한 개념입니다. 필요에 의해 만들어지는 각각의 브랜치는 다른 브랜치의 영향을 받지 않기 때문에 여러 작업을 동시에 진행할 수 있습니다.
여러 명이서 동시에 작업을 할 때에 다른 사람의 작업에 영향을 주거나 받지 않도록 먼저 메인 브랜치에서 자신의 작업 전용 브랜치를 만듭니다. 그리고 각자 작업을 진행한 후 작업이 끝난 사람은 메인 브랜치에 자신의 브랜치의 변경 사항을 적용합니다.
아래 명령어를 통해 새로운 브랜치를 생성할 수 있습니다.
git branch <new-branch-name>
새로 만들어진 브랜치는 현재 프로젝트의 코드를 그대로 반영하여 생성됩니다.
새로운 기능을 개발하고 테스트 한 후 버그가 없고, 사용할 준비가 되어있는지 확인한 후 최종적으로 master
브랜치에 병합할 수 있습니다.
아래 명령어를 통해 다른 브랜치로 이동할 수 있습니다.
git checkout <branch-name>
브랜치 생성과 동시에 생성된 브랜치로 이동하고 싶다면 기존 checkout 명령어에 -b 라는 flag 를 추가해주면 됩니다.
git checkout -b <new-branch-name>
프로젝트에 존재하는 모든 브랜치를 확인하고 싶다면 git branch
명령어를 입력하면 됩니다.
A 라는 브랜치에서 작업한 내용을 B 라는 브랜치에 적용하고 싶을 때 브랜치 A 와 브랜치 B 를 병합(merge) 할 수 있습니다.
아래 명령어를 통해 다른 브랜치를 현재 브랜치와 병합할 수 있습니다.
git merge <branch-name>
아래 명령어를 통해 브랜치를 삭제할 수 있습니다.
git branch -d <branch-name>
git --version
git init
git status
<file-name>
: 깃 관리 파일 추가(staging)git add <file-name>
git commit -m "Commit message"
git log
<commit-hash>
: 특정 커밋 시점으로 이동git checkout <commit-hash>
<new-branch-name>
: 브랜치 생성git branch <new-branch-name>
<branch-name>
: 브랜치 이동git checkout <branch-name>
<new-branch-name>
: 브랜치 생성과 동시에 생성된 브랜치로 이동git checkout -b <new-branch-name>
<branch-name>
: 다른 브랜치를 현재 브랜치와 병합git merge <branch-name>
<branch-name>
: 브랜치 삭제git branch -d <branch-name>