GOAL
1) rebase를 이용한 작업 순서의 조작
2) 코드 리뷰를 위한 pull request
3) 작업 한 내용을 취소하기 위한 revert
4) 하나의 변경사항만 가져오기 cherry-pick
참고
reset 은 local 저장소에 있는 것만 한다.
원격 저장소에 올라가 다른 사람이 올라가 있는 상태에서 하면 큰일나 !
- 이 때는 revert 를 써야한다.
.gitignore
: 저장소에 올라가면 안되는 파일을 관리한다.
.git > info > exclude
: 개인적인 정책
config.txt 의 경우, 애플리케이션 동작에 꼭 필요하지만 commit 되어서는 안되는 파일
팀 정책
형식 자체는 공유해야하는 경우, file 뒤에 template 이라는 확장자를 붙인다.
- 형식이 저장된 파일임을 약속
생활코딩 - git conflict - 알면 기능, 모르면 사고
master branch
: common.txt 생성 및 commit1
2
3
4
exp branch
: exp branch 생성 exp branch
git commit -am common.txt1
e2
3
e4
1
2
m3
m4
master branch
git commit -am "master common"참고
exp branch
git merge master : exp 에 master 내용 병합local 저장소와 원격 저장소의 어떤 branch 를 연결할지 알려줘야한다.
git clone "저장소 주소" .
: 현재 directory 에 복사
같은 이름의 branch 라도 git 은 원격 저장소의 branch 와 로컬 저장소의 branch 를 따로 취급한다.
Branch 를 효율적으로 사용하여 소스 코드를 효율적으로 관리하는 것
release branch 를 만들고 release 에 포함될 기능만 여기에 commit
- 자주 develop branch 와 merge
release branch 를 master 와 병합
참고
fast merge off git config --global merge.ff no
참고
fast forward : branch 간 수정사항이 없는 경우에는 branch 가 이동하기만 하면 되어서 merge commit 없이 branch 이동이 생긴다. 하지만,
git flow 에서는 어떤 것들이 병합되었는지 명확히 표시하기 위해 --no-ff 옵션으로 merge commit 을 강제 생성한다.
git reset --hard HEAD@{1}
git checkout develop
git merge --no-ff release/1.0 # develop 에 release/1.0 병합
git checkout 2321c # 첫번째 commit
git checkout -b master # master branch 생성 ( 처음에 잊어서.. )
git merge --no-ff release/1.0
작은 작업 단위도 branch 에서 한다.
master branch 는 항상 정상 동작할 수 있어야 한다.
변경 사항 반영을 위해 요청하는 요청서
참고
commit message 오류 수정 : git commit --ament
작업 명세를 볼 수 있다
상황
A, B 가 서로 다른 branch 에서 작업한 것이 서로 충돌났을 경우
commit 을 가리키는 reference 3 가지
- HEAD
- branch
- tag
- commit 에 이름을 붙임 ( 정적 )
하나의 commit 만 반영하고 싶은 경우
master 에서 exp 의 e2 까지만 병합하고 싶은 경우
git cherry-pick 3cfb0
복잡한 timeline 을 간소화하기 위함
merge 와 rebase 의 결과는 같다.
git revert "취소하려는 작업의 commit id"