2. 깃 기초

njh7799·2020년 9월 20일
0
post-thumbnail

개발을 할 때 깃은 필수적이다. 깃에 대해 배워보자

깃이란?

버전 관리

깃은 버전 관리 툴이다. 여기서 버전 관리란 무엇일까? 생활 코딩님의 글을 참고하자.

버전 관리(version control, revision control)란 동일한 소스 코드에 대한 여러 버전을 관리하는 것을 말한다. 공학과 소프트웨어 개발에서 팀 단위로 개발 중인 소스 코드나, 설계도 등의 디지털 문서를 관리하는데 사용된다. 그러한 문서의 변경 사항들에 숫자나 문자로 이뤄진 "버전"을 부여해서 구분한다. 버전을 통해서 변경된 시간과 변경된 사항그리고 그 변경 사항을 작성한 작업자를 추적할 수 있다.

더 자세한 사항은 위의 링크를 타고 들어가서 확인하길 바란다.

변경 사항만을 저장

만약 내가 10000줄의 코드를 가지고 있다고 가정하자. 여기서 코드를 한 줄 바꾸고 깃을 이용해 버전을 저장했을 때(git commit) 새로운 버전의 코드 10000줄을 통째로 저장한다면 상당히 비효율적일 것이다. 이에 깃은 이전 코드와 현재 코드를 비교해서 변경 사항만을 저장한다.

깃 사용하기

거두절미하고 깃을 사용하는 방법을 예시를 들어가며 설명하도록 하겠다.

깃허브 레포지토리 만들기

  1. github.com/{본인 아이디} 접속
  2. repositories 클릭
  3. New 클릭
  4. 프로젝트 생성

    위의 영상을 보고 따라서 만들어 보자

레포지토리 로컬로 가져오기

git clone

자 이제 깃허브에 생성된 나의 레포지토리를 로컬 환경으로 가져올 것이다.
왜냐면 코딩은 로컬에서 해야하니까

  1. 내 레포에서 Code 버튼을 클릭한다
  2. HTTPS 주소를 클립보드에 저장한다(옆에 버튼 클릭)
  3. git clone {주소} 명령어를 원하는 위치에서 실행한다.

staging

git add, git reset, git status

코드를 바꾸고 바로 버전에 반영하는 것이 아니다. 반영 하기 전 staging 이라는 단계를 통해 변경을 반영할 파일들을 선택한 이후 버전에 반영한다.

git add/reset {파일 명}

특정 파일을 stage/unstage 시킨다.

git add/reset .

변경 사항이 있는 모든 파일들을 stage/unstage 시킨다.

git status

현재 어떤 파일이 변경 되었는지와, 어떤 파일이 staging 되었는지 확인할 수 있다.

<참고> touch {파일 명}

파일을 생성하는 명령어이다.

실행 예시

  1. git status - 현재 상태 확인
  2. git touch a.txt b.txt - 파일 추가
    git status
    * `a.txt`, `b.txt`는 기존에 없던 파일이므로 **변경사항**에 해당된다.
  3. git add a.txt - a.txt 를 staging 시킴
    git status
  4. git add . - 변경된 모든 파일을 staging 시킴
    git status
  5. git reset a.txt - a.txt를 unstage 시킴
    git status

변경 사항 반영하기

git commit

이제 staging 된 파일을 새로운 버전에 반영할 것이다. 이 작업을 커밋이라고 한다.

git commit

staging 된 파일을 변경 사항에 반영한다. 이 명령어를 실행하면, 커밋 로그를 작성할 수 있는 vim 창이 나오게 된다.
커밋 로그는 커밋 제목을 적고 한 줄 띄운 뒤 상세 변경 내용을 기록한다.

Add a.txt

어떠한 이유로 a 파일을 추가함

실행 예시

  1. git status
  2. git commit
  3. 로그 작성
    • 로그 작성 완료 후 Esc -> :wq 타이핑 -> Enter

커밋 로그 보기

git log

git log를 입력하면 깃 로그를 볼 수 있다.

  • 로그창을 끌 때는 q 를 누르면 된다

git log 옵션들

git log

기본

git log --oneline

한 줄만 보여준다.

git log --graph

그래프의 형태로 보여준다.

git log --oneline --graph

여러 옵션을 한 번에 줄 수도 있으며 실제론 이렇게 많이 사용한다.

원격 저장소에 변경 사항 올리기

git push

이제 로컬에서 작업한 내용을 깃허브로 올릴 차례이다.

현재까지의 로그를 찍어보면, origin/master 라는게 이전 커밋에 머물러 있는 것을 볼 수 있다. 이 origin/master가 뜻하는 것이 원격 저장소의 상태이다.
나(HEAD)는 commit을 했기 때문에 지금 7355ac4에 있지만, 원격 저장소에 올리지는 않았기 때문에 origin/masterff2ddfe에 머물러 있는 것이다. 이제 push를 해보자.

git push


위와 같은 결과가 나오면 정상적으로 원격 저장소에 올라간 것이다.

git log --oneline --graph --all


로그 또한 정상적으로 찍힌다.


마지막으로 github에 들어가보면 정상적으로 업로드 된 것을 확인할 수 있다.

로컬 저장소 최신화 하기

git pull

여러명이서 하나의 레포를 관리하다 보면 다른 사람이 push를 했을 경우를 고려해야 한다. 이 경우 로컬에서 pull 이라는 명령어를 통해 로컬 저장소를 최신화 할 수 있다.

실행 예시

  1. 다른 사람이 작업한 내용을 원격에 올림(아래의 코드는 다른 사람이 작업했다고 생각합시다.)
  1. 내 환경에서 로그 확인
    git log --oneline --graph --all
  1. pull
    git pull
  1. 로그 다시 확인
    git log --oneline --graph --all

기타 명령어들

git init

깃은 디렉토리 단위로 관리가 된다. 그렇다면 현재 내가 있는 디렉토리를 깃 디렉토리로 만들고 싶다면 어떻게 하면 될까?
간단하게 아래의 명령어를 입력함으로써 만들 수 있다.

git init

이 명령어를 입력하면 해당 디렉토리에 .git 폴더가 생성된는데, 깃이 이 폴더를 보고 본 디렉토리가 깃 디렉토리임을 파악한다.

mkdir NewDirectory // NewDirectory라는 이름의 디렉토리를 만든다
cd NewDirectory // NewDirectory로 들어간다
git init // 현재 디렉토리를 깃 디렉토르로 만든다

그런데 일반적으로는 깃허브를 이용하여 깃 레포지토리를 만들고 이를 가져와서 쓰기 때문에 이 방법은 거의 쓸 일이 없다.

Ref

0개의 댓글