예를 들어 원격 마스터 브랜치에는 100개의 커밋 레코드가 있습니다
이제 [한 번만 제출한 것처럼] 1~10개의 커밋을 하나의 커밋으로 병합하고 나머지 11~100개의 커밋은 변경하지 않고 유지하려고 합니다. 달성하는 방법?
git rebase -i를 살펴보니 로컬 브랜치만 병합이 가능한 것 같습니다. 병합 후 원격 브랜치는 어떤 영향을 받나요?
git rebase -i HEAD~99그런 다음 가장 멀리 있는 10개의 스쿼시 커밋 앞에 있는 선택을 변경하세요. 그런 다음 강제 커밋 git push -f해 보세요. 작동하는지 모르겠습니다
위에서 언급한 방식은 맞지만 git rebase -i HEAD~100해야 합니다. HEAD~99 제출물은 2~100개까지만 읽을 수 있으며, 첫 번째 제출물은 읽을 수 없습니다.
git rebase -i HEAD~100
HEAD~99
또한 가장 먼 커밋 10개를 찾은 후 실제로 이를 스쿼시(또는 s)로 변경할 필요가 없습니다. 커밋 정보를 유지할 계획이 없다면 fixup(또는 f)을 사용하면 됩니다. .
수정 후에는 git push -f이어야 합니다. 타임라인과 후속 커밋 해시가 변경되었기 때문에 물론 코드는 변경되지 않습니다
git push -f
마지막 항목부터 첫 번째 항목까지 스크롤하는 데 시간이 오래 걸릴 수 있기 때문입니다. . 또 다른 아이디어를 제시해 보세요(이하 <xxx>는 변수를 나타내는 데 사용되므로 < 및 >를 입력할 필요는 없습니다. 단, 다른 기호는 반드시 입력해야 합니다):
현재 분기를 기반으로 새 분기 만들기: git checkout -b newBranch
git checkout -b newBranch
새 브랜치에서 첫 번째 커밋 이전으로 롤백: git reset --hard <commit1Hash>
git reset --hard <commit1Hash>
Cherry는 처음 10개의 커밋을 선택하여 버퍼에 넣습니다. git cherry-pick -n <commit1Hash>..<commit10Hash>
git cherry-pick -n <commit1Hash>..<commit10Hash>
다음 10개의 커밋을 제출하세요. git commit -m "<xxxx>"
git commit -m "<xxxx>"
Cherry는 버퍼에 넣지 않고 남은 커밋을 선택합니다(타임라인에 직접 추가): git cherry-pick -n <commit11Hash>..<commit100Hash>
git cherry-pick -n <commit11Hash>..<commit100Hash>
이런 식으로 새 지점에서 원하는 작업을 완료했습니다. 수정하려는 브랜치에 병합하기만 하면 됩니다
git rebase -i HEAD~99
그런 다음 가장 멀리 있는 10개의 스쿼시 커밋 앞에 있는 선택을 변경하세요.
그런 다음 강제 커밋 git push -f
해 보세요. 작동하는지 모르겠습니다
위에서 언급한 방식은 맞지만
git rebase -i HEAD~100
해야 합니다.HEAD~99
제출물은 2~100개까지만 읽을 수 있으며, 첫 번째 제출물은 읽을 수 없습니다.또한 가장 먼 커밋 10개를 찾은 후 실제로 이를 스쿼시(또는 s)로 변경할 필요가 없습니다. 커밋 정보를 유지할 계획이 없다면 fixup(또는 f)을 사용하면 됩니다. .
수정 후에는
git push -f
이어야 합니다. 타임라인과 후속 커밋 해시가 변경되었기 때문에 물론 코드는 변경되지 않습니다마지막 항목부터 첫 번째 항목까지 스크롤하는 데 시간이 오래 걸릴 수 있기 때문입니다. . 또 다른 아이디어를 제시해 보세요(이하 <xxx>는 변수를 나타내는 데 사용되므로 < 및 >를 입력할 필요는 없습니다. 단, 다른 기호는 반드시 입력해야 합니다):
현재 분기를 기반으로 새 분기 만들기:
git checkout -b newBranch
새 브랜치에서 첫 번째 커밋 이전으로 롤백:
git reset --hard <commit1Hash>
Cherry는 처음 10개의 커밋을 선택하여 버퍼에 넣습니다.
git cherry-pick -n <commit1Hash>..<commit10Hash>
다음 10개의 커밋을 제출하세요.
git commit -m "<xxxx>"
Cherry는 버퍼에 넣지 않고 남은 커밋을 선택합니다(타임라인에 직접 추가):
git cherry-pick -n <commit11Hash>..<commit100Hash>
이런 식으로 새 지점에서 원하는 작업을 완료했습니다. 수정하려는 브랜치에 병합하기만 하면 됩니다