힘내 비난-사전 커밋? 전에 특정

지정된 행 대한 커밋 기록 git blame과 같이에 의해 커밋이보고 되기 전에 특정 라인을 편집 한 사람을 볼 수 있습니까?

예를 들어, 훌륭한 uncrustify프로젝트 에서 다음을 실행합니다 .

$ git blame -L10,+1 src/options.cpp
^fe25b6d (Ben Gardner 2009-10-17 13:13:55 -0500 10) #include "prototypes.h"

커밋 하기 전에 누가 그 줄을 편집했는지 어떻게 알 수 fe25b6d있습니까? 누가 전에 편집 한 커밋?



답변

git blame -L 10,+1 fe25b6d^ -- src/options.cpp

git blame의 개정판을 지정하여 (기본값이 아닌) 처음부터 되돌아 볼 수 있습니다 HEAD. fe25b6d^의 부모입니다 fe25b6d.


답변

git log -L 을 사용 하여 다양한 라인의 진화를 볼 수 있습니다 .

예를 들면 다음과 같습니다.

git log -L 15,23:filename.txt

“filename.txt라는 파일에서 15 행에서 23 행의 진화를 추적”을 의미합니다.


답변

앰버의 대답은 정확하지만 명확하지 않습니다. 구문은 다음과 같습니다.

git blame {commit_id} -- {path/to/file}

참고 :는 --트리 파일 sha1을 상대 파일 경로와 구분하는 데 사용됩니다. 1

예를 들면 다음과 같습니다.

git blame master -- index.html

모든 것을 아는 것에 대한 앰버의 완전한 신용 ! 🙂


답변

당신은 체크 아웃 할 수 있습니다 :

git gui blame <filename>

이전 커밋으로 이동하기 위해 “git blame”과 같은 변경 사항을 한 줄에 클릭 가능한 링크와 함께 멋진 그래픽으로 표시합니다. 커밋 세부 정보가 포함 된 팝업을 보려면 링크 위로 마우스를 가져갑니다. 내 크레딧이 아닙니다 … 여기에서 찾았습니다.

http://zsoltfabok.com/blog/2012/02/git-blame-line-history/

git guigit에 대한 그래픽 Tcl / Tc 인터페이스입니다. 다른 매개 변수가 없으면 파일, 덩어리 또는 단일 행 및 수정, 되돌리기, 푸시와 같은 기타 유사한 명령을 커밋하기위한 매우 간단하지만 유용한 그래픽 응용 프로그램을 시작합니다 … git stock suite의 일부입니다. Windows에서는 설치 프로그램에 포함되어 있습니다. 데비안에서는 다른 * nix 시스템에 대해 잘 모릅니다. 별도로 설치해야합니다.

apt-get install git-gui

문서에서 :

https://git-scm.com/docs/git-gui

기술

Git에 대한 Tcl / Tk 기반 그래픽 사용자 인터페이스. git gui는 새로운 커밋, 기존 커밋 수정, 브랜치 생성, 로컬 병합 수행, 원격 리포지토리 가져 오기 / 푸시 등을 통해 사용자가 리포지토리를 변경할 수 있도록하는 데 중점을 둡니다.

gitk와 달리 git gui는 커밋 생성 및 단일 파일 주석에 중점을두고 프로젝트 기록을 표시하지 않습니다. 그러나 git gui 내에서 gitk 세션을 시작하기위한 메뉴 조치를 제공합니다.

git gui는 널리 사용되는 모든 UNIX 시스템, Mac OS X 및 Windows (Cygwin 및 MSYS)에서 작동하는 것으로 알려져 있습니다. 가능한 OS 고유의 사용자 인터페이스 지침을 따르는 범위 내에서 git gui는 사용자에게 상당히 고유 한 인터페이스가됩니다.

명령

비난

지정된 버전 (또는 지정되지 않은 경우 작업 디렉토리)의 지정된 파일에서 Blame Viewer를 시작하십시오.

브라우저

지정된 커밋의 모든 파일을 보여주는 트리 브라우저를 시작하십시오. 브라우저를 통해 선택한 파일이 Blame Viewer에서 열립니다.

citool

git gui를 시작하고 종료하고 쉘로 돌아 가기 전에 정확히 하나의 커밋을 준비하십시오. 인터페이스는 커밋 작업으로 만 제한되어 응용 프로그램의 시작 시간을 약간 줄이고 메뉴 표시 줄을 단순화합니다.

버전

현재 실행중인 git gui 버전을 표시합니다.


답변

이전 답변을 바탕 으로이 bash one-liner는 원하는 것을 제공해야합니다. 마지막 5 개 개정판을 통해 특정 파일의 특정 라인에 대한 git blame 이력을 표시합니다.

LINE=10 FILE=src/options.cpp REVS=5; for commit in $(git rev-list -n $REVS HEAD $FILE); do git blame -n -L$LINE,+1 $commit -- $FILE; done

이 명령의 출력에서 ​​특정 커밋에 대해 행 변경 내용이 표시되거나 행 번호가 변경 될 수도 있습니다.

이것은 종종 특정 커밋 후에 행이 처음으로 추가되었음을 나타냅니다. 또한 파일의 다른 부분에서 행이 이동했음을 나타낼 수도 있습니다.


답변

또한 있습니다 recursive-blame. 함께 설치할 수 있습니다

npm install -g recursive-blame

답변

이 문제에 대한 매우 독특한 해결책은 git log를 사용하는 것입니다.

git log -p -M –follow –stat-경로 / to / your / file

Andre가 여기에서 설명했듯이