GIT에 대해 알아보자.
SVN 은 GIT과 마찬가지로 Version Control System 중 하나다.
GIT과는 다르게 파일의 버전 데이터베이스들이 내 로컬에는 없고 원격 저장소에 있다. 인터넷에 접속할 수 없는 환경에 가거나 원격 저장소 자체에 문제가 있는 경우, 혹시 모를 상황을 대비해 로컬에서 항상 백업 파일을 만들어야 한다.
그렇다면, 이번엔 GIT을 보자.
같은 Version Control System 이지만 분산형 방식이다.
git init을 하여 개발하는 프로젝트의 디렉토리를 추적
한 시점부터
가장 마지막에 git pull을 받은 디렉토리까지의 모든 버전들을
내 로컬
에서 접근할 수가 있다.
원격저장소에 문제가 생겼다? 이는 큰 문제가 되지 않는다.
내 로컬에도, 협업을 진행하는 사람의 로컬에도 가장 최근까지의 버전 정보들이 있기 때문이다.
$ git --version
아래는 협업을 위해 해야하는 중요한 환경설정이다.
$ git config --global user.name "내 이름"
$ git config --global user.email "내 이메일 주소"
$ git config --list
다른 개발자와 협업을 진행할 때,
어떤 사람이 코드를 수정하고 push를 하는지 알려야 한다.
위 명령어를 차례로 입력후 git config --list를 보면
다음과 같이 유저이름, 유저 이메일
이 저장된 것을 확인할 수가 있다.
or git (verb) --help
예를 들어, 좀전에 사용한 config가 어떤 명령어이고 어떻게 사용해야 하는지 모를때 git help 명령어를 이용하자.
$ git help config
로컬에서 개발 중이었거나, 앞으로 개발할 디렉토리가 있다고 하자.
git이라는 Version Control System 이 이 디렉토리의 버전들을
추적하길 원할 것이다. (그래서 git을 사용하려 하고 있다.)
$ git init
$ ls -al
다음과 같이 .git이 생성된 것을 확인할 수 있다.
(참고로, git이 해당 디렉토리의 버전을 추적(기록)하길 원치 않는다면
$ rm -rf .git
위의 명령어를 입력하면 된다.)
$ git status
git을 활용하기 위해서 아래 그림을 이해할 필요가 있다.
크게 세 가지 구조가 있다.
로컬 작업 환경은 내가 git init
한 디렉토리를 의미한다.
하지만 거기에는 내가 올리고 싶은 모듈 및 파일만 있는 것은 아니다.
예를 들어
크롤링을 한 csv파일들,
데이터베이스에 업로드 시키는 uploader.py,
내 데이터베이스 비밀번호와 SECRET_KEY 정보가 있는
my_settings.py 등은 모두에게 공개되어서는 안 된다.
git은 우리에게 선택권을 주고 있다.
"어떤 파일들을 원격저장소에 commit할건데?
우리 쉽게 가자.
commit할 파일들만 따로 스테이징 영역에 올려봐"
그렇다면 스테이징 영역에 파일을 올리는 명령어를 알아보자.
$ git add .
$ git add -A
$ git add (파일명)
내가 자주 사용하는 세 가지의 명령어를 나열해봤다.
git add. 를 자주 사용해왔으나,
구글링을 하다보니 git add (파일명) 방식을 추천하는 분들이 많이 보였다.
그동안 내가 git add .
를 사용한 이유는
그러한 이유로,
git add -A
를 거의 사용하지 않게 되었다.
.gitignore에 명시한 내용을 고려하지 않고 모두 스테이징 영역에 올리기 때문이다.
(하지만, 이것 역시 문제가 되진 않았다. 왜냐하면
git에서 내게 보내는 에러 메시지를 조우해야 했기 때문이다 ㅎㅎ.
단 한 번도 이런 상황에서 -f 를 붙여가며 진행한 적은 없다.ㅎㅎ
스테이징에 올린 파일들을 다시 삭제하기
$ git reset
또는 $ git reset (파일명)
실수로든 commit하고 싶지 않은 파일이 스테이징 영역에 있다면
되돌려야 한다.
$ git reset db_uploader.py
혹은 스테이징 영역에 올린 파일들을 전부 삭제시켜서 처음부터 진행하고 싶다면
git reset
다시 확인해보자. 어떻게??
아래 명령어로 자주 확인하는 습관을 들이자.
$ git status