ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 인프런 git basic 강의 정리 | 01. 버전 관리의 첫 시작
    Programming/Git 2021. 2. 18. 13:55
    반응형

    강태공 님의 인프런 git 강의 일부를 정리한 것입니다.

    01. 버전 관리의 첫 시작

    1) 버전 관리의 큰 그림

    Git이란?

    git버전(형상) 관리 시스템 중 하나다.

    버전은 유의미한 변화가 결과물로 나온 것이다.

    버전 관리의 필요성

    그럼 버전 관리는 왜 필요할까? 크게 세 가지 이유가 있다.

    1. 협업 : 대규모의 프로젝트는 혼자서 처음부터 끝까지 작업하기 힘드므로 여러 명의 개발자가 공동으로 작업할 필요가 있다.
    2. 롤백 : 버전에 심각한 문제가 발생하면 그 이전 버젼으로 되돌릴 필요가 있다.
    3. 백업 : 프로젝트 작업 기간 중 어떤 일이 벌어질지 모르므로 유의미한 변화가 나올 때마다 백업을 해두는 게 안전하다.

    코드가 버전이 되기까지

    작성한 코드가 버전이 되기까지 거쳐가는 3가지 공간이 있다.

    1. working directory(작업 공간)
    2. staging area
    3. repository(저장소)

    위 세 가지다. 코드는 working directory(작업 공간) -> staging area -> repository(저장소) 순으로 거쳐서 버전이 된다.

    working directory

    • 내가 코드 작업을 하는 공간
    • 파일, 코드들이 생성, 수정, 삭제되는 공간
    • 파일 및 코드의 변화가 생기는 공간
    • working directory 내 모든 변경사항을 버전으로 만들 필요는 없다.
      • 미완성인 파일이 있을 수도 있음
      • 테스트용 혹은 실수 등으로 만든 파일이 있을 수 있음
      • 의도적으로 버젼 관리를 하고 싶지 않은 것도 있을 수 있음

    따라서, working directory의 변경사항 중 버전으로 만들 것을 선별해서 선별된 것을 버전으로 만드는 것이 효율적이다.

    staging area

    • 버전이 될 후보들이 올라오는 공간(무대)
    • working directory에서 선별

    repository

    • 버전들이 저장되어 있는, 저장될 공간

      명령어

    모든 git 명령어는 명령어 앞에 git을 붙여준다.

    • git add <파일 이름> : working directory에서 staging area로 보내는 명령어
      • git add all 혹은 git add .으로 모든 파일을 staging area로 보낼 수 있다.
    • git commit -m "commit message" : staging area에서 repository로 보내는 명령어
      • git commit 만 입력후 enter를 누르면 좀더 자세한 commit message를 남길 수 있다.

    2) 버전을 만들어보자

    버전 관리 시작하기

    버전 관리를 시작할 디렉토리로 이동해서 git init 명령어를 입력한다.

    $ git init

    그러면 숨김 파일로 .git 파일이 생성되면서 버전 관리가 시작된다.

    git init은 어떤 디렉토리 안에서 버전 관리를 시작한다는 명령어다.

    git status 버전 관리가 되고 있는 해당 폴더의 현 상황을 알려주는 명령어다.

    $ git status

    아무 것도 하지 않은 상태에서는 untracked file 이라는 단어와 그 목록이 보이는데,

    untracked file은 해당 폴더 내에서 아직 버전 관리를 하지 않은 것, 새로 생긴 파일, add 된 적도 없고 commit 된 적도 없는, 한 번도 관리되지 않은 파일을 말한다.

    working directry -> staging area | git add

    이 파일을 staging area로 옮기려면 git add <파일 이름> 명령어를 사용하면 된다.

    $ git add example.txt

    했을 때 어떤 반응도 일어나지 않으면 해당 파일이 무사히 staging area로 넘어간 것이다.

    반대로 stagin area에서 working directory로 다시 내릴 수도 있다.

    git rm --cached file.name

    여기서 --cached 옵션을 붙이지 않으면 로컬 저장소와 원격 저장소 둘 모두에 영향을 미치고, 붙이면 원격 저장소에만 영향을 미친다.

    추가적으로 add할 파일이 엄청 많을 때,모든 변경사항을 한 번에 add 허려면 아래 명령어를 이용한다.

    $ git add .
    혹은
    $ git add all

    staging area -> repository | git commit

    staging area에 올라온 작업물들을 버젼으로 만드는 행위를 commit이라고 하며 아래 명령어를 사용한다.

    $ git commit -m "commit message"

    commit message 는 이 해당 버젼이 어떤 변경 사항이 생겨서 이 커밋을 하게 되었는지, 어떤 유의미한 변화를 담았는지를 간략하게 적어줘야 한다.

    지금까지 한 commit의 내역을 확인하는 명령어는 아래와 같다.

    $ git log

    git log를 실행하면

    commit aldsfjlaksjdflkajsflkj
    commit aldsfjlaksjdflkajsflkj
    commit aldsfjlaksjdflkajsflkj

    위와 같은 목록이 나오는데이 무작위의 알파벳이 커밋의 id다.

    짧고 간결한 commit message를 남길 경우애는 -m옵션을 이용하여,

    $ git commit -m "adfadsf"

    를 입력하고,

    길고 자세한 commit message를 남길 경우에는 옵션 없이

    $ git commit

    입력 후 넘어가는 vi 창에서 자세히 작성한다.

    3) hello, github!

    원격저장소의 필요성

    하나의 파일이 세 개의 공간을 거치며 버전이 된다.

    working directory -> staging area -> repository

    commit을 하면 내 로컬 컴퓨터에만 저장이 되기 때문에 협업이 불가능하다.

    그리고 만약 내 컴퓨터가 망가지만 백업도 못한다

    즉, 이 로컬의 버전을 원격에서 저장해주는 인터넷 서비스가 필요한데, 그중 하나가 github다.

    원격 저장소가 뭐지?

    간단히 말해서 인터넷 서버 어딘가에 존재하는 저장소(repository)다.

    내 컴퓨터 안에 있는 저장소는 local repository, 컴퓨터 밖에 있는 저장소는 remote repository다.

    이 원격 저장소에 내가 작업한 버전을 업로드하는 것을 push라고 한다.

    원격저장소에 push하면 파일만 저장되는 것이 아니라 commit 내역 등이 모두 저장되므로 어떤 것이 변동되었는지 쉽게 공유할 수 있다.

    즉, commit message를 정확히 작성할수록 협업이 원활해진다.

    반응형

    'Programming > Git' 카테고리의 다른 글

    git cherry-pick 활용하기  (0) 2021.06.30
    commit, add, pull, merge 취소하기  (0) 2020.12.18
    git에서 특정 브랜치만 clone하기  (0) 2020.12.18
Designed by Tistory.