2014-09-19 2 views
1

커밋과 커밋을 약간 변경 한 후에 작업 한 후 git push도 수행했습니다.2 개의 다른 커밋을 병합

그러나 갑자기 bitbucket repo에 이미 푸시 된 수정 된 파일에 약간의 문제가 있음을 발견했습니다. 따라서 실행 취소하지 않고 수동으로 파일을 처음으로 기본값으로 변경했습니다. 이것이 바로 워크 플로우입니다.

C1
README.md :
"This is the content of the first readme on README.md"

  1. git add README.md
  2. git commit -m 'initialize README.md'
  3. git push -u origin master
  4. 완료!
  5. 위의 같은
    The content is new on README.md

    1. DONE :

    그 이후
    C2
    , 나는로 내 파일을 업데이트!
    This is the content of the first readme on README.md add a few new lines add a few new lines

    1. git add README.md
    2. DONE :

    C3 갑자기 나는이 같은 몇 가지 변경을했다!

내가이 상태에 커밋 할 수없는거야 아니면 내가 내 C2 변경을 잃게됩니다. 이 경우, git pushC3이고 작업 사본을 계속하기 전에 C2C3을 병합하고 싶지만 "변경"만 병합하고 싶습니다. 그래서,이 경우,이 같은 것 :
The content is new on README.md add a few new lines add a few new lines

내가 이런 짓을 왜 질문을, 나는 "첫 번째 줄"을 수정하기 전에 add a few lines 처음에 일을 잊고 있기 때문이다.

나는 git revert이 마술을 할 것이라고 생각하지 않습니다. 관심을 가져 주셔서 감사합니다. :)

편집 : git cherry-pick도 덮어 것이 로컬 변경 사항은

답변

1

을 T___T 어떻게 리베이스에 대해 :

1 단계 : $git rebase -i HEAD^^^

이 기본 편집기로 이동합니다 어디에 마지막 두 커밋이 나열되고 스왑합니다.

리베이스 중에 C3 커밋은 C2 커밋이되고 C2는 C3가됩니다.

그래서 효과적으로 이러한 것 Rebase 현재 2/2 동안 충돌을 해결 한 후 커밋 :

C1 README.md : This is the content of the first readme on README.md

C2 ' README.md : This is the content of the first readme on README.md add a few new lines add a few new lines

C3 ' README.md The content is new on README.md add a few new lines add a few new lines

지금 당신은 당신의 상류에 밀어 강제해야합니다.

$git push -f -u origin master

참고 : 그것은 당신이 리베이스/당신이 강제로 풀을 할에서 가져온 이미 다른 사람에게 또는 가져 오기 및 병합해야합니다 변경 내용을 덮어 쓰게됩니다.

희망 사항이 질문에 대한 답변입니다.

+1

또는 rebase하고 싶지 않은 경우 (너무 많은 ppl이 변경 사항을 가져 왔습니다) C2에서 분기를 삭제할 수 있으며 C3에서 'git merge C2-branch'를 수행합니다 –

+0

감사합니다. :). Btw,이 오류는'git rebase -i HEAD ^^^' "치명적인 오류가 발생했습니다 : 단일 개정이 필요합니다 업스트림 HEAD가 유효하지 않습니다 ^^^" – mochadwi

+1

죄송합니다! 내 잘못이야! 'git rebase -i HEAD ^^ ' 저장소에있는 첫 번째 커밋의 rebase를 수행 할 수 없기 때문입니다. 그것의 필요 최소한 수정을위한 단 하나 커밋. 이것이 나의 모든 저장소에서 0 번째 커밋을 만드는 이유입니다.이 0 번째 커밋은 빈 커밋입니다. –

관련 문제