IT

풀 후 이전 버전과 변경된 파일을 어떻게 다릅니까?

itgroup 2023. 10. 30. 20:54
반응형

풀 후 이전 버전과 변경된 파일을 어떻게 다릅니까?

"git pull"을 실행할 때 파일의 마지막 버전과 새 버전 사이에 무엇이 바뀌었는지 알고 싶을 때가 많습니다.다른 사용자가 특정 파일에 무엇을 적용했는지 알고 싶다고 합니다.

어떻게 하는 겁니까?

커밋 x 대 커밋에 대한 일부 매개 변수가 있는 "git diff"라고 가정하지만 구문을 파악할 수 없는 것 같습니다.저는 또한 "git log"가 조금 헷갈리고 제 최신 버전의 파일과 새 파일의 커밋 ID를 어디서 구해야 할지 잘 모르겠습니다.

커밋을 지정하는 데는 여러 가지 멋진 방법이 있습니다. 수정사항 지정 섹션을 참조하십시오.man git-rev-parse자세한 사항은이 경우 다음을 원할 수 있습니다.

git diff HEAD@{1}

@{1}는 "내가 지정한 참조의 이전 위치"를 의미하며, 이는 당기기 직전에 이전에 체크아웃한 것과 비교됩니다.택할 수 있습니다.HEAD작업 트리에도 약간의 변경 사항이 있는데 이에 대한 차이점을 보고 싶지 않다면 마지막으로 작업 트리에 추가할 수 있습니다.

"내 최신 버전의 파일의 커밋 ID"로 무엇을 요구하는지 잘 모르겠습니다. 커밋 "ID"(SHA1 해시)는 git 로그 출력의 모든 항목 맨 위에 있는 40자의 16진수입니다.주어진 파일이 아닌 전체 커밋에 대한 해시입니다.더 이상의 파일이 필요하지 않습니다. 파일을 하나씩만 전송하려면 다음 작업을 수행하십시오.

git diff HEAD@{1} filename

이것은 일반적인 것입니다. 주어진 커밋에서 파일의 상태를 알고 싶다면, 해당 파일에 특정한 ID/해시가 아니라 커밋과 파일을 지정합니다.

나는 다음을 사용합니다.

git diff HEAD^

또는 특정 파일만 디핑하려면 다음을(를)

git diff HEAD^ -- /foo/bar/baz.txt

스트레이트를 하면.git pull그러면 '빠른 forwarded' 상태가 되거나 원격 저장소에서 알 수 없는 수의 커밋을 병합하게 됩니다.이 작업은 하나의 작업으로 수행되므로 풀 직전에 수행한 마지막 커밋이 리로그의 마지막 항목이 되며 다음과 같이 액세스할 수 있습니다.HEAD@{1}할 수 이는 다음과 같은 작업을 수행할 수 있음을 의미합니다.

git diff HEAD@{1}

하지만, 만약 이것이 당신이 많은 것을 하고 있다고 생각한다면, 당신은 단지 그것을 하는 것을 고려하는 것을 강력히 추천합니다.git fetch수동으로 분기를 병합하거나 재배치하기 전에 페치된 분기를 검사할 수 있습니다. 예를 들어 마스터에 있고 오리진/마스터를 끌어오려고 하는 경우:

git fetch

git log HEAD..origin/master

 # looks good, lets merge

git merge origin/master

파일에서만 차이를 확인하려는 경우.명령어를 사용하여 마지막 버전과 비교할 수 있습니다.

gitdiff HEAD@{1} 파일 이름

gitdiff HEAD@{1} -- 경로/파일 이름

참고:--파일이 현재 디렉터리에 없는 경우 필요합니다.그렇지 않으면 다음과 같은 오류가 발생할 수 있습니다.

fatal: 모호한 인수 'path/filename': 알 수 없는 리비전 또는 path가 작업 트리에 없습니다.'--'를 사용하여 수정본에서 경로를 구분합니다. 'git [...] -- [...]'

언급URL : https://stackoverflow.com/questions/2428270/how-to-diff-changed-files-versus-previous-versions-after-a-pull

반응형