2017-12-25 3 views
0

일부 repo에서 PR을 작성했으며 로컬에서 해당 지점을 삭제했습니다. (PR0에서 거의 커밋이 병합되지 않은) 잠시 후 PR에서 변경 작업을 수행하려고 했으므로 같은 이름의 분기를 작성하고 모든 변경 사항을 가져 와서 커밋을 추가했습니다. 그러나 변경 사항을 적용하자마자 repo의 모든 커밋 (약 3k 커밋)이 표시되었습니다.문제가 발생했습니다.

처음에는 분기가 master의 다른 상태로 만들어졌고 다시 분기를 만들었을 때 master의 다른 상태 였으므로 최대한 빨리 모든 차이점이 반영되었습니다. PR이 3k로 커밋됩니다.

이제이 문제를 해결하고 싶습니다. 나는 PR의 내 커밋만을 보여주고 싶다. 그게 어떻게 가능해?

+0

참조 [this] (https://github.com/sympy/sympy/pull/12147) –

답변

2

는이

먼저 당신은 로그 출력 here 포맷에 대한 자세한 정보를 찾을 수 있습니다

git log --after="2014-7-1" --before="2014-7-4" --author="John"

으로 이전 커밋을 찾을 시도 할 수 있습니다. 해당 지역의 지점에서

는 이전 커밋에 머리를 재설정하고 벚꽃이는 이전 커밋과 새가 당신의 PR을 만듭니다 새로운 커밋
git reset <old commit ID>
git stash; git stash drop
git cherry-pick <new commit ID's>
git push -f <remote> <branch-name>

에게 선택 사람. 근본적으로 지사의 모든 커밋을 제거합니다.

귀하의 분석이 맞는 것 같습니다. 주인은 당신이 PR을 만들 때와 다른 상태에있었습니다.

당긴 후에 새 분기를 만들 필요는 없지만. 원격이 아닌 로컬 저장소에서 지점을 삭제했습니다.

는 당신은 git pullgit checkout <branch-name>을 할 수 있었던 및 지점은 나는 당신의 결론이 정확하다고 생각하면.

+0

이상한 일이지만 오래된 커밋을 찾을 수 없습니다. git log를 사용했습니다. 'merge pull'이 완료되면 커밋은 사라지나요? 나는 그것이 왜 보이지 않는지 모른다. –

+0

커밋은 사라지지 않았지만 커밋 수가 너무 많아서 찾기가 어려울 수도 있습니다. 커밋을 검색하기 위해 내 대답을 업데이트했습니다. –

+0

그것은 일했다! 고마워요 :) –

1

에서 왼쪽 동일한 상태에서 해당 지역의 repo에 다시 것입니다. 당신은 주인에게서 당신의 가지로 모든 변화를 밀어 넣은 것 같습니다. 내가 계속하기 전에

나는 몇 가지 가정을 만들 수 있습니다 :

  • 당신이

  • 는 향후 에 어떤 시점에서 마스터에 지점을 병합 할 첫 번째 장소에서 마스터에서 분기 그것들은 대부분 제가 나열한 세 번째 해결책입니다. 당신의 홍보와의 원래 상태에서 모든 커밋을 선택 마스터와 체리에서 새로운 지점을 만들

    • : 내가 생각할 수있는이 벗어나 려의 방법

    커플 변경 사항.그러나 체리 선택을 많이 변경 한 경우 나 나중에 변경 한 내용이 마스터 분기의 중간 변경으로 인해 이전 변경 사항과 충돌하는 경우 문제가 될 수 있습니다.

  • 복제본을 새로 작성하기 전에 가장 최근의 커밋 시점에서 분기를 체크 아웃하고 분기를 강제로 밀어 넣으십시오 (아무도 해당 분기에 대한 변경 사항을 적용하지 않았다고 가정합니다). 변경. 잠재적 인 문제 : 잘 "강제 푸시"는 보통 스타 워즈 우주에서보다 잘 작동합니다.

  • 지사를 지사에 병합하십시오. 최종 목표가 분기를 마스터로 합치는 것이라고 가정하면, 이것은 가장 안전한 옵션 일 수 있습니다. 문제점 : 내 경험에 비추어 볼 때, 미리보기 미리보기는 때로는 혼란스러워하고 그런 일을 한 후에 이미 마스터에있는 변화를 보여줍니다. 일반적으로 새로운 홍보를 만드는 것이 도움이됩니다. 또 다른 명백한 문제는 지점에서 편집 된 파일에 영향을 미치는 마스터의 변경 - 충돌 또는 단순히 의도를 모호하게하는 것입니다.

가이 사용 되돌에서 길을 꿈틀 거리고있는 방법은 아마도,하지만 그게 내 첫 번째 옵션되지 않을 것은 (어쩌면 당신은이 솔루션을 다른 대답을 얻을 것이다). 내 제안은 위에 나열된 마지막 것입니다 - 귀하의 지점 (모든 가정을 고려)에 마스터를 병합.

피우, 너무 길면 유감 스럽지만 잘하면 그것은 당신을 도울 것입니다. 다른 답변도보기를 호기심.

관련 문제