programing

특정 파일을 변경한 모든 커밋을 나열하려면 어떻게 해야 합니까?

sourcejob 2023. 4. 14. 21:40
반응형

특정 파일을 변경한 모든 커밋을 나열하려면 어떻게 해야 합니까?

특정 파일을 변경한 모든 커밋을 나열하는 방법이 있습니까?

--follow특정 파일에 대해 기능합니다.

git log --follow -- filename

주어진 다른 솔루션과의 차이점

기타 솔루션에는 다음이 포함됩니다.git log path(미포함)--follow디렉토리내의 변경등을 추적하는 경우는, 이 어프로치가 편리합니다만, 파일명이 변경되었을 때(따라서 를 사용).

저는 이것을 자세히 살펴봤지만, 이 모든 답변들이 모든 지점에 걸친 모든 커밋을 보여주는 것 같지는 않습니다.

gitk 편집 뷰 옵션을 만지작거리면서 생각해낸 것은 다음과 같습니다.브랜치, 로컬, 리프로그 및 리모트에 관계없이 파일에 대한 모든 커밋이 표시됩니다.

gitk --all --first-parent --remotes --reflog --author-date-order -- filename

또, 와도 사용할 수 있습니다.git log:

git log --all --first-parent --remotes --reflog --author-date-order -- filename

git log path네가 하고 싶은 대로 해man 페이지부터:

[--] <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.

특정 파일에 대한 커밋을 가져오려면 다음 명령을 사용합니다.

git log -p filename

이 방법은 다음과 같이 간단해야 합니다.git log <somepath>; manpage를 확인합니다(git-log(1)).

개인적으로 사용하는 것은git log --stat <path>각 커밋이 파일에 미치는 영향을 확인할 수 있습니다.

또는 (Git 1.8.4 이후) 파일의 특정 부분을 변경한 모든 커밋을 가져올 수도 있습니다.시작줄과 끝줄 번호를 전달하면 얻을 수 있습니다.

반환되는 결과는 이 특정 부분을 수정한 커밋 목록입니다.명령어는 다음과 같습니다.

git log --pretty=short -u -L <upperLimit>,<lowerLimit>:<path_to_filename>

어디에upperLimitstart_line_number그리고.lowerLimitending_line_number

상세정보 - https://www.techpurohit.in/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는 단일 파일에 대해서만 작동합니다.

특정 파일 사용에 대한 모든 커밋을 가져오려면:

git rev-list HEAD --oneline FileName

예를들면

git rev-list HEAD --oneline index.html

산출량

7a2bb2f update_index_with_alias
6c03e56 update_changes
e867142 Revert "add_paragraph"

gif특정 파일에 대한 git 커밋 이미지 참조

하려면 , 「」를 사용해 .filename 아니라 filepath: , "사용방법:

git log --all -- '*.wmv'

( 자체의 ) 파일을 한 커밋에서 이루어진 (변경 뿐만 아니라) 을 .--full-diff:

git log -p --full-diff [branch] -- <path>

이전 커밋에서 삭제된 파일을 추적하려면

git log --follow -- filename

파일을 변경한 모든 커밋을 모든 브랜치에서 표시하려면 다음 명령을 사용합니다.

git log --follow --all <filepath>

git log --all <filename>을 미치는 커밋을 <filename>모든 지점에서

gitk <path_to_filename>

패키지 "gitk"가 이미 설치되어 있다고 가정합니다.

인스톨 되어 있지 않은 경우는, 다음의 순서에 따릅니다.

sudo apt-get install gitk

그런 다음 위의 명령을 사용해 보십시오.Linux용입니다.Linux 사용자가 GUI를 원할 경우 도움이 될 수 있습니다.

커밋 해시 목록을 가져오려면 다음 명령을 사용합니다.

 git rev-list HEAD <filename>

출력:

b7c4f0d7ebc3e4c61155c76b5ebc940e697600b1
e3920ac6c08a4502d1c27cea157750bd978b6443
ea62422870ea51ef21d1629420c6441927b0d3ea
4b1eb462b74c309053909ab83451e42a7239c0db
4df2b0b581e55f3d41381f035c0c2c9bd31ee98d

리스트의 첫 커밋은 5번째입니다.b7c4f0d7가장 최근의 것입니다.

# Shows commit history with patch
git log -p -<no_of_commits> --follow <file_name>

# Shows brief details like "1 file changed, 6 insertions(+), 1 deletion(-)"
git log --stat --follow <file_name>

언급

Linux 에서는, gitk 를 사용할 수 있습니다.

sudo apt-get install git-gui gitk를 사용하여 설치할 수 있습니다.「gitk<Filename>」에 의해서, 특정의 파일의 커밋을 표시할 수 있습니다.

언급URL : https://stackoverflow.com/questions/3701404/how-to-list-all-commits-that-changed-a-specific-file

반응형