2012-07-12 6 views
4

나는이 문제를 가지고 있어요 거기에 GIT 사용자의 무리 거기에 확신 :GIT에서 잘못된 픽스 업을 되돌리려면?

  1. 마스터에서 분기를 작성가. 그것을 featureX이라고합시다.
    • 당신은 당신의 수정을 커밋 : featureX에서 작업하는 동안
    • 어딘가에는, 당신은 당신이 이전의 픽스 업 커밋 만들고 싶어 알고 있습니다.
    • 리베이스 및 스쿼시/픽스 업을 수행합니다.
  2. 나중에 변경 사항을 featureX에 반영하려면 마스터에 대해 리베이스해야합니다.
  3. 분기가 분기되어 (마스터에서 수정되지 않았습니다) 문제가 발생합니다. 너 나쁜 날이야.

이것은 두 번째로 발생합니다. 처음으로, 나는 featureX에 많은 역사를 가지고 있지 않았고 간단하게 master의 새로운 지점을 만들었습니다. 이것에 대해 어떻게 생각하십니까? 어떻게 해결할 수 있니?git reset 특정 reflog가 가능합니까? 이 경우 rebase를 취소하고 수정 커밋을 featureX (대화 형 리베이스 사용) 위로 되돌릴 수 있습니다.

나는 그것에 대해 갈 여러 가지 방법이있을 것이라고 확신하지만, 이것은 일반적인 문제라고 생각합니다.

답변

1

예. 이전에 체크 아웃 한 항목 (reflog)으로 모든 분기를 재설정 할 수 있습니다. 픽스 업이 여전히 FeatureX에 있기 때문에 리베이스는 픽스 업을 수행하지 않는 경우와 다르게 작동합니다. 마스터의 차이가 featureX 브랜치의 커밋과 충돌하는 경우에만 문제가됩니다.

두 번째로, 사람들이 처음으로 자식을 배울 때, rebase의 awesomeness와의 사랑에 빠지게됩니다. 그러나 나는 다시 합병했다. 그것은 더 간단합니다. 역사가 일어 났을 때 역사를 표시하고 어떤 훈련을 강요합니다. 내 워크 플로는 다음과 같습니다. http://dymitruk.com/blog/2012/02/05/branch-per-feature/

+0

답변 해 주셔서 감사합니다! 하지만 결함이있는 리베이스 이후에 변경된 사항 (reflog에서)이 있기 때문에 단순히 리베이스 전에 돌아가는 것에 관심이 없습니다. 차라리 특정 rebase를 취소 할 수 있습니다. 즉, reflog를 리베이스 할 수 있습니까? :) 저는 현재 현재 코드 기반을 가지고 있지 않지만 10 시간 정도 후에 시도 할 수 있습니다. 일반적으로 rebasing에 관하여; 기능을 다시 통합 분기로 병합합니다. 최신 통합 분기 변경 사항을 기능 분기에 동기화하려는 경우 다시 트리밍합니다. 너가하는 일이 아니야? – Ztyx

+0

리베이스가하는 일을 이해해야합니다. 다른 시작점으로 이동하려는 모든 커밋에 대한 패치를 생성합니다. 그런 다음 하나씩 적용합니다. 리베이스를 "실행 취소"하려면 단순히 다시 리베이스하지만 커밋 범위를 시작할 위치를 지정하십시오. 구문은 다음과 같습니다 :'git rebase --onto new-start begin-of-range end-of-range'. 그리고 아니, 나는 거의 rebase. 신중하게 내 게시물을 읽는다면, 나는 같은 지점에서 각 작업이나 기능을 시작한다는 것을 알 수 있습니다. 거기에서, 어떤 조작은 때로는 재설정 할 수있는 2 개의 특수 분기와 기능의 병합입니다. –

+0

또한 google "컴퓨터 과학자 용 자식"입니다. 역사가 git에 어떻게 저장되는지 철저히 이해해야합니다. –

관련 문제