답변:
--follow
특정 파일에 대한 작업
git log --follow -- filename
주어진 다른 솔루션과의 차이점
다른 솔루션에는 git log path
(없이 --follow
)가 포함됩니다. 이 접근 방식은 디렉토리의 변경 사항 (예 : 디렉토리의 변경 사항)을 추적하려는 경우에 편리 하지만 파일 이름이 바뀌면 사용됩니다 (따라서 사용 --follow filename
).
--follow
은 이름 변경을 설명하므로 이보다 더 강력합니다.git log -- path
--follow
있는 path 를 허용합니다 . 후자의 경우 재귀 적으로 실행되고 해당 지점 아래의 모든 파일에 변경 사항을보고합니다. (이 동작은 맨 페이지에 문서화되어 있지 않으며 영구적이지 않을 수 있습니다.)
git log filename?
git log filename
는 파일 이름 변경을 따르지 않습니다. 즉, 실제 파일이 아닌 해당 파일 이름 과 관련된 모든 커밋을 표시합니다 . 파일을 작성 X
하고 Y
둘 다 변경 한 다음 삭제 Y
하고 이름 X
을 바꾼 Y
다음 변경 한 경우 실행 git log Y
하면 이전 파일 Y
과 새 파일 모두에 대한 메시지가 표시됩니다 . 반대의 --follow
경우에는 파일 이름 X
과 이름이 지정된 파일에 관한 커밋을 얻 습니다 Y
.
git log path
당신이 원하는 것을해야합니다. 로부터 git log
사람 :
[--] <path>…
Show only commits that affect any of the specified paths. To prevent confusion with
options and branch names, paths may need to be prefixed with "-- " to separate them
from options or refnames.
나는 이것을 자세히 살펴 보았고이 모든 대답이 실제로 모든 지부의 모든 커밋을 보여주지는 않는 것 같습니다.
다음은 gitk 편집 뷰 옵션을 망쳐 놓은 결과입니다. 이것은 분기, 로컬, 참조 로그 및 원격에 관계없이 파일에 대한 모든 커밋을 보여줍니다 .
gitk --all --first-parent --remotes --reflog --author-date-order -- filename
그것은 또한 작동합니다 git log
:
git log --all --first-parent --remotes --reflog --author-date-order -- filename
--reflog
/ 수정되거나 폐기 된 커밋이 포함 된 통지 . 어쩌면 그것은 분명해야하지만, 이것을 사용 git log
하려고 시도하고 왜 중복 된 커밋이 보이는지 알아 내려고했습니다!
특정 파일에 대한 커밋을 얻으려면 아래 명령을 사용하십시오.
git log -p filename
git log -p mybranch -- filename
하거나 git log --all -- filename
모든 분기를 보는 데 사용할 수 있습니다 .
다음과 같이 간단해야합니다 git log <somepath>
. 맨 페이지 ( git-log(1)
)를 확인하십시오 .
개인적으로 저는 git log --stat <path>
각 커밋이 파일에 미치는 영향을 볼 수 있도록 사용 하고 싶습니다.
-p
몇 줄을 수정 한 것이 아니라 전체 diff를 보려는 경우 에도 마찬가지 입니다.
git show
문제가있는 특정 커밋에 대해 로그를 얻을 수 있습니다 .
또는 (Git 1.8.4부터) 파일 의 특정 부분 을 변경 한 모든 커밋을 얻는 것도 가능 합니다. 시작 줄과 끝 줄 번호를 전달하면 얻을 수 있습니다.
반환 된 결과는이 특정 부분을 수정 한 커밋 목록입니다. 명령은 다음과 같습니다.
git log --pretty=short -u -L <upperLimit>,<lowerLimit>:<path_to_filename>
어디 upperLimit
이다 start_line_number
와 lowerLimit
는 ISending_line_number
추가 정보-https: //www.techpurohit.com/list-some-useful-git-commands
jackrabb1t가 지적했듯이 --follow
이름 바꾸기 / 이동 이외의 기록을 계속 나열하기 때문에 더 강력합니다. 따라서 현재 동일한 경로에 있지 않은 파일이나 다양한 커밋에서 이름이 바뀐 파일을 찾으려면 --follow가 추적합니다.
이름 / 경로 변경을 시각화하려는 경우이 방법이 더 좋습니다.
git log --follow --name-status -- <path>
그러나 중요한 것만으로 더 간단한 목록을 원한다면 :
git log --follow --name-status --format='%H' -- <path>
또는
git log --follow --name-only --format='%H' -- <path>
단점은 --follow
단일 파일에 대해서만 작동 한다는 것입니다.
--follow
디렉토리 일 수 있는 단일 경로 에서 작동합니다 . 디렉토리를 전달하면 재귀 적으로 실행되고 해당 지점 아래의 모든 파일에 변경 사항을보고합니다.
파일을 변경 한 모든 커밋을 모든 분기에서 보려면 다음을 사용하십시오.
git log --follow --all <filepath>
파일 자체의 변경 사항이 아닌 특정 파일을 변경 한 커밋의 모든 변경 사항을 보려면 다음을 전달하십시오 --full-diff
.
git log -p --full-diff [branch] -- <path>
[branch]
gitk <path_to_filename>
"gitk"패키지가 이미 설치되어 있다고 가정합니다.
설치되어 있지 않으면 다음을 수행하십시오.
sudo apt-get install gitk
그런 다음 위 명령을 시도하십시오. Linux 용입니다. GUI를 원하는 경우 Linux 사용자에게 도움이 될 수 있습니다.
gitk
용 Git과 함께 제공됩니다.
커밋 해시 목록을 얻으려면 git rev-list
git rev-list HEAD <filename>
산출:
b7c4f0d7ebc3e4c61155c76b5ebc940e697600b1
e3920ac6c08a4502d1c27cea157750bd978b6443
ea62422870ea51ef21d1629420c6441927b0d3ea
4b1eb462b74c309053909ab83451e42a7239c0db
4df2b0b581e55f3d41381f035c0c2c9bd31ee98d
이는 5 개의 커밋이이 파일을 터치했음을 의미합니다. 역순으로 정렬되므로 목록의 첫 번째 커밋 b7c4f0d7
이 가장 최근의 커밋입니다 .
Linux에서는 gitk를 사용할 수 있습니다.
"sudo apt-get install git-gui gitk"를 사용하여 설치할 수 있습니다. "gitk <Filename>"으로 특정 파일의 커밋을 보는 데 사용할 수 있습니다.