2017-01-18 2 views
1

여기에 무슨 일이 있습니다 : "Bob"이 마스터에 직접 푸시했기 때문에 내 3 명이 커밋 한 것을 알았을 때 제 레포의 마스터 브랜치에서 작업하고있었습니다. git rebase에서 잘못 복구 함

는이 문제를 해결하기 위해, 내가 실수를이 시점에서

git checkout -b secondary 
git push -u origin secondary 

을 수행하여 "보조"지점을 만들어, 나는 차에 풀 원산지 마스터 (밥 패치) 이눔하는 것을 잊었다. 나는 "bob"이 수행 한 9 개의 커밋을 삭제 한 git rebase를 수행 한 다음 git push -f를 수행했다. 결과 : 모든 밥 커밋은 두 지점에서 사라졌습니다.

다행히도 그 실패 직전에, 나는 두 번째 머신을 마스터에서 뒤처졌고, 2 개의 커밋을 통해 잡아 당기기를했다. 병합 충돌 때문에 pull이 실패했고 리셋과 git fetch를했는데 거기에두고 보브 문제를 해결 한 후에 그것을 할 것이라고 생각했습니다. 해당 컴퓨터의 현재 상태 :

On branch master 
Your branch and 'origin/master' have diverged, 
and have 2 and 22 different commits each, respectively. 
    (use "git pull" to merge the remote branch into yours) 
nothing to commit, working directory clean 

이후 어떤 명령도 실행하지 않았습니다. 이 22 개의 커밋은 "Bob"커밋을 포함합니다. 이전에 "가져온"데이터를 마스터/보조로 다시 가져올 수있는 방법이 있습니까?

는 어떤 도움을

답변

2

이전 페치 데이터는 여전히 로컬에 보유 된 refs/remotes 브랜치에 있습니다.

git branch -a을 수행하면 컴퓨터에서 해당 리모컨과 브랜치를 볼 수 있습니다. 그러면 간단히 git checkout -b <newbranchname> <remote>/<branch>으로 가면됩니다.

DWIM과 함께 DAG, refs, rtb 's 등에 대해 '잘 몰랐던'것을 모두 검토/새로 고침 할 시간입니다. git help revisionsgit help -g을 참조하십시오.

은 -

RTB의 = 원격 추적 브랜치 - 추적하는 지역 지점은 일반적으로 '읽기 전용'유지 리모컨의 지점, (의 사본을 가지고).

DWIM - 무슨 뜻입니까? 그래서/'refs/heads/branch'대신에 'ref/remotes/remote/branch'를 얻을 것입니다.

1

감사 당신의 어느 하나 여전히 로컬 커밋을 가지고 운 그들이하지 않은 경우 그들은 내가 그들을 찾아 복원하려고 reflog (https://git-scm.com/docs/git-reflog)를 사용하는 것이 좋습니다 서버에 있지 않은 경우 쓰레기 수거되었습니다.