2010-03-27 4 views
3

개인 프로젝트에서 버그를 찾아 낼 때 Master 분기에 5 커밋을하고 원격 원본 (개인 vps)에 밀어 넣었습니다.Git : 원격 지점에서 Master 브랜치를 되 감는 방법은 무엇입니까

그런 다음 커밋 4와 5가 다른 곳에서 문제를 일으킬 것이라는 것을 알았고이를 취소해야하므로 커밋 3을 다시 확인하고 그 지점에서 새 분기 "개발자"를 만들고 몇 가지 커밋을 수행했습니다. 문제를 올바르게 수정.

그럼 난

자식은 다시 내가 데브 분기 지점을 끌어 마스터에 --hard HEAD ~ 2를 다시했다.

그런 다음에 Dev Branch의 끝에 Master를 되감기 위해 merit를했습니다.

그래서 지금 Dev와 Master가 모두 최신 버그 수정으로 프로젝트의 최신 버전을 가리키는 로컬 저장소가 있습니다.

:

문제는 원점 지금 프로젝트를 추진하려고 할 때, 그것은 실패하고 나에게 오류 메시지를 제공합니다! [거부 된] 마스터 -> 마스터 (비 - 빨리 감기) 오류 : 'myserver ... myproject.git'에 대한 일부 참조를 푸시하지 못했습니다.

무엇을 잘못 했습니까?

감사

+0

효과적으로 원격 지점의 직접적인 자손이 아닌 것을 푸시하는 방법을 묻는 중입니다. 그러므로 이것은 가능한 중복입니다 : http://stackoverflow.com/questions/253055/how-do-i-push-amended-commit-to-the-remote-git-repo –

답변

5

그것은 단지 당신이 밀고있는 지점은 당신이 밀어하는지의 조상이 아니라는 사실을 좋아하지 않는다.

확실하게하려면 푸시에 -f 플래그 (강제)를 추가하십시오.

+2

"확실하다면" 우리가 의미하는 바는 이것이 개인 프로젝트 인 경우 공개 된 프로젝트이지만 아무도이 지사에서 아무 것도 뽑지 않았다는 것을 알고 있거나 실수가 너무 심하여 모든 사람들이 수정 커밋을 추가하는 대신이 방법으로 문제를 해결할 가치가 있습니다. – Cascabel

+3

그것은 반복됩니다 : 당신이하고있는 것은 당신이 역사를 다시 쓰는 것입니다. 그리고 실생활에서와 마찬가지로, 역사를 다시 쓸 수는 있지만 그렇게하기 위해서는 음모가 필요합니다. IOW : 모두가 그 안에 "들어가야"합니다. 즉 모든 사람이 역사를 다시 쓰는 것에 동의해야합니다. ("모든 사람"은 "저장소에서 추방 된 사람, 심지어 지나치게 넘어간 사람"을 의미합니다.) –

+0

감사합니다. 나는 그 의미를 이해한다고 생각한다. 이건 단지 개인 프로젝트 일 뿐이므로 다른 곳에서는 엉망이 될 수 없습니다. 앞으로도 나올 것이다. 지금은 Master에 대한 커밋의 단일 지점이므로 새 컨피규러는 앞으로 번거 로움을 겪지 않을 것입니다. – petesiss

관련 문제