[Git] 3. git-flow 흐름 안내서(정리)
git-flow 흐름에 대해서 알아보고 정리해보는 시간이다.
7. git-flow 안내서
새로운 저장소 만들기
폴더를 하나 만들고
mkdir gittest
그 안에서 아래 명령을 실행하면
git init
새로운 git 저장소
가 만들어집니다.
작업의 흐름
로컬 저장소는 git이 관리하는 3가지 단계로 구성되어 있다.
첫번째는 Working directory
(작업공간)은 실제 파일들로 이루어져있고,
두번째는 Index
(인덱스)는 staging area(준비 영역)의 역할을 하며,
마지막으로는 HEAD
는 최종 확정본(commit)을 나타난다.
로컬저장소에서 stating과 commit
[Working directory]
에서 변경된 파일을 추가
git add */<파일 이름>
[staging area]
(Index)에서 실제로 변경 내용을 확정
git commit -m "이번 확정본에 대한 설명"
이러면 [local repository]
(HEAD)에 반영이 되고
원격 저장소에는 아직 반영이 안된 상태이며,
여기서 push를 해야만 비로소 원격 저장소로 반영이 된다.
원격 저장소로 변경 내용 push하기
현재의 변경 내용은 아직 로컬 저장소
의 HEAD 안에 머물고 있다.
이제 이 변경 내용을 원격 저장소
로 올리기 위해서는 push
명령어를 사용한다.
git push origin master
(다른 가지를 발행하려면 master를 원하는 가지 이름으로 바꿔주세요.)
branch(가지) 치기
여러분이 저장소를 새로 만들면 기본으로 master 가지가 만들어지고,
이제 다른 가지를 만들어서 개발을 진행하고, 나중에 개발이 완료되면 master 가지로 돌아와 merge
(병합)하면 된다.
아래 명령으로 부모 가지에서 “feature_x”라는 이름의 가지를 만들고 갈아탄다.
git checkout -b feature_x
아래 명령으로 master 가지로 돌아올 수 있다.
git checkout master
아래 명령으로는 가지를 삭제할 수 있다.
git branch -d feature_x
새로 만든 가지를 원격 저장소로 전송하기 전까지는 자기 PC 로컬 저장소에만 존재하기 때문에, 다른 사람들이 접근할 수 없다.
git push origin <가지 이름>
갱신과 병합은 pull
여러분의 로컬 저장소를 원격 저장소에 맞춰 갱신하려면 pull
를 이용한다.
(fetch + merge = pull)
git pull
이렇게 하면 원격 저장소의 변경 내용이 로컬 저장소에 fetch
(받아지고), merge
(병합)된다.
다른 가지에 있는 변경 내용을 현재 가지(예를 들면, master 가지)에 병합 할 때는
git merge <가지 이름>
병합 시 충돌(conflicts)이 일어나면, git이 알려주는 파일의 충돌 부분을 여러분이 직접 수정해서 병합이 가능하도록 충돌을 해결하면 아래 명령으로 git에게 아까의 파일을 병합하라고 알려주세요.
git add <파일 이름>
변경 내용을 병합하기 전에, 어떻게 바뀌었는지 비교해볼 수도 있어요.
git diff <원래 가지> <비교 대상 가지>
pull
을 실행하면, 원격 저장소의 내용을 가져와 자동으로 merge
을 하려고 한다. 그래서 단순히 원격 저장소의 내용을 확인만 하고 로컬 데이터와 병합은 하고 싶지 않은 경우에 fetch
를 사용한다.
git에 대한 포스트는 계속 반복적으로 꾸준히 올리면서 정리하는게 좋은 것 같다.
참고
- git 간편 안내서: https://rogerdudler.github.io/git-guide/index.ko.html
- git flow 흐름 : https://danielkummer.github.io/git-flow-cheatsheet/index.ko_KR.html