Git
- 프로젝트 파일의 변경 사항을 추적하는 분산 버전 관리 시스템 (VCS)
- 프로젝트의 변경 사항을 기록하여 특정 시점의 버전으로 복구하는 것을 가능하게 하고, 프로젝트 중심으로 여러 개발자가 협업할 때는 각자의 컴퓨터에서 작업하던 다양한 버전의 파일들을 병합하여 기준이 되는 버전의 프로젝트에 동일하게 적용 될 수 있게 한다.
Repositories (저장소)
Git repository는 Git 으로 관리하는 프로젝트 저장소이며, local 과 remote으로 구분된다.
1) Local repository: 개인의 컴퓨터에 저장된 프로젝트 저장소
2) Remote repository: 외부의 프로젝트 저장소
(ex. 원격 서버)
→ remote repository에서는 코드를 공유하거나, 로컬 버전의 프로젝트와 코드를 병합하거나, 변경 사항을 적용하는 것 등이 가능해 팀 단위로 협업 시 유용하게 사용된다.
Git 명령어
- git init - initializing a repository
- 처음 git으로 새로운 프로젝트를 관리하기 위해 프로젝트 폴더에서 입력해야 하는 명령어
git init
- 해당 명령어 실행 시, 프로젝트 폴더 내에 .git 디렉토리가 생성되어 git이 해당 저장소에 대한 모든 변경 사항을 추적/관리할 수 있게 된다.
- git add - staging files
- commit 진행 전 수정한 파일들의 이력을 남길 준비를 하는 명령어
(수정 내역을 staging area에 추가하기 위한 단계로, 쇼핑몰의 장바구니 같은 개념)
1) 특정 파일만 이력을 남기고 싶을 경우
git add file.js
2) 파일을 각각 추가하지 않고, 수정 이력이 있는 모든 파일의 이력을 남기고 싶은 경우
git add .
- git status
- add 명령어까지 실행한 git의 상태를 확인하기 위한 명령어로, 어떤 파일이 수정, 추가되었는지 또는 추적되지 않고 있는지 등 디렉토리에서 일어나고 있는 상태를 확인 할 수 있게 한다.
git status 명령어를 통해 어떤 파일이 확인할 수 있습니다.
git status
- git commit
- staging area로 옮겼던 파일들을 실제 저장하여 수정한 파일들의 이력을 남기는 명령어
- 일반적으로 특정 기능을 추가하거나 수정 사항을 적용한 후 commit을 남길 수 있다.
1) 한줄로 commit 메세지를 남기고 싶을 경우
git commit -m "commit message"
2) 여러 줄의 commit 메세지를 남기고 싶을 경우
git commit
-> git commit을 입력하면 멀티라인으로 메시지를 쓸 수 있는 에디터로 이동
- Git에서 commit 이란, 프로젝트의 현재 상태를 나타내는 체크포인트로, 여러 개의 commit을 생성 할 수 있다.
(새 commit을 남기기 위해서는 staging area에 파일을 추가하는 명령어를 먼저 실행해야 한다.)
- commit 로그에서 시점을 이동하며 프로젝트 코드의 변경사항을 확인할 수 있어 프로젝트의 진행 상황을 효율적으로 관리할 수 있다.
- git log
- commit했던 이력을 확인할 수 있게 하는 명령어로, 작성자, hash 값, 작성 시점, commit 메세지 등을 확인할 수 있다.
- 특정 commit 시점의 코드로 되돌리고 싶은 경우의 명령어
git checkout <commit-hash>
- git push
- 작성한 코드를 실제 remote repository에 업로드하기 위한 명령어 (local → remote repository 로 push)
git push origin master
- master 자리에 실제 branch명 작성 필요
- '.gitignore' 파일 - ignoring files
- 보안, 용량 등의 문제로 git에서 관리, 추적하지 않기 위한 파일들의 경우에는 프로젝트 폴더에 '.gitignore'파일을 생성하여 관리할 수 있다.
- '.gitignore'파일 안에, 해당 파일명과 폴더명을 나열하면 git의 추적을 받지 않게 된다.
(각 파일/폴더 당 새로운 줄에 입력)
*.log
**/*.backup.*
**/*.back.*
node_modules
bower_components