[2차 프로젝트 준비] GIT

hyuckhoon.ko·2020년 7월 5일
0

What I learned in wecode

목록 보기
77/109

GIT에 대해 알아보자.

1. Version Control System

1. SVN과 GIT의 차이점



1) SVN

SVN 은 GIT과 마찬가지로 Version Control System 중 하나다.

GIT과는 다르게 파일의 버전 데이터베이스들이 내 로컬에는 없고 원격 저장소에 있다. 인터넷에 접속할 수 없는 환경에 가거나 원격 저장소 자체에 문제가 있는 경우, 혹시 모를 상황을 대비해 로컬에서 항상 백업 파일을 만들어야 한다.






2) GIT

그렇다면, 이번엔 GIT을 보자.
같은 Version Control System 이지만 분산형 방식이다.

각자의 로컬 컴퓨터에 로컬 repository가 있다.

git init을 하여 개발하는 프로젝트의 디렉토리를 추적한 시점부터
가장 마지막에 git pull을 받은 디렉토리까지의 모든 버전들을
내 로컬에서 접근할 수가 있다.

원격저장소에 문제가 생겼다? 이는 큰 문제가 되지 않는다.
내 로컬에도, 협업을 진행하는 사람의 로컬에도 가장 최근까지의 버전 정보들이 있기 때문이다.





2. 간단한 GIT 명령어 정리


1) GIT 버전 확인하기

$ git --version

결과


2) 글로벌 변수 지정하기(config)

아래는 협업을 위해 해야하는 중요한 환경설정이다.

$ git config --global user.name "내 이름"
$ git config --global user.email "내 이메일 주소"
$ git config --list

다른 개발자와 협업을 진행할 때,
어떤 사람이 코드를 수정하고 push를 하는지 알려야 한다.

위 명령어를 차례로 입력후 git config --list를 보면

다음과 같이 유저이름, 유저 이메일이 저장된 것을 확인할 수가 있다.


3) git help (verb)

or git (verb) --help

예를 들어, 좀전에 사용한 config가 어떤 명령어이고 어떻게 사용해야 하는지 모를때 git help 명령어를 이용하자.

$ git help config

결과


4) git init

로컬에서 개발 중이었거나, 앞으로 개발할 디렉토리가 있다고 하자.
git이라는 Version Control System 이 이 디렉토리의 버전들을
추적하길 원할 것이다. (그래서 git을 사용하려 하고 있다.)

$ git init

$ ls -al

다음과 같이 .git이 생성된 것을 확인할 수 있다.

(참고로, git이 해당 디렉토리의 버전을 추적(기록)하길 원치 않는다면
$ rm -rf .git
위의 명령어를 입력하면 된다.)


5) 현재 상태 확인하기

$ git status

git을 활용하기 위해서 아래 그림을 이해할 필요가 있다.

크게 세 가지 구조가 있다.

  • Local working directory(내 로컬 작업 환경)
  • Staging area
  • Remote repository (원격 저장소)

로컬 작업 환경은 내가 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 . 를 사용한 이유는

.gitignore에 명시한 파일들을 제외하고 전부 스테이징 영역으로 올려주기 때문이다.

그러한 이유로,
git add -A를 거의 사용하지 않게 되었다.
.gitignore에 명시한 내용을 고려하지 않고 모두 스테이징 영역에 올리기 때문이다.

(하지만, 이것 역시 문제가 되진 않았다. 왜냐하면
git에서 내게 보내는 에러 메시지를 조우해야 했기 때문이다 ㅎㅎ.

"당신은 gitignore에 있는 파일들도 전부 스테이징하려고 한다. 굳이 그렇게 진행할거면 -f 를 붙여서 진행해라")

단 한 번도 이런 상황에서 -f 를 붙여가며 진행한 적은 없다.ㅎㅎ



스테이징에 올린 파일들을 다시 삭제하기
$ git reset
또는 $ git reset (파일명)

실수로든 commit하고 싶지 않은 파일이 스테이징 영역에 있다면
되돌려야 한다.

$ git reset db_uploader.py

혹은 스테이징 영역에 올린 파일들을 전부 삭제시켜서 처음부터 진행하고 싶다면

git reset

다시 확인해보자. 어떻게??
아래 명령어로 자주 확인하는 습관을 들이자.
$ git status



0개의 댓글