개발관련/Git

커밋 메시지로 Git 저장소를 검색하는 방법

Rateye 2021. 9. 17. 11:35
728x90
반응형
질문 : 커밋 메시지로 Git 저장소를 검색하는 방법은 무엇입니까?

커밋 메시지 "Build 0051"과 함께 일부 소스 코드를 GIT로 확인했습니다.

그러나 해당 소스 코드를 더 이상 찾을 수없는 것 같습니다. 명령 줄을 사용하여 GIT 저장소에서이 소스를 어떻게 추출합니까?

최신 정보

  1. SmartGIT를 사용하여 버전 0043, 0044, 0045 및 0046을 체크인했습니다.
  2. 0043을 체크아웃하고 다른 지점에서 0051까지 버전을 체크인했습니다.
  3. 0043을 다시 체크아웃했습니다
  4. 지금은 0051이 사라졌습니다.

최신 정보

소스 코드는 확실히 거기에 있습니다. 이제 그것을 확인하는 문제입니다.

C:\Source>git log -g --grep="0052"
commit 77b1f718d19e5cf46e2fab8405a9a0859c9c2889
Reflog: HEAD@{10} (unknown <Mike@.(none)>)
Reflog message: commit: 20110819 - 1724 - GL: Intermediate version. File version:  v0.5.0 build 0052.
Author: unknown <Mike@.(none)>
Date:   Fri Aug 19 17:24:51 2011 +0100

    20110819 - 1724 - GL: Intermediate version. File version: v0.5.0 build 0052.
    
    C:\Source>
    
답변

주어진 텍스트에 대한 커밋 로그 (모든 분기에 걸쳐)를 검색하려면 :

git log --all --grep='Build 0051'

저장소 기록을 통해 커밋의 실제 내용을 검색하려면 다음을 사용하십시오.

git grep 'Build 0051' $(git rev-list --all)

주어진 텍스트, 포함 파일 이름 및 커밋 sha1의 모든 인스턴스를 표시합니다.

마지막으로 커밋이 매달려 있고 히스토리에 전혀 연결되지 않은 경우 마지막 수단으로 -g --walk-reflogs 약자)를 사용하여 reflog 자체를 검색 할 수 있습니다.

git log -g --grep='Build 0051'

편집 : 기록을 잃어버린 것 같으면 안전망으로 reflog 다음에 나열된 커밋 중 하나에서 빌드 0051을 찾습니다.

git reflog

단순히 'Build 0051'커밋이 보이지 않는 히스토리의 일부로 HEAD git-ready reflog 기사가 도움이 될 수 있습니다.

reflog에서 커밋을 복구하려면 : 찾은 커밋의 git 체크 아웃을 수행하고 선택적으로 참조를 위해 새 분기 또는 태그를 만듭니다.

git checkout 77b1f718d19e5cf46e2fab8405a9a0859c9c2889
# alternative, using reflog (see git-ready link provided)
# git checkout HEAD@{10}
git checkout -b build_0051 # make a new branch with the build_0051 as the tip
출처 : https://stackoverflow.com/questions/7124914/how-to-search-a-git-repository-by-commit-message
728x90
반응형