2011-12-14 4 views
3

나는 꽤 복잡하게 얽혀 있습니다.Git : 되돌리기 전에 분기 후 병합이 변경됩니다.

나는 기능을 크게 줄인 구조 조정을 시도하여 master으로 변경했습니다. (이것이 실수 였음을 알고 있습니다.)

변경 사항이 적용된 프로그램을 사용할 수 없기 때문에 문제가 발생하기 시작했지만, 관련이없는 개선 사항이 master에 이미 적용되었습니다.

그래서, (예를 들어 restructure) 기반으로 (가) 되돌리기 전에 커밋 master에 구조 조정의 변화를 복귀하고 새로운 지점을 시작했다.

이제 문제는 더 많은 가치있는 커밋이 master에 만들어 졌기 때문에 그 개발을 쉽게하기 위해 restructure에 참여하고 싶습니다. 그러나 git merge은 초기 구조 조정의 복귀를 적용하려고 시도합니다.

나는 지금 무엇을해야할지 모르겠다. 나쁜 결정이 나중에 병합을 복잡하게 만들 수 있다고 느낀다. 나중에 master에 병합한다.

더 복잡하게하기 위해 restructure 가지가 푸시되었습니다. 그러나,이 모든 혼란을 해결한다면 git push --force을 사용하지 않아도됩니다. 이후 몇 명만 저장소를 가져 왔습니다. 이것은 확실히 XY Problem 시나리오 같은 느낌 - -

나는이에 대한 진정한 해결책이 묻는 질문에 대한 답변으로 실패 할 수 있음을 동의하지만 제목 :

참고 뭔가을 넣어했다 :이 모든 것이 나쁜 자식 워크 플로우의 증상이라는 것을 알고 있으며, 앞으로는 더 적절한 조치를 취하는 데 충분한 인센티브가 될 것입니다. 그러나 소급하여 잘못 처리하지는 못했기 때문에 문제가 계속 발생합니다.

답변

4

마스터 (?)를 푸시하지 않았으므로 강제로 밀어 넣기 및 내역을 다시 쓸 수는 있어도 마스터에서 git rebase -i을 방금 가져오고 되돌리기보다는 자체 재구성을 제거한 다음 restructure 분기를 만듭니다 (당신이 어쨌든 합병 할 것이기 때문에) 마스터 자체에서부터 시작하여 작업하십시오.

+1

고마워! 이것은 완벽하게 작동했습니다. 'master '는 실제로 밀렸지만, 이제는 하나의'--force'가 이제는이 문제를 일으키는 것보다 덜 파괴적이라고 생각합니다. – ehird

3

git cherry-pick을 사용하여 master에서 새 분기로 가져올 커밋 만 선택할 수 있습니다. 지정된 해시 태그의 변경 사항 만 가져옵니다. git-cherry-pick의 man 페이지를 확인하십시오.

+0

그래, 이전에 시도해 봤지만 * 구조 변경에 올바른 변경 사항을 가져 오지만 물건을 '마스터'로 병합하려고 시도한 후에 (로컬로, 체리 피킹이 수행되지 않았는지 확인하기 위해) 부러진 것), 모든 것이 이전보다 더 많이 떨어져 버린 것처럼 보였다. 틀림없이, 이것은 확실히 논란의 여지가있는 하나의 질문과는 별개의 문제입니다. – ehird

+0

일단 마스터에서 좋은 커밋을 선택하면 구조 조정 전에 커밋으로 돌아가는 마스터 (되돌릴 수 없음)를 다시 설정하십시오. 마스터를 푸시하지 않은 한 마지막으로 양호한 커밋 이후에 모든 커밋을 안전하게 삭제할 수 있습니다. 그러면 마스터의 팁이 구조 조정의 시작과 일치하므로 함께 병합하면 원하는 것을 얻을 수 있습니다. – tpg2114

+0

삭제를 시작하기 전에이 저장소를 백업하는 것이 좋습니다. :) – tpg2114

관련 문제