일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 작성
- 타이머앱
- Android
- todofication
- java.lang.OutOfMemoryError: Java heap space
- RxJava
- recyclerview
- onViewCreated
- andorid
- 안드로이드 클린 아키텍쳐
- kotlin
- 뷰 상태복구
- 올인원타이머
- RX
- android clean architecture
- 뷰 상태 저장
- 카드내역 공유
- 특가촌
- List
- 안드로이드
- 특가알람
- moveToState
- 카드 내역 공유 앱
- fragment
- 대학톡
- nvidia-docker
- Koin
- compileKotlin FAILED
- Quickly
- 특가게시판
- Today
- Total
seoft
git merge, rebase, cherry-pick, reset, Squash and merge 정리 본문
[merge, rebase]
공통 목적 : PR전, 작업 브랜치가 대상 브랜치와 fast-forward상태가 되도록 하기위함
merge
두개 혹은 세개의 브렌치를 활용하여 새로운 commit을 생성 후 현재 브랜치에 덧붙임
3-way merge : 총 세가지의 commit(브랜치a,b,공통조상)을 활용하여 새로운 commit을 생성 후 현재 브랜치에 덧붙임
fast forward merge : merge의 피대상(base) 브랜치와 대상(changed) 브랜치가 합칠때 피대상 브랜치의 변화가 없을 경우 피대상 브랜치의 포인터만 대상브랜치로 옮겨짐
*git merge -X [ours or theirs] 브랜치명 ([내것 or 상대것]으로 conflict 없이 auto merge, 단 기존 파일 delete 처리 필요)
rebase
대상(ㄴ) 브렌치를 현 base로 두고 이전 base에서 피대상(ㄱ) 브렌치까지 이어진 commit을 현 base부터 이어 덧붙임
rebase 후 [대상(ㄴ) 브랜치 혹은 이전 base 브랜치로] wd를 바꾸고 commit이 이어짐이 완료된 피대상(ㄱ) 브랜치로 fast forword merge하여 commit 기록 가능
*git hub는 pull 진행시 rebase가 진행됨
쓰이는 상황을 위한 비교관점 : 작업 히스토리의 유지상태 vs clean상태
선 상황. checkout 후 PR 시점이 길지 않은 경우 : PR 가능성 유무 체크 후 불가능 상황일때 밑의 상황중 하나를 선택하여 진행
A 상황. 작업 브렌치가 하나로 통합되기에 커밋이 과하게 많아서 합쳐질 경우 각 커밋 단계를 가지는거 보다 가독성이 떨어진다
>> merge
B 상황. 작업 브렌치에 커밋이 적당히 있어 합쳐져도 읽을만한 가독성이 유지되기 때문에 깔끔한 커밋 히스토리를 남기고 싶다
>> rebase
[cherry-pick]
대상(ㄴ)브랜치의 특정 commit을 피대상(ㄱ) 브랜치에 적용시킬때 사용
[reset -hard, -soft]
hard : 커밋 id의 특정상황의 파일과 디랙토리 상태가 적용
soft : 커밋 id의 특정상황의 파일과 디랙토리 상태가 적용 + 커밋 id의 특정상황 이후 추가되거나 바뀐 사항은 stage됨
[Squash and merge in Git Hub]
기존 merge와 달리 PR시 반영될 커밋들을 하나로 합쳐 새로운 커밋으로 만들고 대상 브랜치에서만 참조됨
[Ref]
merge rebase ref
https://www.tuwlab.com/ece/22218
https://velog.io/@godori/Git-Rebase
https://milooy.wordpress.com/2018/10/25/git-rebase-or-merge-commit/
cherry-pick ref
https://imasoftwareengineer.tistory.com/7
Squash and merge
https://meetup.toast.com/posts/122
'etc' 카테고리의 다른 글
ubuntu java gradle 설치, 환경변수 설정 (0) | 2022.12.18 |
---|---|
Android Studio / intellij 설치 후 초기 세팅 (0) | 2020.01.06 |
Tensorflow Docker 환경에서 GPU 연동 (0) | 2019.12.15 |
Ubuntu 18.04 설치 ~ nvidia-docker 세팅 (0) | 2019.12.15 |
ubuntu 터미널 현 디렉토리 우측에 git branch 출력 (2) | 2019.10.07 |