git 창고 붕괴 문제

2357 단어
가상 기기의 문제인지 모르겠다. 최근에 코드를 수정한 후에git창고가 자꾸 붕괴된다. 이로 인해 자신이 수정한 코드를 포기해야 하는 경우가 많다. 최근에 비교적 좋은 해결 방법을 찾았다. 링크는 다음과 같다.https://stackoverflow.com/questions/11706215/how-to-fix-git-error-object-file-is-empty

1.git 창고 붕괴 표현

dengwen@ubuntu:~/project_DW/selog$ git status
error: object file .git/objects/a9/761932a220991b0490c2715f218f814d39b876 is empty
error: object file .git/objects/a9/761932a220991b0490c2715f218f814d39b876 is empty
fatal: loose object a9761932a220991b0490c2715f218f814d39b876 (stored in .git/objects/a9/761932a220991b0490c2715f218f814d39b876) is corrupt

2. 일반 솔루션


git 창고가 붕괴된 후 일반적인 해결 방안은 다른 디렉터리 git clone 이전 버전의 프로젝트를 복사한 다음 현재 버전의 항목을 덮어쓰고 제출하는 것입니다. 그러나 이렇게 하면 git commit 정보의 일부를 잃어버릴 수 있습니다. 이외에 기본은 문제가 없습니다.

3. 추천 방법


이런 방법의 장점은git log 정보를 회복할 수 있는 동시에 다시 clone 프로젝트를 전환하거나 지점을 전환하거나 교체하는 등 조작을 하지 않아도 된다는 데 있다. 상대적으로 git 관리의 완전도와 효율이 더욱 높을 것이다. 구체적인 절차는 다음과 같다.
  • (1) 모든 빈 파일을 삭제합니다: 주의하십시오.git 디렉터리에서 진행
  • dengwen@ubuntu:~/project_DW/selog/.git$ find . -type f -empty -delete -print
    ./objects/0d/e32d3b8d0399414c0c8fc47a56069e9821615a
    ./objects/14/540f9dda3c30044e2dbe4629d22c715145f212
    ./objects/19/b98c74bc6c2e372887af410301a0a80495725c
    ./objects/55/14f9022e0e39a29d0e25cdf15cecac1f2f479c
    ./objects/84/0103bdd9538473baab19520eda11b88b40c953
    ./FETCH_HEAD
    
  • (2) 마지막 두 개의reflog 가져오기: 복구할 지점을 주의하세요. 여기는 개발자
  • 입니다.
    dengwen@ubuntu:~/project_DW/selog$ tail -n 2 .git/logs/refs/heads/develop
    41867ca4ab8d60979e804ee7f4640a2e9231d96b f815821a9c4e4833be898dace675916f3cad0124 dengwen <[email protected]> 1539335482 +0800        commit: add manage
    
  • (3) 복구에 대응하는 로그는 이전 단계에서 f815821a9c4e4833be898dace675916f3cad0124라는 최신 로그 노드를 알았습니다. 우리는 이 노드의 정보를 볼 수 있습니다:
  • dengwen@ubuntu:~/project_DW/selog$ git show f815821a9c4e4833be898dace675916f3cad0124
    commit f815821a9c4e4833be898dace675916f3cad0124
    Author: dengwen <[email protected]>
    Date:   Fri Oct 12 17:11:22 2018 +0800
    
        add manage
    

    다음에 해야 할 일은 로그 복구입니다. 마찬가지로 지점과 로그 노드에 주의해야 합니다.
    dengwen@ubuntu:~/project_DW/selog$ git update-ref develop f815821a9c4e4833be898dace675916f3cad0124
    
  • (4) 최신gitlog를 제출하여 상기 절차를 수행한 후gitstatus로 창고의 상태를 볼 수 있음은git창고가 성공적으로 회복되었음을 의미한다.
  • 좋은 웹페이지 즐겨찾기