깃으로 버전 관리하기 공부 1일차

최석민·2021년 10월 14일
0

깃과깃허브

목록 보기
2/3

깃 저장소 만들기

  • 저장소를 만들고 싶은 디렉토리로 이동해서 깃을 초기화하면 그때부터 해당 디렉토리에 있는 파일들을 관리할 수 있다.

깃 초기화하기 : git init

  1. 깃 저장소를 만들 디렉토리 만들기(홈디렉토리에 hello-git이라는 디렉토리 만들고 이동하기)

    $ mkdir hello-git
    $ cd hello-git

  2. hello-git 디렉토리 안의 내용을 살펴보기 위헤 'ls -la' 명령을 입력.

  3. git init 명령어로 깃을 사용할 수 있도록 디렉토리를 초기화하자.

    $ git init

  4. ls 명령을 사용해 디렉토리를 확인해보면 .git이라는 디렉토리가 생겨있다. 이 디렉토리가 깃을 사용하면서 버전이 저장될 저장소임.

    $ ls-la

버전 만들기

  • 깃에서 버전이란 문서를 수정하고 저장할 때마다 생기는 것이라고 생각.
  1. 스테이지와 커밋 이해하기

    • 작업트리(작업디렉토리) : 파일 수정,저장 등의 작업을 하는 디렉토리. 아까 만든 hello-git이 이에 해당한다.
    • 스테이지 : 버전으로 만들 파일이 대기하는 곳. 작업트리에서 10개의 파일을 수정했는데, 4개의 파일만 버전으로 만들려면 4개의 파일만 스테이지로 넘겨주면 된다.
    • 저장소(리포지토리) : 스테이지에서 대기하고 있던 파일들을 버전으로 만들어 저장하는 곳.

      스테이지와 리포지토리는 .git폴더 안에 숨겨져있음

    -> 작업트리에서 파일을 수정하고, 수정한 파일 중 버전으로 만들고 싶은 걸 스테이지에 저장한다. 그 스테이지에 올린 걸 리포지토리로 넘기는 과정을 커밋이라 함.

    • 깃에서는 아직 한번도 버전 관리하지 않은 파일을 untracked files라고 한다.
  2. 작업트리에 빔으로 문서 수정하기

    a. 수정한 파일을 스테이징하기 -> git add
    스테이징 내용을 .git/index 파일에 저장하기 때문에 스테이지에 올리는 것을 인덱스에 등록한다고도 한다.

    $ git add hello.txt

    • warning:LF will be replaced by CRLF in hello.txt
      ->윈도우에서 문서를 저장했을 때 CR문자와 LF문자가 삽입된다. 이 메시지는 깃에서 자동으로 텍스트 문서의 CRLF 문자를 변환해서 커밋할 것이라는 의미다.

    b. 스테이지에 올라온 파일 커밋하기 ->git commit
    커밋할 땐 그 버전에 어떤 변경 사항이 있었는지 메시지를 함께 기록해야함.

    $git commit -m 'message1'

    c. 버전이 제대로 만들어 졌는지 확인하기 -> git log
    -> 지금까지 만든 버전이 화면에 나타나고, 각 버전마다 설명도 함께 나타난다. commit 옆에 긴 글 써있는 건 커밋 해시. 그 옆에 HEAD->master 는 이 버전이 가장 최신이라는 표시임.
    -> q를 눌러서 로그 화면에서 빠져 나올 수 있다.

    d. 변경 사항 확인하기 -> git diff
    -> 삭제된 내용은 -로 표시, 추가된 내용은 +로 표시됌.

  3. 스테이징과 커밋 한꺼번에 처리하기 -> git commit -am

버전 만드는 단계마다 파일 상태 알아보기

  • 깃은 한번이라도 커밋을 한 파일은 계속해서 추적함 :tracked files
  • 한번도 깃에서 버전관리 하지않은 파일 : untracked files
  • 커밋에 관련된 파일까지 함께 살펴보려면 -> git log --stat
  • 버전 관리 중인 디렉토리 안에 버전 관리를 하지 않을 특정 파일 또는 디렉토리가 있다면 빔을 사용해서 .gitignore파일을 만들어 그 안에 버전 관리하지 않을 파일 또는 디렉토리 이름이나 파일 확장자를 입력하면 된다.

unmodified, modified, staged 상태

tracked파일의 상태가 어떻게 바뀌는지 확인해보자

  • git status를 통해 깃의 상태를 확인
    -> working tree clean 이라고 나타나면 현재 작업트리에 있는 모든파일의 상태는 unmodified(수정안된상태).

  • changes not staged for commit. 이라고 나오면 modified 상태

  • chages to be commited 라는 메시지는 staged 상태

  • commit하면 다시 unmodified 상태로 돌아간다.

untracked -> unmodified -> modified -> staged : 스테이징
unmodified -> modified : 파일 수정
modified -> staged : 스테이징
staged -> unmodified : 커밋

  • 방금 커밋한 메시지 수정하기 : git commit --amend
    -> 빔이 실행되고 원래 커밋메시지가 맨 위에 표시됌. 바꿔주고 저장하면 된다.

작업 되돌리기

스테이지에 올렸던 파일을 내리거나 커밋을 취소하는 방법

작업 트리에서 수정한 파일 되돌리기 : git checkout(=restore)

  • checkout으로 되돌린 내용은 다시 복구할 수 없다.

    $ git checkout -- hello.txt

스테이징 되돌리기 : git reset HEAD 파일이름(=git restore -- staged 파일이름)

최신 커밋 되돌리기 : git reset HEAD^

  • 커밋도 취소되고 스테이지에서도 내려온다. 취소한 파일이 작업트리에만 남는다.
  • reset명령은 사용하는 옵션에 따라 되돌리기 단계가 다르다.
    1. --soft HEAD^ : 최근 커밋하기 전 상태로 돌림.
    1. --mixed HEAD^ : 기본값(커밋&스테이징 하기전)
    2. --hard HEAD^ : 이 옵션으로 되돌리면 내용 복구할 수 없음.

특정 커밋으로 되돌리기 : git reset 커밋해쉬

  • 특정 버전으로 되돌리고 그 이후 버전을 삭제할 때 사용
  • 주의할점: reset A 라는 의미는 A 커밋을 리셋하는것이 아니라 A커밋 이후 만들었던 커밋을 삭제하고, A 커밋으로 이동하겠다는 의미.

커밋 삭제하지 않고 되돌리기 : git revert

-> revert 명령어의 경우에는 명령 뒤에 A가 아닌 취소하고 싶은 버전. 예를 들어 revert B 라고 입력해야 함.

profile
개발자로 한 발자국 남기기

0개의 댓글

관련 채용 정보