git rebase 예제

여전히 혼란스럽다면 예를 살펴보겠습니다. 이러한 기술을 사용하면 `rebase`를 사용하여 변경한 내용을 취소할 수 있으므로 실수의 영향을 최소화할 수 있습니다. 그래서, 항상 먼저 다시 베이스를 시도, 당신의 git 역사는 당신을 감사합니다 (그리고 메모를, git 풀 –rebase뿐만 아니라- 나는 전체 가져 오기 / 병합 대 여기에 flamewar로 이동하지 않습니다). 지금까지 읽은 rebase에 대한 최고의 기사는이 시점에서 프로젝트의 파일을 편집하여 추가 변경을 할 수 있습니다. 변경할 때마다 새 커밋을 수행해야 하며 git 커밋 –amend 명령을 입력하여 이 작업을 수행할 수 있습니다. 모든 변경 작업이 완료되면 git rebase –continue를 실행할 수 있습니다. 대부분의 개발자는 대화형 리베이스를 사용하여 기능 분기를 주 코드 베이스로 병합하기 전에 다듬는 것을 좋아합니다. 이렇게 하면 “공식” 프로젝트 기록을 만들기 전에 중요하지 않은 커밋을 스쿼시하고, 사용되지 않는 커밋을 삭제하고, 다른 모든 것이 순서대로 작동하는지 확인할 수 있습니다. 다른 모든 사람들에게, 그것은 전체 기능이 잘 계획된 커밋의 단일 시리즈에서 개발 된 것처럼 보일 것입니다. 따라서 You에서 볼 수 있는 결과 대신 동일한 작업을 다시 새 병합 커밋으로 병합하는 대신 강제로 푸시된 rebase 작업 위에 Rebase와 같은 작업이 추가됩니다.

이 모든 것을 통해 리베이스가 완료되었습니다! 그러나, 리베이스는 항상 그렇게 원활하게 이동하지 않습니다 … 이 포크는 마스터에서 업스트림 변경 사항을 통합할 때와 동일한 방식으로 해결할 수 있습니다. 이 리베이스는 –rebase-merges 옵션을 사용하여 수행할 수 있습니다. 표준 모드에서 Git rebase가 자동으로 현재 작업 분기의 커밋을 받아 전달된 분기의 머리에 적용합니다. 그의 기능이 마스터에 병합되었을 때, 당신은 너무 마스터에 rebase, 그리고 역사는 것입니다 – 일단 당신이 완료되면 – 멋지게 “CupcakePictures”종속성이 실제로 그것을 필요로 “CupcakeColoring”후 시작된 방법을 보여줍니다 (병렬 작업이 표시되지 않습니다 아니 당신이 끊임없이 자신의 물건을 병합하여 했을 것 같은 혼란이 일어날 것입니다). git rebase의 이 사용은 로컬 정리와 유사하며 동시에 수행할 수 있지만 이 과정에서 마스터의 업스트림 커밋을 통합합니다. 리베이스 대상 분기가 아닌 다른 항목에서 리베이스 재생을 할 수도 있습니다. 예를 들어 다른 토픽 분기에서 토픽 분기가 있는 기록과 같은 기록을 가져가 십시오. 토픽 브랜치(서버)를 분기하여 프로젝트에 서버 측 기능을 추가하고 커밋을 만들었습니다. 그런 다음 클라이언트 측 변경(클라이언트)을 만들기 위해 분기하고 몇 번 커밋했습니다. 마지막으로 서버 분기로 돌아가서 몇 가지 커밋을 더 했습니다. Basic 병합의 이전 예제로 돌아가면 작업을 분산하고 두 개의 다른 분기에 커밋을 만든 것을 볼 수 있습니다.

rebase 자체는 기술적으로 이전 커밋을 제거하고 새 커밋을 해당 커밋과 동일하게 만들어 repo의 커밋 기록을 다시 작성합니다. 즉, 리베이스를 원격 리포지토리로 푸시하면 약간의 추가 주스가 필요합니다. git push –force를 사용하면 트릭이 잘 작동하지만 더 안전한 옵션은 git push –force-with-lease입니다. 후자는 당신이 발견하지 않은 업스트림 변경 사항을 경고하고 푸시를 방지 할 수 있습니다. 이렇게 하면 다른 사람의 작업을 덮어쓰지 않도록 하므로 더 안전한 옵션입니다. `git rebase -i HEAD~4`로 시작해 봅시다. 이렇게 하면 Git이 HEAD 포함에서 마지막 4개의 커밋을 대화식으로 다시 베이스로 재루를 지시합니다. `HEAD~4`는 “루트 커밋”을 가리키며, 이 커밋은 다시 베이스를 다질 커밋입니다. ENTER를 누르면 선택한 편집기(또는 유닉스 스타일 시스템에서 기본적으로 `vi`가 열립니다). 여기서 Git은 수행한 커밋으로 수행할 작업을 묻기만 하면 됩니다.

분기에 커밋하지만 해당 분기가 원격 컴퓨터에서 동시에 변경되는 경우 rebase를 사용하여 커밋을 이동하여 커밋을 원격 리포지토리로 푸시할 수 있습니다.

admin