2014-10-17 2 views
0

어떻게 내 rebase를 되돌릴 수 있습니까? 나는 지방 출신 (abc)에 있었고 출신으로 그것을 재배치하기를 원했다. 다음은 내가 발행 한 명령입니다 :이 후실수로 git rebase가 시작되었습니다.

git checkout live 
(On branch live) 
git pull 

가, 나는 내 로컬 지점 'ABC'로 다시 전환 깜빡하고 나는 그것을 리베이스 시작 내가 '자식 상태'명령을 실행했을 때, 나는 깨달았다 THINK 로컬 브랜치를 리베이스했습니다.

git status 
On branch live 
Your branch is ahead of 'remotes/origin/live' by 13 commits. 
    (use "git push" to publish your local commits) 

nothing to commit, working directory clean 

나는 아무 것도 누르지 않고 표시하고있는 13 가지 커밋을 삭제하려고합니다. 이 작업을 수행하는 올바른 방법은 무엇입니까?

+0

rebase는 일반적으로 마술처럼 13 개의 커밋을 로컬로 표시하지 않습니다. 그것은 ORIG_HEAD를 설정하여 그 또는 reflog를 사용하여 뒤로 이동할 수 있습니다. –

+0

아직 답을 얻었습니까? 이 문제가 해결되었는지 여부를 확인하는 것을 잊지 마십시오. –

답변

3

git reset --hard <SHA>을 사용하면 원래 상태로 돌아갈 수 있습니다. 먼저 실험 브랜치를 만드는 것이 좋습니다.

은 또한 읽고 다음과 같은 설명서 확인 - 일반적으로 http://git-scm.com/docs/git-reset

1

명령을 사용하면 현재 분기에 대한 reflog를 표시 할 수 있습니다. 이것은 로컬 브랜치가 가리키는 각 커밋의 히스토리가있는 로컬로 유지되는 데이터입니다. 이 데이터를 사용하여 로컬 브랜치가 rebase 전에 가리킨 커밋을 찾을 수 있습니다.

수행 한 마지막 작업이 리베이스이면 git reset --hard [email protected]{1}은이 작업을 실행 취소해야하며 작업 트리의 변경 사항도 취소해야합니다.

+0

git hub가 말하는 13 가지 커밋 중 어느 것을 알 수 있습니까? – user95025

+0

수동으로 검사하고 알아 내야합니다. 'git log --pretty = oneline --abbrev-commit --graph --decorate --all'을 사용하여 전체 히스토리를 그래프 형태로 볼 수도 있습니다. 해당 그래프에서 재설정 할 위치를 결정할 수 있습니다. – cdhowie

2

을, 당신이 다시 할 위치를 파악하는 git reflog를 참조하십시오.

이 경우 origin/live으로 재설정하려는 경우 (확인하려면 git log origin/live..live을 확인하십시오).

다시 설정하려는 항목을 알고 나면 git reset --hard commit-to-reset-to (이 경우 git reset --hard origin/live)을 실행하십시오.

관련 문제