etc./StackOverFlow

Git 버전 관리를 사용하여 파일의 변경 내역 보기

청렴결백한 만능 재주꾼 2021. 10. 6. 03:01
반응형

질문자 :Richard


Git에서 개별 파일의 변경 내역을 보고 변경된 사항에 대한 자세한 내용을 보려면 어떻게 해야 합니까?

나는 지금까지 얻었다:

 git log -- [filename]

파일의 커밋 기록을 보여주지만 각 파일 변경 내용을 보려면 어떻게 해야 합니까?

Microsoft Visual SourceSafe 에서 전환을 시도하고 있으며 이전에는 간단한 마우스 오른쪽 버튼 클릭 → 기록 표시 였습니다 .



그래픽 보기의 경우 gitk 사용합니다.

 gitk [filename]

또는 파일 이름을 따라 이름을 바꾸려면 다음을 수행하십시오.

 gitk --follow [filename]

Claudio Acciaresi

당신이 사용할 수있는

 git log -p filename

Git이 각 로그 항목에 대한 패치를 생성하도록 합니다.

보다

 git help log

더 많은 옵션 - 실제로 많은 좋은 일을 할 수 있습니다 :) 특정 커밋에 대한 diff를 얻으려면

 git show HEAD

또는 식별자에 의한 다른 모든 개정. 또는 사용

 gitk

변경 사항을 시각적으로 탐색합니다.


VolkA

git log --follow -p -- path-to-file

이렇게 하면 파일의 전체 기록이 표시됩니다(이름 변경 이후의 기록과 각 변경 사항에 대한 diff 포함).

bar 라는 이름의 파일이 한 번 foo 명명된 경우 git log -p bar ( --follow 옵션 없이)는 이름이 변경된 지점까지만 파일의 기록을 표시합니다. foo 로 알려졌을 때 파일의 히스토리. git log --follow -p bar 사용하면 foo 로 알려졌을 때 파일에 대한 변경 사항을 포함하여 파일의 전체 기록이 표시됩니다. -p 옵션은 각 변경 사항에 대해 diff가 포함되도록 합니다.


Dan Moulding

텍스트 기반을 유지하려는 경우 tig 를 사용할 수 있습니다.

빠른 설치:

  • APT : # apt-get install tig
  • Homebrew (OS X) : $ brew install tig

단일 파일에 대한 기록을 보려면 사용하십시오: tig [filename]

또는 자세한 저장소 기록을 찾아보십시오: tig

gitk 와 비슷하지만 텍스트 기반입니다. 그것은 터미널에서 색상을 지원합니다!


Falken

git whatchanged -p filename 은 이 경우 git log -p filename 과 동일합니다.

또한 파일 내의 특정 코드 줄이 git blame filename 으로 변경된 시점을 확인할 수도 있습니다. 이렇게 하면 파일의 모든 줄에 대한 짧은 커밋 ID, 작성자, 타임스탬프 및 전체 코드 줄이 인쇄됩니다. 이것은 버그를 발견하고 언제 도입되었는지(또는 누가 잘못했는지) 알고 싶을 때 매우 유용합니다.


farktronix

소스트리 사용자

Sourcetree를 사용하여 리포지토리를 시각화하는 경우(무료이며 매우 좋음) 파일을 마우스 오른쪽 버튼으로 클릭하고 선택한 항목 로그를 선택할 수 있습니다.

여기에 이미지 설명 입력

디스플레이(아래)는 gitk 및 나열된 대부분의 다른 옵션보다 훨씬 친숙합니다. 불행히도 (현재) 명령줄에서 이 보기를 시작하는 쉬운 방법은 없습니다 — Sourcetree의 CLI는 현재 저장소를 엽니다.

여기에 이미지 설명 입력


Mark Fox

파일의 각 줄을 마지막으로 수정한 개정판과 작성자를 표시하려면:

 git blame filename

또는 강력한 비난 GUI를 사용하려는 경우:

 git gui blame filename

yllohy

그것들을 읽고 약간 플레이 한 후의 다른 답변 요약:

일반적인 명령줄 명령은

 git log --follow --all -p dir/file.c

