Git 프로젝트 시작하기 (기초)
Git을 사용하여 파일을 추적해보자
  • Github

Git 설치하기

  • Windows

https://gitforwindows.org/ 페이지에서 다운로드

  • MAC

sudo yum install git

git --verison을 통해 정상 설치를 확인한다.

Git 계정 설정하기

$git config --global user.name "XXX"
$git config --global user.email XXX@XXX.com

Git 저장소 연결

$git init
$git remote add {remote} {branch}

혹은

$git clone {url}

위와같은 명령어로 쉽게 연결이 가능하다.

git의 status 상태 관리

image

  • untracked : 파일 추적이 되지 않는 상태를 가르킨다.
  • unmodified : staged -> git commit 명령어를 통해 unmodified 상태로 변경된다.
    파일의 수정된 내용이 없는 경우이다. 스냅샷에 저장된 데이터의 상태이다.
  • modified : unmodified or staged파일이 변경되었을 때 상태가 변경된다.
    파일이 수정된 상태로 변경내용이 기록된다.
  • staged : untracked or modified -> git add명령어를 통해 staged상태로 변경된다.
    파일의 변경내용이 추적되는 상태이고 commit명령을 실행하면 staged상태의 파일들이 commit된다

파일 추적하기

  1. vi test.js라는 파일을 만들어본다.

    <파일내용>

    aaaaa

    a문자가 5개 들어있는 단순한 파일이다.

    git status 명령어를 통해 파일의 상태를 확인한다.

    # On branch master
    #
    # Initial commit
    #
    # Untracked files:
    #   (use "git add <file>..." to include in what will be committed)
    #
    #	test.js
    nothing added to commit but untracked files present (use "git add" to track)

    파일이 현재 Untracked상태라고 나온다. Untracked 이라는것은 git에 파일이 추가되지 않은 상태로, git이 파일의 변화를 추적하지 않는 상태를 나타낸다.

  2. git add test.js를 통해 파일을 추적상태로 변경해보자.

    git status를 통해 상태를 다시 확인해보자.

    # On branch master
    #
    # Initial commit
    #
    # Changes to be committed:
    #   (use "git rm --cached <file>..." to unstage)
    #
    #	new file:   test.js
    #

    상태가 변경되었다고 나온다. 이제부터 이 파일의 변경기록추적이 가능하다.

  3. vi test.js 를 통해 파일을 수정한다.

    AS-IS.

    aaaaa

    TO-BE.

    aaaaa
    bbbbb

    아래에 b라는 문자를 5개 추가해보았다.

  4. 변경된 내용이 추적은 어떻게 보일까?

    git status를 다시 실행해보자.

    # On branch master
    #
    # Initial commit
    #
    # Changes to be committed:
    #   (use "git rm --cached <file>..." to unstage)
    #
    #	new file:   test.js
    #
    # Changes not staged for commit:
    #   (use "git add <file>..." to update what will be committed)
    #   (use "git checkout -- <file>..." to discard changes in working directory)
    #
    #	modified:   test.js
    #

    파일의 추적을 확인해보면 위와같이 변경되었다는 내용과 staged상태가 아니라는 2가지 목록이 나온다.

  5. 현재 상태에서 commit을 한다면?

    파일의 수정된 Modified상태와 이전에 add를 완료한 Staged 두 가지 상태에 있는 test.js를 지금 커밋하면 어떤 파일이 적용될까?

    당연히 Staged에 있는 파일이 적용된다. 마지막으로 add한 상태가 저장되니 최신 데이터의 commit을 위해 add를 다시 해주자.

    git add test.js

  6. 한번 더 test.js의 파일을 수정해보자.

    AS-IS.

    aaaaa
    bbbbb

    TO-BE.

    bbbbb
    ccccc

    이와같이 a줄을 지우고, c줄을 추가한 내용으로 바꾸었다.

  7. 어디부분을 어떻게 바꾸었을까?

    위 예제에서는 한줄의 수정이라 눈으로도 확인이 가능하다. 하지만, 여러분들이 코딩하는 프로젝트의 파일은 이렇게 단순한 라인일 수 없다.

    git diff를 사용해보자.

    diff --git a/test.js b/test.js
    index be4e668..a7cf086 100644
    --- a/test.js
    +++ b/test.js
    @@ -1,2 +1,2 @@
    -aaaaa
     bbbbb
    +ccccc

    -, + 모양을 통해 어떤 문자가 삭제, 추가되었는지 알려준다. 유용한 기능이니 꼭 기억하자.

  8. commit한 내용을 git에 업로드하자

    git add를 통해 파일을 Staged상태로 변경하였다. 이 상태에서 git commit 을 통해 Unmodified 상태로 바꿔준다. git commit -m "{message}" 명령어를 실행하면 Staged상태에 있던 파일들이 스냅샷에 저장되면서 Unmodified상태가 되고 서버로 업로드가 가능한 상태가 된다.

    git push {remote} {branch} 명령어를 통해 서버로 업로드가 가능하다.

  9. push할 때 tag를 작성해보자

    git tag를 통해 현재 등록된 tag리스트를 볼 수 있다. 현재 branch버전에 태그를 달아보자. git tag v1.0.0이라고 실행하면 간단히 태그를 붙일 수 있다.

    git log를 통해 커밋로그를 확인해보면 현재 HEAD에 tag: v1.0.0이 붙은걸 볼 수 있다.

    git push origin v1.0.0을 통해 태그를 push한다.

reference