GitHub / BitBucket에서 병합 커밋 지옥을 피하는 방법
우리는 repo에서 다음과 같은 많은 커밋으로 끝납니다.
Merge branch 'master' of bitbucket.org:user/repo
이것은 개발자가 자신의 로컬 포크를 최상위 저장소에 동기화 할 때마다 발생합니다.
어쨌든이 병합 커밋 지옥이 모든 저장소 로그를 어지럽히는 것을 피할 수 있습니까? 어떤 식 으로든 pull-request를 시작할 때이를 피할 수 있습니까?
로컬 VM에서만 수행되는 경우 git rebase를 수행 할 수 있다는 것을 알고 있습니다. GitHub / BitBucket UI에 동등한 항목이 있습니까?
너희들은 어떻게하니?
병합하기 전에 기능 분기 리베이스
병합 커밋을 피하려면 모든 커밋이 빨리 감기인지 확인해야합니다. 다음과 같이 병합하기 전에 기능 브랜치가 개발 라인에 깔끔하게 리베이스하는지 확인하여이를 수행합니다.
git checkout master
git checkout -b feature/foo
# make some commits
git rebase master
git checkout master
git merge --ff-only feature/foo
Rebase에는 플래그를 사용한 대화 형 리베이스를 포함하여 많은 -i
플래그가 있지만 가능한 한 단순하게 유지하고 병합에서 모든 분기 기록을 보존하려는 경우에는 필요하지 않을 수 있습니다.
--ff-only
깃발 사용
리베이스 외에도 --ff-only
플래그를 사용하면 빨리 감기 커밋 만 허용됩니다. 대신 병합 커밋이면 커밋이 이루어지지 않습니다. git-merge (1) 매뉴얼 페이지는 다음과 같이 말합니다.
--ff 전용
현재 HEAD가 이미 최신 상태이거나 병합이 빨리 감기로 해결 될 수없는 경우 0이 아닌 상태로 병합 및 종료를 거부합니다.
"Todd A. Jacobs"는 이미 언급 한 "rebase"개념입니다. 이것은 일을하는 더 자세한 방법 일뿐입니다.
마스터 브랜치에 있다고 가정 해 보겠습니다.
$ git branch
* master
수정을 원하므로 마스터에서 분기되는 "fixbranch"를 작성하십시오.
$ git checkout -b fixbranch
이 지점에서 며칠 동안 일하고 몇 번의 커밋을 수행했을 것입니다.
커밋을 중앙 마스터 리포지토리에 푸시하고 싶었던 날! 마스터를 체크 아웃하고 중앙 마스터 저장소에서 최신 변경 사항 가져 오기
$ git checkout master
$ git pull origin master
마스터로 fixbranch를 리베이스하여 깨끗한 히스토리를 갖고 로컬 리포지토리 자체에있는 경우 충돌을 해결하십시오.
$ git checkout fixbranch
$ git rebase master
이제 fixbranch가 중앙 마스터로 업데이트되었습니다. fixbranch를 마스터 브랜치에 병합하겠습니다.
$ git checkout master
$ git merge fixbranch
끝났어! 로컬 마스터를 중앙 마스터로 푸시하겠습니다.
$ git push origin master
https://git-scm.com/book/en/v2/Git-Branching-Rebasing
참고 URL : https://stackoverflow.com/questions/16358418/how-to-avoid-merge-commit-hell-on-github-bitbucket
'IT story' 카테고리의 다른 글
C ++ 11로 삭제 된 함수가 오버로드 해결에 참여하는 이유는 무엇입니까? (0) | 2020.09.16 |
---|---|
iOS 7에서 자동 푸시 알림이 작동하지 않습니다. (0) | 2020.09.16 |
WPF UserControl은 어떻게 WPF UserControl을 상속 할 수 있습니까? (0) | 2020.09.16 |
g ++로 다중 스레드 코드 컴파일 (0) | 2020.09.16 |
이제 std :: array가 생겼으니 C 스타일 배열의 용도는 무엇입니까? (0) | 2020.09.16 |