그러나 gitk (GUI) 또는 tig(텍스트 UI)를 사용하여 훨씬 더 사람이 읽을 수 있는 방식으로 볼 수도 있습니다.

 gitk --follow --all -p dir/file.c tig --follow --all -p dir/file.c

Debian / Ubuntu 에서 이 멋진 도구에 대한 설치 명령은 예상대로입니다.

 sudo apt-get install gitk tig

그리고 현재 사용하고 있습니다.

 alias gdf='gitk --follow --all -p'

gdf dir 을 입력 dir 에 있는 모든 항목에 대한 집중 기록을 얻을 수 있습니다.


John Lawrence Aspden

이 별칭을 .gitconfig에 추가합니다.

 [alias] lg = log --all --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset'\n--abbrev-commit --date=relative

그리고 다음과 같은 명령을 사용하십시오.

 > git lg > git lg -- filename

출력은 gitk 출력과 거의 동일하게 보일 것입니다. 즐기다.


Palesz

Visual Studio Code를 GitLens 와 함께 사용할 수 있습니다. 매우 강력한 도구입니다.

GitLens를 설치한 후 GitLens 탭으로 이동하여 FILE HISTORY 선택하면 찾아볼 수 있습니다.

여기에 이미지 설명 입력


foxiris

최근에 tig 를 발견했고 매우 유용하다는 것을 알았습니다. 어떤 경우에는 A 또는 B를 원하지만 대부분의 경우 오히려 깔끔합니다.

귀하의 경우 tig <filename> 이 찾고 있는 것일 수 있습니다.

http://jonas.nitro.dk/tig/


lang2

이 정확한 목적을 위해 git-playback 을 작성했습니다.

 pip install git-playback git playback [filename]

이렇게 하면 명령줄에 결과를 표시하는(예: git log -p gitk )를 사용하여 각 커밋을 단계별로 실행할 수 있다는 이점이 있습니다.


Jian

파일의 특정 부분을 변경한 커밋을 나열하는 이것을 시도할 수도 있습니다(Git 1.8.4에서 구현됨).

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

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

여기서 upperLimit은 시작 줄 번호이고 lowerLimit은 파일의 끝 줄 번호입니다.

자세한 내용은 https://www.techpurohit.com/list-some-useful-git-commands 에 있습니다.


jitendrapurohit

또는:

gitx -- <path/to/filename>

gitx를 사용하는 경우


George Anderson

Sourcetree UI에서 오른쪽 클릭 컨텍스트 메뉴에서 'Log Selected' 옵션을 선택하여 파일의 기록을 찾을 수 있습니다.

여기에 이미지 설명 입력

모든 커밋의 기록을 보여줍니다.


savvyBrar

다른 모든 분기를 포함 하여 파일의 전체 기록을 보려면 다음을 사용하십시오.

 gitk --all <filename>

Adi Shavit

Git GUI를 사용하는 경우(Windows에서):

Repository 메뉴에서 "Visualize master's History"를 사용할 수 있습니다. 상단 창에서 커밋을 강조 표시하고 오른쪽 하단에서 파일을 강조 표시하면 왼쪽 하단에서 해당 커밋에 대한 diff를 볼 수 있습니다.


cori

훌륭한 Git Extensions 를 사용하면 파일이 여전히 존재했던 기록의 한 지점으로 이동하고(삭제된 경우에는 HEAD로 이동) File tree 탭으로 전환하고 파일을 마우스 오른쪽 버튼으로 클릭하고 File history .

기본적으로 이름 바꾸기를 통해 파일을 따르고 Blame 탭을 사용하면 주어진 개정판에서 이름을 볼 수 있습니다.

치명적인 문제가 표시되는 것과 같은 사소한 문제가 있습니다. 삭제 개정을 클릭할 때 View 탭에 fatal: Not a valid object name :-)


PhiLho

스마트깃 :

  1. 메뉴에서 변경되지 않은 파일 표시 활성화: 변경되지 않은 파일 보기 / 표시
  2. 파일을 마우스 오른쪽 버튼으로 클릭하고 '로그'를 선택하거나 'Ctrl-L'을 누르십시오.

Antonín Slejška

