커밋 메시지로 Git 저장소를 검색하는 방법
나는 "Build 0051"이라는 커밋 메시지와 함께 GIT에 소스 코드를 체크했다.
하지만 더 이상 소스 코드를 찾을 수 없는 것 같습니다. 명령줄을 사용하여 GIT 저장소에서 소스를 추출하려면 어떻게 해야 합니까?
갱신하다
- SmartGIT를 사용하여 버전 0043, 0044, 0045 및 0046을 확인.
- 0043을 체크 아웃 하고, 다른 브랜치에서는 0051까지의 버전을 체크 인.
- 0043을 다시 확인했습니다.
- 이제 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'
grep 검색에서 대소문자를 무시한 채 이를 수행하려면 다음 절차를 수행합니다.
git log --all -i --grep='Build 0051'
Repo 이력을 통해 커밋의 실제 내용을 검색하려면 다음을 사용합니다.
git grep 'Build 0051' $(git rev-list --all)
지정된 텍스트의 모든 인스턴스, 포함된 파일 이름 및 commit sha1을 표시합니다.
대소문자를 무시한 채 이 작업을 수행하려면 다음을 사용합니다.
git grep -i 'Build 0051' $(git rev-list --all)
이렇게 하면 차이 변경뿐만 아니라 각 단계에서 커밋 내용 전체가 검색된다는 점에 유의하십시오.diff 변경만 검색하려면 다음 중 하나를 사용합니다.
git log -S[searchTerm]
git log -G[searchTerm]
않은 할 수 .-gflag의 )--walk-reflogs:
git log -g --grep='Build 0051'
것 , 「」를 .reflog신신의당에 의해 중 0051을 .
git reflog
했을 수도 .HEAD'빌드 0051' 커밋이 보이지 않거나 실제로 날려버렸을 수 있습니다.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
는 이것을 내 이이에 .~/.gitconfig:
[alias]
find = log --pretty=\"format:%Cgreen%H %Cblue%s\" --name-status --grep
그런 다음 "git find string"을 입력하면 메시지에서 해당 문자열을 포함하는 모든 커밋 목록이 나타납니다.예를 들어 티켓 #33을 참조하는 모든 커밋을 검색하려면 다음 절차를 수행합니다.
029a641667d6d92e16deccae7ebdeef792d8336b Added isAttachmentEditable() and isAttachmentViewable() methods. (references #33)
M library/Dbs/Db/Row/Login.php
a1bccdcd29ed29573d2fb799e2a564b5419af2e2 Add permissions checks for attachments of custom strategies. (references #33).
M application/controllers/AttachmentController.php
38c8db557e5ec0963a7292aef0220ad1088f518d Fix permissions. (references #33)
M application/views/scripts/attachment/_row.phtml
041db110859e7259caeffd3fed7a3d7b18a3d564 Fix permissions. (references #33)
M application/views/scripts/attachment/index.phtml
388df3b4faae50f8a8d8beb85750dd0aa67736ed Added getStrategy() method. (references #33)
M library/Dbs/Db/Row/Attachment.php
늦었지만, ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★.:/메시지에 리비전 표기법입니다.를 붙이면 .검색 문자열에 프리픽스를 붙이기만 하면 됩니다.:/ 예: 개요:
git show :/keyword(s)
서 ★★★★<keywords>에는 단일 단어 또는 공백으로 구성된 복잡한 regex 패턴을 사용할 수 있습니다.필요에 따라 다음과 같이 따옴표/부호해 주세요.
git log -1 -p ":/a few words"
또는 특정 지점에서 도달 가능한 가장 가까운 커밋을 찾기 위해 시작 지점을 지정할 수 있습니다. 예를 들어 다음과 같습니다.
git show 'HEAD^{/fix nasty bug}'
git revisions 매뉴얼을 참조해 주세요.
git log --grep="Build 0051"
효과가 있을 것이다
git log --grep=<pattern>
Limit the commits output to ones with log message that matches the
specified pattern (regular expression).
이거 먹어봐!
git log | grep -b3 "Build 0051"
에 약간의 추가만 하면 됩니다.git log --all --grep명령어:저 같은 경우에는 메시지 내의 괄호에서 벗어나야 했습니다.
git log --all --grep="\[C\] Ticket-1001: Fix nasty things"
모든 분기를 검색하려면
git log --all --grep='Build 0051'
어떤 약속을 하고 싶은지 알게 되면
git checkout <the commit hash>
먼저 커밋 사용을 나열합니다.
git log --oneline
커밋(Message)의 SHA를 찾은 후
git log --stat 8zad24d
(8zad24d)는 사용자가 관여하고 있는 커밋(첫 번째 커플의 sha 예(8zad24d))에 의해 어소시에이트된 SHA이며, 올바른 정보를 찾기 위해4 문자, 6 문자, 8 문자 또는 전체 sha를 선택할 수 있습니다.
정확히 일치하는 임의의 문자열(및 regex 특수문자 이스케이프 걱정 없음)을 전달하고 싶은 경우 git log는 --fixed-strings 옵션을 사용합니다.
git log --fixed-strings --grep "$SEARCH_TERM"
변경이 너무 오래되지 않았다면 그렇게 할 수 있습니다.
git reflog
다음으로 커밋 ID를 체크합니다.
이것은, 다음과 같습니다.
git log --oneline --grep='Searched phrase'
또는 다음과 같습니다.
git log --oneline --name-status --grep='Searched phrase'
명령어가 가장 효과적입니다.
언급URL : https://stackoverflow.com/questions/7124914/how-to-search-a-git-repository-by-commit-message
'source' 카테고리의 다른 글
| 왼쪽 조인 포함 상위 1위 (0) | 2023.04.19 |
|---|---|
| 행 및 열 인덱스로 WPF 그리드의 제어에 프로그래밍 방식으로 액세스하는 방법은 무엇입니까? (0) | 2023.04.19 |
| SwiftUI - 뷰에 하드코딩된 네비게이션을 피하는 방법 (0) | 2023.04.19 |
| 기본 스타일에서 스타일 상속 (0) | 2023.04.19 |
| XAML에서 간단한 하이퍼링크를 만드는 방법 (0) | 2023.04.19 |