Git에 대해 공부하고, 정리한 시리즈
Intro 깃을 공부해야겠다고 다짐을 했다. 인터넷으로 정보를 찾아보긴 했지만, 글들이 중간 중간 끊겨있어서 책을 구매했다. 이고잉님이 작성하신 Do it 깃&깃허브 입문인데, 초보자가 보기에도 쉽고 자세히 잘 정리되어 있었다. 내 기억력도 별로 안좋아서 복습할겸, 나중에 쉽게 찾아볼겸 겸사 겸사 글로 작성하려고 한다. 책을 보고 직접 해보고 작성하지만, 책에 있는 내용만 쓰지는 …
버전 관리 깃 초기화하기 mkdir test cd test git init git init test cd test 깃을 사용할 수 있도록 디렉터리를 초기화하는 것이다. 위 두개는 같은 동작을 한다. test 디렉터리에 .git 디렉터리가 생긴다. 이 .git 디렉터리가 깃을 사용하면서 버전이 저장될 저장소(repository)이다. 깃의 구조 작업 트리 --(add)--> 스테이지 --(commit)--> 저장소 작업 트리 …
스테이징 (git.add) 스테이지에 작업 트리에서 수정한 파일을 추가한다. 깃에게 버전 만들 준비를 하라고 알려주는 것을 스테이징(staging), 스테이지에 올린다, 인덱스에 등록한다라고 표현한다. 스테이징 내용을 .git/index 파일에 저장하기 때문에 스테이지에 올리는 것을 인덱스에 등록한다라고 한다. git add "파일명" git add . git add .은 작업 트리에서 수정한 파일 전체를 스테이징한다. warning이 뜨는 …
저장소에 저장된 버전 확인 (git log) 방금 커밋한 버전에 대한 설명이 나온다. git log 커밋 히스토리(log) 설명 지금까지 커밋했던 기록을 살펴보기 위한 명령. git log를 입력하면, 지금까지 만든 버전이 화면에 나타나고, 각 버전마다 설명이 나온다. commit이라는 노란색 항목 옆에 숫자와 영문이 섞인 문자열은 커밋 해시(commit hash), 깃 해시(git hash)라고 부른다. …
변경 사항 확인하기 (git diff) 작업 트리에 있는 파일과 스테이지에 있는 파일을 비교, 스테이지에 있는 파일과 저장소에 있는 최신 커밋을 비교한다. 수정한 파일을 커밋하기 전에 최종적으로 검토할 수 있다. 파일이 수정되지 않으면, git diff를 입력해도 아무 것도 안뜬다. 작업 트리와 스테이지에 있는 파일 비교 (git diff) 파일을 하나 만들어서 스테이지에 …
git checkout 작업 트리에서 변경사항을 취소하는 방법 git checkout -- 파일명 git restore 파일명 커밋 이동하기 원하는 커밋으로 이동해서 브랜치를 만들어 작업할 수도 있겠다. git checkout (이동하려는 커밋 해시) git checkout master 브랜치 만들기 체크아웃으로 브랜치 생성과 이동을 동시에 할 수 있다. git checkout -b (브랜치 이름) 브랜치 사이 이동하기 …
git reset HEAD, git reset HEAD^ 수정된 파일을 되돌리기 위해서는 checkout을 사용했다. 수정된 파일을 스테이징 또는 커밋을 했다면 reset을 사용한다. git reset HEAD 수정된 파일을 스테이징 했을 때, 스테이징을 취소하는 방법 git reset HEAD 파일명 git restore --staged 파일명 git reset HEAD^ 가장 마지막에 한 커밋을 취소하는 방법 git reset …
각 단계별 버전 상태 표시 깃은 버전을 만드는 각 단계마다 파일 상태를 다르게 표시한다. tracked 파일과 untracked 파일 작업 트레이 있는 파일은 tracked 상태와 untracked 상태로 나뉜다. Tracked files Changes not staged for commit: 변경된 파일이 아직 스테이지에 올라가지 않았다. 깃은 한번이라도 커밋을 한 파일의 수정 여부를 계속 추척한다. tracked …
.gitignore 버전 관리 중인 디렉터리 안에 버전 관리를 하지 않을 특정 파일 또는 디렉터리가 있다면 .gitignore 파일을 만들어 목록을 지정할 수 있다. 이미 저장소에 올라간 파일은 제외되지 않는다. vim .gitignore ~ mybokk.txt .bin hi/ mybokk.txt 파일과 .bin 파일, hi 디렉터리는 버전 관리에서 제외된다. 주의 .gitignore 파일은 .gitignore.txt 파일이 아닌 .gitignore로 …
브랜치(Branch) 버전 관리 시스템에서는 나무가 가지에서 새 줄기를 뻗듯이 여러 갈래로 퍼지는 데이터 흐름을 가리키는 말로 사용. 분기점이라고 생각하면 된다. 브랜치 기능 깃으로 버전 관리를 시작하면 기본적으로 master라는 브랜치가 만들어진다. 사용자가 커밋할 때마다 master 브랜치는 최신 커밋을 가리킨다. 브랜치는 커밋을 가리키는 포인터와 비슷하다고 생각. 새 브랜치를 만들면 기존에 저장한 파일을 …
브랜치 병합 (merge) 브랜치 작업이 마무리되면 기존 브랜치와 합해야 한다. git merge (브랜치 이름) 빨간 박스는 Vim 편집기 화면이다. 빨리 감기 병합 master 브랜치에서 브랜치를 분기한 후에 master 브랜치에 아무 변화가 없다면, 분기한 브랜치에서 만든 최신 커밋을 master 브랜치가 가리키게만 하면 되기 때문에 브랜치 병합이 간단하다. Fast-forward라는 메시지가 나와서 빨리 …
수정 중인 파일 감추기 및 되돌리기 git stash 브랜치에서 파일을 수정하고 커밋하지 않은 상태에서 급하게 다른 파일을 커밋해야 할 경우가 있다. 커밋할 예정이 없고 작업중인 파일들은 잠시 감춰둘 수 있다. git stash save git stash git stash list stash를 사용하면 stash@{} 스택에 저장된다. stash@{}는 스택 구조라서 새로운 파일이 들어오면 기존 …
백업 (Backup) 컴퓨터는 두가지로 나뉜다 확실한 것 내 컴퓨터가 언젠가 고장 난다. 불확실한 것 내 컴퓨터가 언제 고장 날지 모른다. 파일은 외장 하드 디스크, USB 디스크 등 별도의 저장 장치 또는 드롭박스, 구글 드라이브같은 인터넷 서비스를 통해 백업 가능 깃 파일은 깃허브를 통해 가능 지금까지는 자신의 컴퓨터에서 작업한 뒤 그 …
협업 (Collavoration) 여러 사람이 함께 일할 수 있다는 강력한 장점이 생긴다. 누가 어느 부분을 어떻게 수정했는지 기록에 남기 때문에 오류가 생겼을때도 파악하기 쉽다. 원격 저장소 복제하기 (git clone) 복제한다. / 클론(clone) / 클로닝(cloning) 원격 저장소를 기존에 연결된 지역 저장소 외에 다른 지역 저장소에서 사용하려면 원격 저장소를 지역 저장소로 가져와야한다. git …
원격 브랜치 정보 가져오기 (git fetch) 페치(fetch)는 '불러오다, 가져오다' git fetch는 원격 저장소의 정보를 가져오는 기능이 있다. pull이 원격 저장소의 커밋을 가져와서 무조건 지역 저장소와 합친다면, fetch는 원격 브랜치에 어떤 변화가 있는지 그 정보만 가져온다. 깃허브에서 파일을 하나 추가했다. fetch 명령으로 원격 저장소의 정보를 가져오자. git fetch git checkout FETCH_HEAD …
오픈 소스 저장소 복제하기 (fork) 오픈 소스 저장소를 자신의 저장소로 복제하는 것을 fork라고 한다. 복제하고 싶은 저장소로 이동해서 Fork를 누르면 내 저장소에 저장소가 복제된 것을 확인할 수 있다. Fork부터 Pull requests까지 오픈 소스를 수정하고 수정 내역을 제작자에게 알려주는 방법은 아래와 같다. 수정을 할때 브런치를 만들어서 수정을 하는 것도 좋은 방법이다. …