영구 삭제되고 푸시되지 않은 커밋을 찾을 수 있는 GitLab 서버

영구 삭제되고 푸시되지 않은 커밋을 찾을 수 있는 GitLab 서버

내 동료가 내가 작업하고 있던 동일한 브랜치에 한 줄을 커밋했기 때문에 내 푸시 작업이 실패했습니다. 그리고 나는 내 것을 숨기는 것을 잊어버렸습니다. 그래서 동료의 커밋을 되돌리고 내 변경 사항에 복사하려고 했습니다. 그런 식으로 나가는 커밋만 가능했습니다. 나는 존재했다고 생각했다. 내가 원하는 대로 작동하지 않았기 때문에 그의 커밋을 재설정하려고 시도했고 커밋을 마우스 오른쪽 버튼으로 클릭한 다음 Reset->Delete --Hard(Visual Studio에서)를 클릭하여 그와 내 커밋을 모두 삭제했습니다.

이번에도 변경 사항을 커밋했지만 서버에 푸시하는 데 실패했습니다. 명령 을 찾았 git reflog지만 Git 데스크톱 클라이언트를 사용하지 않고 사용할 수 있는지 잘 모르겠습니다.

SSH 클라이언트를 사용하여 서버에서 푸시되지 않은 커밋을 찾는 방법이 있습니까? 아니면 모든 것을 다시 작성해야 합니까? 약 50~100행의 코드가 손실되었습니다.

해결됨:

왼쪽 상단 근처에 있는 Visual Studio Git 메뉴 사용 -> 명령 프롬프트에서 열기 그런 다음

git reflog 

그 다음에

git cherry-pick <SHA-1> 

여기서 SHA-1은 user1686 답변의 아래 링크에 설명된 대로 지점의 헤드(예: HEAD@{1})입니다.

답변1

또는 git refloggit fsck --unreachable설명된 대로https://stackoverflow.com/questions/30035998/deleted-branch-unexpectedly-git-in-visual-studio최근에 손실된 커밋을 찾을 수 있습니다.

그러나 복구 방법은 해당 커밋이 있는 저장소에서 실행되어야 합니다.~이었다이전에 표시됩니다. 커밋이 성공적으로 푸시되지 않으면 Git 서버에 전혀 존재하지 않습니다. 커밋이 있는 유일한 장소는 VS의 로컬 Git 저장소뿐입니다.

(서버 저장소에도 "reflog"가 있을 수 있지만 푸시가 성공한 경우에만 업데이트됩니다. 예를 들어 SSH는 성공적으로 푸시되었지만 나중에 강제 푸시로 덮어쓴 커밋을 복구하는 데 사용할 수 있습니다. 그러나 완전히 거부된 것은 아닙니다.)

'git reflog' 명령을 찾았지만 Git 데스크톱 클라이언트를 사용하지 않고 사용할 수 있는지 잘 모르겠습니다.

'git reflog'는Git 명령줄 도구, 일반적으로 대부분의 Git 데스크톱 클라이언트와 함께 번들로 제공되지만 실제로는 어떤 앱에도 연결되지 않습니다.

cd이미 Git 데스크톱 클라이언트(Visual Studio)를 사용하고 있으며 Git 복사본도 설치되어 있으므로 소스 디렉터리에 설치하고 git거기에서 실행하기 에 충분합니다 .

관련 정보