2013-06-24 2 views
2

어떻게이 상태 (*)에 들어갈 수 있었는지 모르겠지만, 내 tfs/기본 원격 브랜치에 커밋이 있습니다. TFS에 존재하므로, 나는 그들을 제거하고 싶다. 내 역사는 다음과 같습니다.git-tfs로 깨진 기록을 정리하는 방법

A--B--C--D tfs/default 

...하지만 커밋 B와 C는 실제로 TFS에서 변경 집합이 아닙니다. 결과적으로 tfs/default를 체크 아웃 할 때 커밋 B와 C 때문에 TFS와 동기화되지 않습니다. 좋지 않습니다.

나는 내가 어떻게 든 TFS를 다시 할 수 있다면/그것을 해결 A를 원격 기본적으로 다른 실제 역사를 끝내고 "자식 TFS는 가져 오기"할 수있는 생각 :

A--D tfs/default 

하지만 난 아니에요 어떻게 할 수 있니? 그것은 어떤 차이가있는 경우


는 *), 나는 그것이 B와 C의 "자식 TFS가 보류"를 사용하여 관련된 생각, 어쩌면 약간의 커밋 다음과 "자식 TFS는 풀". 그러나 나는 확실하지 않다.

답변

2

예, 답변의 절반이 있습니다. tfs/default을 이전 단계로 재설정하고 가져와야합니다. 그것은 잘 알고있는 경우에는 일반적인 경우는 아니지만 git 파일을 편집하여 수행 할 수 있습니다. 쉬운 방법입니다.

  • .git 폴더로 이동 : 당신이 (그렇지 않으면 로컬 브랜치를 생성하여 일시적으로 저장) 당신이 BC 커밋을 유지하고 싶지 않은 것이 확실한 경우

    , 바로 다음 작업을 수행 TFS에서 가져 A

  • 커밋 파일 /refs/remotes/tfs/default
  • 편집 파일에 대한보고의 샤와 파일의 샤 교체

그리고 그것은 좋을 것입니다!

편집 : 명령 줄을 사용하여 수행 할 수도 있습니다. git update-ref tfs/default SHAofcommitA

+0

굉장! 너무 단순하고 완벽하게 작동합니다. 건배! – Anders

+0

흠. 단지'git reset -hard SHAofcommitA && git fetch'만으로 충분하지 않을까요? 내가 아는 한 올바른 길이야. – Learath2

+1

아니요, 리모컨을 git-tfs가 아닌 git 브랜치가 아니라 움직이기를 원합니다. – Philippe