2014-09-01 3 views
0

나는 자식 저장소 (git repository)를 가지고 있으며, 시나리오는 이와 같다.git에서 푸시를 실행 취소하는 방법은 무엇입니까?

과거 : 나는이 변화를 만들어

현재 때문에, 저장소에 밀려 102

레브 : (103)

지금, 내가 모든 변경 사항을 취소하고 102 레브 다시 가고 싶어 레브 사용자가 체크 아웃/리포지토리를 업데이트 할 때 리볼빙 102와 동일합니다. 리 버전을 시도했지만 리비전 103은 여전히 ​​원격 리포지토리에 남아 있으므로 체크 아웃 또는 업데이트시 체크 아웃되는 rev 103입니다. 감사.

+0

아마이 도움이 될 것입니다. (http://stackoverflow.com/questions/1270514/undoing-a-git-push) – ekostadinov

답변

0

여러 가지 방법이 있으며, 내가 때때로 사용하는 방법은 다음과 같습니다.

먼저 커밋을 이전 커밋으로 재설정하십시오. 확실하게 재설정 할 때 커밋을 지정할 수 있습니다.

git reset --hard HEAD~1 

그런 다음 -f 또는 --force-with-lease와 원격 저장소에 밀어 강제. 이후 옵션은 rev 103 (있는 경우) 이후에 다른 사용자의 새 커밋을 덮어 쓰지 않도록하기 위해 사용됩니다.

git push origin master --force-with-lease 

는 그러나 전제 조건은 힘 푸시 역사를 덮어 쓸 것이다 정말 위험하므로 원격 저장소, 강제로 밀어 수 있다는 것입니다.

+0

이 조작은 위험 할 수 있으므로 대신'되돌리기 '를 사용하는 것이 좋습니다. 하드 리셋을 진행하고 리모컨으로 밀어 넣으면 모든 사람의 추적을 제거하기 때문에 아무도 마지막 버전을 가져 오지 않았는지 확인해야합니다! 'revert' 액션을 사용하면 이런 종류의 문제를 피할 수 있습니다. –

+0

예,'revert'는 훨씬 더 안전하지만,'rev 103'이 여전히 있습니다. 질문의 설명에 따르면, 다른 사용자가 알지 못하는 사이에'rev 103'을 제거하려는 것 같습니다. 따라서 위험한 지식에 대해 실제로 무엇이 필요한지에 달려 있습니다. 게다가, 우리는'-f' 대신'--force-with-lease'를 사용하여 다른 사용자의 새로운 커밋을 덮어 쓰지 않도록 할 수 있습니다. – Landys

+0

맞습니다. 원격 Repo로 작업 할 때이 명령을 사용할 위험성에 대해 언급하고 싶습니다. –

관련 문제