2012-04-23 3 views
1

github에서 프로젝트를 복제했습니다. 프로젝트에 모두 잘 작동합니다. 행복합니다.이전 체크 아웃으로 롤백하기

그러나 일부 git pulls 후에 나는 업스트림 프로젝트의 새로운 커밋으로 프로젝트에서 약간의 충돌을 보게됩니다.

이전 체크 아웃으로 롤백하고 싶지만 내 프로젝트에서 이전에 안정적인 체크 아웃을 알 수 없습니다.

어떻게 알 수 있고 이전의 안정적인 (나에게) 프로젝트 체크 아웃으로 롤백 할 수 있습니까? 내가 관점에서 더 정확한 방법으로 업스트림 repo와 내 갈등을 해결하기 위해 이해하지만 가끔 난 그냥 문제를 해결하기위한 시간을 얻기 위해 이전 버전으로 롤백해야합니다.

+0

이전 버전을 체크 아웃하는 방법을 알고 있다면 나에게 명확하지 않습니다. 표시되지 않으면 http://stackoverflow.com/q/1223354/11343을 참조하십시오. – CharlesB

답변

2

당신이 실행할 수있는가 "안정적인 점"을 설명 할 명령/스크립트가있는 경우 (이 작동하지 않는 현재 상태에 반대, 즉 뭔가 작업이), 당신은 git bisect 명령을 고려할 수 있습니다 .
"How to use git bisect?"을 참조하십시오.

이렇게하면 "작동하고있는"마지막 커밋을 분리하는 데 도움이됩니다.

+0

+1하지만 Git의 초보 사용자를 위해 조금 향상되었을 수 있습니까? – CharlesB

+0

또한 최근에 알려진 지점이 있었기 때문에 처음 보는 것보다 조금 비쌉니다. – Ashe

+0

@CharlesB 물론, 그것을 사용하는 방법을 설명하는 링크. 어쨌든 커밋이 상당히 최근의 것이라면 다른 대답이 더 적절 해 보입니다. – VonC

0

이미 병합을 수행 했습니까? 그렇지 않은 경우 git reset --hard이고 git pull을 발급하기 전 상태로 돌아 왔습니다. 그렇지 않으면 git reset --hard HEAD^ (병합이 마지막 커밋 인 경우)은 트릭을 수행합니다. git은 기본적으로 항상 분기 지점 인 병합 커밋의 첫 번째 부모를 선택합니다. 의심스러운 경우 언제든지 예를 들어 gitk 상황을 검사하고 지점에서 마지막 커밋을 찾으려면 SHA1 해시를 복사 한 다음 되돌립니다.

1

git reflog은 가장 최근의 작업 순서를 말해야합니다. 처음으로 끌어 오기/병합하기 전에 실행 된 커밋 ID를 찾습니다. checkout 또는 reset --hard입니다.

관련 문제