Git: 전체 git 내역에 걸쳐 지정된 파일의 한 줄에 대한 다양한 변경 사항을 모두 표시합니다.
주위를 둘러봤는데 이게 가능한지는 모르겠지만, 다음과 같습니다.
(javascript) 파일(say /lib/client.js)에는 다음과 같은 고유 식별자가 할당되어 있습니다.var identifier = "SOME_IDENTIFIER";
버전 번호와 같은 식별자를 생각할 수 있습니다.주기적으로 이 변수를 새 식별자로 변경합니다.
제가 하고 싶은 것은 우리가 사용했던 모든 고유 식별자를 찾는 것입니다.깃으로 어떻게 하면 되나요?
깃 히스토리를 검색하고 라인 매칭을 인쇄하는 방법이 있을 거라고 생각합니다."var identifier ="
. 이 목록을 수동으로 삭제할 수 있습니다.
어쨌든, 어떤 통찰력이라도 있으면 고맙겠습니다.감사해요.
Git 1.8.4 이후로 당신의 질문에 더 직접적으로 대답할 수 있는 방법이 있습니다.
그 선을 가정하면110
대사는 다음과 같습니다.var identifier = "SOME_IDENTIFIER";
, 다음 작업을 수행합니다.
git log -L110,110:/lib/client.js
코드 라인을 터치한 모든 커밋을 반환합니다.
명령줄 매개 변수는 의 설명서를 참조하십시오.
사용자 페이지 참조git-log
그리고.gitdiffcore
. 이 명령으로 할 수 있을 것이라 생각하지만, 정확하지 않을 수도 있습니다.
git log -G "var identifier =" file.js
편집: 배시 스크립트가 실제 대사를 보여주기 위한 대략적인 시작이 있습니다.이것이 당신이 찾고 있는 것일 수도 있습니다.
for c in $(git log -G "something" --format=%H -- file.js); do
git --no-pager grep -e "something" $c -- file.js
done
사용합니다.git log -G
재미있는 커밋을 찾아서, 사용하기--format=%H
커밋 해시 목록을 작성합니다.그런 다음 각각의 흥미로운 약속을 반복하며 질문합니다.git grep
해당 커밋 및 파일의 행을 커밋 해시로 접두사를 붙여 표시합니다.
EDIT: 용도 변경-G
대신에-S
의견서에 제시된 바와 같이
gitk을 사용하여 작업할 수도 있습니다.
gitk file.js
"commit" 드롭다운에서 "adding/removing 문자열:"을 선택하고 옆에 있는 텍스트 상자에 "var identifier ="을 입력하면 해당 문자열을 포함하는 줄을 추가하거나 제거하는 모든 커밋이 강조 표시됩니다.
@rob의 대답을 조금만 맞추면,git log
기본적으로 시각적 비교만 하면 됩니다.
git log -U0 -S "var identifier =" path/to/file
-U0
패치 모드에서 출력을 의미합니다(-p
) 및 패치 주위에 0줄의 컨텍스트를 표시합니다.
분기 간에도 이 작업을 수행할 수 있습니다.
git log -U0 -S "var identifier =" branchname1 branchname2 -- path/to/file
diff header를 억제하는 방법이 있을 수 있지만, 저는 그것을 모릅니다.
Magit에서, 당신은 이것을 할 수 있습니다.
l, =L
그러면 파일과 시작, 끝 줄을 묻는 메시지가 나타납니다.
저는 리눅스 커널에 부여된 모든 애완동물 이름을 나열하고 싶었습니다.이것은 에 설정되어 있습니다.Makefile
(비록 이것이 전체 역사는 아니지만) 커널 깃레포에서.특정 라인 번호에 의존하고 싶지 않았고 커밋 레퍼런스보다는 라인의 실제 콘텐츠를 원했고, 주문에 영향을 주지 않고 중복을 제거하고 싶었습니다.저는 이렇게 생각해냈습니다.
git log --format=format:%H Makefile | xargs -I{} git show {}:Makefile | awk -F '=' '/^NAME = /{print $NF}' | awk '!x[$0]++'
은 우선 를 사용합니다.git log
을 주는 다로 합니다.git show
, 그 ref through awk는 관심사를 추출하고 두번째 awk는 목록을 duplic 해제합니다.
누구에게나 유용할 경우를 대비해서 말입니다.
언급URL : https://stackoverflow.com/questions/9935379/git-show-all-of-the-various-changes-to-a-single-line-in-a-specified-file-over-t
'programing' 카테고리의 다른 글
Visual Studio Community 2017 링커 문제 - MariaDB (0) | 2023.10.04 |
---|---|
음의 부동 소수점 값을 부호 없는 int로 변환할 때의 동작은 무엇입니까? (0) | 2023.10.04 |
XPath에서 대소문자를 구분하지 않는 일치? (0) | 2023.10.04 |
PowerShell의 정규식 일치 (0) | 2023.10.04 |
Docker에서 영구 스토리지(예: 데이터베이스)를 처리하는 방법 (0) | 2023.10.04 |