2012-08-14 5 views
1

나는이 내 자식 저장소에서 다음과 같이 변경 내역 :자식은 제거 할 리베이스

---X---Y---Z---A---B---C 

내가 코드 Z의 기지에서 작업을 시작하고 만든 세 가지 변화 A, B와 C 이러한 변화의 각 Gerrit에 대한 별도의 리뷰로 업로드되었으며 각각은 이전의 변경 사항에 따라 다릅니다. 나는 변화 A를 제거 할 리뷰에 이어

, 그래서 내 변경 내역이라고 :

---X---Y---Z---B---C 

이 작업을 얻을 수 git rebase -igit commit의 정확한 흐름은 무엇입니까?

  1. 사용 git rebase -i HEAD~3 지난 3 커밋을 표시 :

    나는 다음과 같은 가정. 이 파일의 내용을 보여줍니다 : 다음 첫 번째 라인을 삭제하고 처음 커밋 제거 할 파일을 저장할 수 있습니다

    pick 1234567 Commit A message
    pick 1a2b3c4 Commit B message
    pick abcdefg Commit C message

  2. .

  3. 내가 박히 곳은 내가 git commit --amend하려고하면 난 단지는 C의 커밋 수정할 수 있습니다 나는 이렇게 repo upload . 또는 git push

  4. 을 사용하여 검토 리트 내 REBASE 변화를 추진하는 방법을 모른다 ...입니다

Gerrit 2.2를 사용 중이므로 검토 페이지에 rebase 버튼이 없습니다.

+2

단계가 없습니다. 3. 완료되었습니다 ... –

+0

제 3 단계를 수정하여 제 문제가있는 곳을 분명히합니다. 기본적으로 리베이스 변경 또는 B와 C를 어떻게 Gerrit로 푸시합니까? – Markus

답변

2

다음 단계는 지금 ​​나를 위해 일한 :

  1. 사용 자식 지난 3 커밋을 보여 -i HEAD ~ 3 리베이스. 이 파일의 내용을 보여줍니다 : 다음 첫 번째 라인을 삭제하고 처음 커밋 제거 할 파일을 저장할 수 있습니다

    pick 1234567 Commit A message
    pick 1a2b3c4 Commit B message
    pick abcdefg Commit C message

  2. .

    git push ssh://myserver:29418/project SHA1_of_B:ref/changes/123
    :

  3. git log 해주기 그때 각 리뷰에 개별적으로 변경 밀 수

  4. 새로운 SHA-1 값, Z의베이스 후의 내 B 및 C의 변화를 나타낸다 git push ssh://myserver:29418/project SHA1_of_C:ref/changes/789

  5. 123

789는 대한 검토 숫자 B와 C를 각각 변경하십시오. 내 B 및 C 변경 사항에는 각각 올바르게 리베이스 된 새 패치가 있습니다.

내 문제는 단지 git push 두 변경 사항을 개별적으로 이해해야한다는 것을 나타냅니다.

+0

불과 몇 주 전에 서명 한 두 명의 'markus'사용자가 있습니까? – eckes

0

2 단계 후 리베이스를 완료했습니다. 선택한 후 커밋 할 커밋을 선택합니다. 병합 충돌이 발생할 수 있습니다. git mergetool으로 수정하고 git rebase --continue

EDIT : 편집은 기록을 변경하기 때문에 수행해야합니다. 나는 이것이 어떻게 gerrit가 반응 할 것인지 모른다. 예를 들어 강제 플래그를 추가 할 수 있습니다. git push -f이지만 역사가 바뀌어 위험합니다.

+0

그리고 이러한 변경 사항을 B 및 C와 Gerrit의 종속성에 적용하여 검토 할 수 있습니까? – Markus