티스토리 뷰

강태공 님의 인프런 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
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함