Programing

특정 파일을 변경 한 모든 커밋을 나열하는 방법은 무엇입니까?

lottogame 2020. 9. 30. 08:33
반응형

특정 파일을 변경 한 모든 커밋을 나열하는 방법은 무엇입니까?


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


--follow특정 파일에 대한 작업

git log --follow -- filename

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

다른 솔루션에는 git log path(없이 --follow)가 포함됩니다. 예를 들어 디렉토리의 변경 사항을 추적하려는 경우이 방법이 유용 하지만 파일 이름이 바뀌었을 때 문제가 발생합니다 (따라서 사용 --follow filename).


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 편집보기 옵션을 엉망으로 만든 것입니다. 이것은 분기, 로컬, reflog 및 원격에 관계없이 파일에 대한 모든 커밋을 보여줍니다 .

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

아래 명령을 사용하여 특정 파일에 대한 커밋을 가져옵니다.

git log -p filename

다음과 같이 간단해야합니다 git log <somepath>. 맨 페이지 ( git-log(1))를 확인하십시오 .

개인적으로 저는 git log --stat <path>각 커밋이 파일에 미치는 영향을 볼 수 있도록 사용하는 것을 좋아 합니다.


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 1.8.4 이후) 파일 의 특정 부분변경 한 모든 커밋을 가져올 수도 있습니다 . 시작 줄과 끝 줄 번호를 전달하여 얻을 수 있습니다.

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

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

어디 upperLimit이다 start_line_numberlowerLimit는 ISending_line_number

추가 정보-https: //www.techpurohit.com/list-some-useful-git-commands


이전 커밋에서 삭제파일따르려는 경우

git log --follow -- filename

파일을 변경 한 모든 커밋을 모든 브랜치에서 보려면 다음을 사용하십시오.

git log --follow --all <filepath>

by filename아닌 모든 커밋을 찾으려면 다음을 filepath사용하십시오.

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

모든 분기에 git log --all <filename>영향을주는 커밋을 보려면 사용 합니다 <filename>.


특정 파일을 변경 한 커밋의 모든 변경 사항을 보려면 (파일 자체의 변경 사항이 아니라) 다음을 전달할 수 있습니다 --full-diff.

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

gitk <path_to_filename>

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

설치되어 있지 않은 경우 다음을 수행하십시오.

sudo apt-get install gitk

그런 다음 위의 명령을 시도하십시오. Linux 용입니다 ... GUI를 원하는 경우 Linux 사용자에게 도움이 될 수 있습니다.


Linux에서는이를 위해 gitk를 사용할 수 있습니다.

"sudo apt-get install git-gui gitk"를 사용하여 설치할 수 있습니다. "gitk <Filename>"으로 특정 파일의 커밋을 확인하는 데 사용할 수 있습니다.


# 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>

참고

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

반응형