2013-08-12 5 views
0

을 밀어 됐어요 :이미 나는이 중복 인 경우 확실하지 않다거나 일회성 시나리오의 종류의하지

은 내가 "베타"지점을 가지고, 새로운 "리팩토링을 시작 "지점.

  1. "refactor"브랜치에서 많은 코드를 작성했습니다.
  2. 나는 리팩토링 (git checkout refactor && git pull origin beta)
  3. 내 변화가 준비가에 베타 버전에서 최신 변경 사항을 뽑아, 그래서 베타를 체크 아웃, 베타로 리팩토링 변경 사항을 당겼다. (git checkout beta && git pull origin refactor)
  4. 그래서 베타에 최신 당겨하는 git pull을해야했다, 내 베타 분기 최신 아니었다 깨달았다.
  5. 은 이제 베타 분기, 최신했다 최신은 (리팩터링 베타에 병합되고 있던 자동 커밋 메시지를 받았습니다)가 있었다 확인하기 위해 다른 git pull origin refactor했다. , 내가 가진 그래서 자식이 먼저 끌어 했어야 3 단계에서

    1. :
    2. 나는 지금은 내가 잘못했던 두 가지를 실현하고있어 그래서 내 코드 :(

    를 밀어 베타의 최신 변경 집합은 3 단계에서

  6. , 나는 내가 대신 git pull origin refactor (내가 이런 짓을 왜 월요일이고 난 그냥 시작 베타에 내 멋진 리팩토링 코드를 얻고 싶었다, 나 한테 물어하지의 git merge refactor라고해야 실현 테스트). 나는이 두 가지를 모두 수행했는지 알았습니다. 나중 단계의 어떤 것도 woul이 아닙니다. d가 필요했습니다. 기술적으로, 모든 코드가 미세 보이지만, GitHub의에서 네트워크 그래프는 슈퍼 펑키 보이는, 내가 하나가 깨끗한 "병합"나는 쉽게 롤백 할 수있는 커밋이 없습니다 :

그래서 제 질문은 이것이다 합병 된 지점을 되 돌리는 것이 필요하다면 베타는 이제 리팩토링 지점의 모든 개인 커밋을 갖게됩니다. 내 stupified 병합을 롤백하고 더 깨끗한 방식으로 할 수있는 쉬운 방법이 있습니까?

내가 git checkout beta && git reset --hard [email protected]{"1 hour ago"} 일을 시도하지만, 문제는 그 대신에 나는 내가 자식이 먼저 끌어 했어야 할 때 병합을 실행하기 전에 최신 버전 있었어야 베타의 오래된 로컬 버전에 저를 얻을 수있다. 나는 git reset --hard origin/[email protected]{"1 hour ago"}처럼 리모컨 베타 브랜치 @ 1 시간 전에 다시 설정 한 다음 git merge refactor을 수행하는 방법이 있어야한다고 생각합니다. 난 그 변경 사항을 추진하고 원격 커밋이 덮어 씌워 졌는지 확인할 수 있을까요?

미리 도움 주셔서 감사합니다. 리팩토링이 꽤 중요하기 때문에 "git reset"을 사용하는 것에 대해 주저합니다. 그리고 베타 버전에서 보류중인 변경 사항이 많아서 리셋과 코드 손실에 대해 걱정하고 있습니다. 내가 수동으로 당겨 된 리팩토링 지점에서 커밋을 되돌리려하는 데에 대한 걱정보다.

답변

0

당신은 베타 분기의 힘 푸시을 했습니까?

그렇다면 다른 개발자와 동기화 할 필요가 없다고 가정하면 다시 강제로 밀어 넣어도됩니다.이 경우 내가 제안 :

  • 는 지난 10 커밋에 대한 예를 들어 대화 형 REBASE을 "자식 리베이스 -i HEAD ~ 10"
  • 는 리팩토링 지점에서 병합 베타가 깨끗한 지 확인하십시오 가지고 커밋을 제거하고 지점의 업데이트 된 최신 버전은
  • 힘은
  • 이 지점을 리팩토링 및 베타에 그것을 리베이스 (자식 체크 아웃 리팩터링에게 & & 자식을 리베이스 베타)
  • 베타로 이동 (FF없이에 자식 체크 아웃 베타 리팩토링을 병합로 이동 밀어 & & 자식은 힘 푸시 할 수없는 경우이 당신에게 좋은 읽을 역사 그래프

을 줄 것이다 당신이 더 많은 그래프를 복잡하게 할 수

  • --no-FF 리팩토링)을 병합합니다. 리팩터러에서 빠져 나온 베타의 모든 커밋에 대해 되돌리기 커밋을 할 수 있습니다. 이렇게하면 베타 버전을 깨끗하고 업데이트 된 상태로 만들 수 있습니다. 그 후에 상단 레서피의 마지막 3 단계를 반복하십시오. 당신은 그것의 좋은 그래프를 얻을 것이다, 그러나이 하나가 머무르기 전에 역사.

  • +0

    아니요, 다른 개발자의 보류중인 변경 사항이 있었기 때문에 리셋 후에 강제로 밀어 넣지 않았습니다. 변경 사항을 삭제하지 않으려했습니다. 리팩토링 담당자의 작업이 끝났으므로이 순간에 번거롭지는 않을 것입니다. 그러나 모든 작업을 되돌리려면 결국 꼭 사용해야합니다. 감사! – streetlogics