git 원격 커밋 병합
曾经蜡笔没有小新
曾经蜡笔没有小新 2017-05-02 09:47:56
0
2
648

예를 들어 원격 마스터 브랜치에는 100개의 커밋 레코드가 있습니다

이제 [한 번만 제출한 것처럼] 1~10개의 커밋을 하나의 커밋으로 병합하고 나머지 11~100개의 커밋은 변경하지 않고 유지하려고 합니다. 달성하는 방법?

git rebase -i를 살펴보니 로컬 브랜치만 병합이 가능한 것 같습니다. 병합 후 원격 브랜치는 어떤 영향을 받나요?

曾经蜡笔没有小新
曾经蜡笔没有小新

모든 응답(2)
阿神

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>는 변수를 나타내는 데 사용되므로 < 및 >를 입력할 필요는 없습니다. 단, 다른 기호는 반드시 입력해야 합니다):

  1. 현재 분기를 기반으로 새 분기 만들기: git checkout -b newBranch

  2. 새 브랜치에서 첫 번째 커밋 이전으로 롤백: git reset --hard <commit1Hash>

  3. Cherry는 처음 10개의 커밋을 선택하여 버퍼에 넣습니다. git cherry-pick -n <commit1Hash>..<commit10Hash>

  4. 다음 10개의 커밋을 제출하세요. git commit -m "<xxxx>"

  5. Cherry는 버퍼에 넣지 않고 남은 커밋을 선택합니다(타임라인에 직접 추가): git cherry-pick -n <commit11Hash>..<commit100Hash>

이런 식으로 새 지점에서 원하는 작업을 완료했습니다. 수정하려는 브랜치에 병합하기만 하면 됩니다

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