TortoiseGit을 사용하는 경우 파일을 마우스 오른쪽 버튼으로 클릭하고 TortoiseGit --> Show Log 수행할 수 있어야 합니다. 팝업 창에서 다음을 확인하십시오.

  • ' Show Whole Project ' 옵션이 선택되어 있지 않습니다.

  • ' All Branches ' 옵션이 선택되어 있습니다.


user3885927

내가 찾던 답은 여기에 없었다. 커밋을 위해 준비한 파일의 변경 사항을 확인하는 것이었습니다. 즉,

 git diff --cached

Malks

git diff -U <filename> 은 통합된 diff를 제공합니다.

빨간색과 녹색으로 색칠해야 합니다. 그렇지 않은 경우 git config color.ui auto 먼저 실행합니다.


Lukasz Czerwinski

Git 플러그인과 함께 Eclipse 를 사용하는 경우 히스토리와 비교 보기가 뛰어납니다. 파일을 마우스 오른쪽 버튼으로 클릭하고 "비교 대상" → "기록"을 선택합니다.


AhHatem

나는 아마도 이것이 시작되었을 때 OP가 있었던 위치에 대해 이야기하고 있을 것입니다. vimdiff 와 함께 git difftool 을 사용하여 특정 커밋에서 시작하여 내 저장소의 파일 변경 사항을 검토할 수 있는 간단한 것을 찾고 있습니다. 나는 내가 찾고 있는 답변에 너무 만족하지 않았기 때문에 이 git inc remental rep orter (gitincrep) 스크립트를 함께 던졌고 나에게 유용했습니다.

 #!/usr/bin/env bash STARTWITH="${1:-}" shift 1 DFILES=( "$@" ) RunDiff() { GIT1=$1 GIT2=$2 shift 2 if [ "$(git diff $GIT1 $GIT2 "$@")" ] then git log ${GIT1}..${GIT2} git difftool --tool=vimdiff $GIT1 $GIT2 "$@" fi } OLDVERS="" RUNDIFF="" for NEWVERS in $(git log --format=format:%h --reverse) do if [ "$RUNDIFF" ] then RunDiff $OLDVERS $NEWVERS "${DFILES[@]}" elif [ "$OLDVERS" ] then if [ "$NEWVERS" = "${STARTWITH:=${NEWVERS}}" ] then RUNDIFF=true RunDiff $OLDVERS $NEWVERS "${DFILES[@]}" fi fi OLDVERS=$NEWVERS done

인수 없이 호출되면 repo 기록의 시작 부분에서 시작됩니다. 그렇지 않으면 제공한 약식 커밋 해시로 시작하여 현재로 진행됩니다. 언제든지 Ctrl-C를 사용하여 종료할 수 있습니다. 첫 번째 인수 이후의 모든 인수는 해당 인수 사이에 나열된 파일만 포함하도록 차이 보고서를 제한합니다(이는 OP가 원했던 것이며 작은 프로젝트를 제외한 모든 프로젝트에 권장합니다). 특정 파일의 변경 사항을 확인하고 처음부터 시작하려는 경우, 당신은 ARG1에 대해 빈 문자열을 제공해야합니다. vim 사용자가 아닌 경우 vimdiff 를 선호하는 diff 도구로 바꿀 수 있습니다.

동작은 관련 변경 사항이 발견되면 커밋 주석을 출력하고 변경된 각 파일에 대해 vimdiff 실행을 제공하기 시작하는 것입니다(git difftool 동작이지만 여기에서 작동함).

이 접근 방식은 아마도 매우 순진한 것일 수 있지만 여기와 관련 게시물에서 많은 솔루션을 살펴보니 관리자 액세스 권한이 없는 시스템에 자체 학습 곡선이 있는 인터페이스를 사용하여 새 도구를 설치하는 것과 관련된 것이 많습니다. 위의 스크립트는 그 어떤 것도 다루지 않고 내가 원하는 것을 했습니다. 더 정교한 것이 필요할 때 여기에서 많은 훌륭한 제안을 살펴볼 것입니다. 그러나 이것이 OP에 직접적으로 반응한다고 생각합니다.


oracleif

출처 : http:www.stackoverflow.com/questions/278192/view-the-change-history-of-a-file-using-git-versioning

반응형