Git에서 하나의 파일을 임의 버전으로 디핑하는 방법은 무엇입니까?
내가 어떻게 파일을 나눌 수 있을까요?pom.xml
Git에서 마스터 브랜치에서 임의의 이전 버전으로?
할 수 있는 일:
git diff master~20:pom.xml pom.xml
전류를 비교하기 위해pom.xml
에서 나온 것까지master
20년 전에 첫 번째 부모를 통해 수정되었습니다.대체할 수 있습니다.master~20
물론, 커밋의 객체 이름(SHA1sum) 또는 수정사항을 지정하는 다른 여러 가지 방법을 사용합니다.
참고로 이것은 실제로 오래된 것을 비교하는 것입니다.pom.xml
작업 트리의 버전으로, 커밋된 버전이 아닌master
원하는 경우 대신 다음을 수행할 수 있습니다.
git diff master~20:pom.xml master:pom.xml
git diff <revision> <path>
예:
git diff b0d14a4 foobar.txt
단일 파일의 마지막 커밋 간의 차이를 확인하려면 다음을 수행합니다.
git log -p -1 filename
이렇게 하면 로컬 파일을 비교하는 것이 아니라 파일 git의 차이를 알 수 있습니다.
마지막 커밋에서 파일에서 변경된 내용을 보려면 다음과 같이 하십시오.
git diff HEAD~1 -- path/to/file
숫자(~1)를 디프할 n번째 커밋으로 변경할 수 있습니다.
일반 구문:
$git diff oldCommit..newCommit -- **FileName.xml > ~/diff.txt
"FileName.xml"이라는 이름의 모든 파일을 저장할 수 있습니다.
"--"와 "**" 사이의 공백을 주의하십시오.
질문에 대한 답변:
$git checkout master
$git diff oldCommit..HEAD -- **pom.xml
or
$git diff oldCommit..HEAD -- relative/path/to/pom.xml
git과 마찬가지로 tag/sha1/을 사용할 수 있습니다.HEAD^"를 입력합니다.
Ubuntu에서 git 1.9.1로 테스트되었습니다.
git diff -w HEAD origin/master path/to/file
-w는 공백을 무시합니다.
어느 쪽도 HEAD가 아닌 경우 bash의 브레이스 확장이 매우 유용하며, 특히 파일 이름이 긴 경우 위의 예는 다음과 같습니다.
git diff master~20:pom.xml master:pom.xml
될 것입니다
git diff {master~20,master}:pom.xml
현재 5개 커밋과 비교할 경우, 둘 다master
간단히 수행:
git diff master~5:pom.xml master:pom.xml
또한 커밋 해시 번호를 참조할 수 있습니다. 예를 들어 해시 번호가x110bd64
다음과 같은 작업을 수행하여 차이를 확인할 수 있습니다.
git diff x110bd64 pom.xml
git diff master~20 -- pom.xml
마스터 분기에 있지 않은 경우에도 작동합니다.
그래픽 도구(또는 선호하는 도구)를 사용해도 괜찮으면 다음을 수행할 수 있습니다.
gitk pom.xml
그런 다음 gitk에서 원하는 순서에 따라 임의의 커밋("선택")을 누르고 다른 커밋을 마우스 오른쪽 단추로 눌러 팝업 메뉴에서 "Diff this -> selected" 또는 "Diff selected -> this"를 선택할 수 있습니다.
GitHub에서 동일한 작업을 수행하는 데 관심이 있는 사용자는 시간에 따른 커밋 비교를 참조하십시오.
예를 들어 당신이 파일을 디프하고 싶다고 합시다.interrupt.c
에 위치한.firmware/src/
작업 영역(아직 커밋되거나 준비되지 않은 영역)과 최근 커밋 간의 차이:
git diff 툴 헤드 펌웨어/src/src.c
또는
git diff 툴 헤드 *1987.c.
참고: 마지막으로 커밋된 버전 이전에 x 버전을 디프하려면 "head"를 head~x로 바꿉니다.예를 들어, "head"를 "head~2"로 대체하여 작업 영역과 최근 커밋 이전 버전 2개를 구분합니다.
두 개의 특정 커밋된 버전 간의 diff 도구:
먼저 다음 줄을 사용하여 비교할 버전의 ID를 가져옵니다.
git log --한 줄
커밋된 모든 버전의 목록이 표시됩니다.둘을 선택하고 그들의 ID를 복사합니다.
에를 ID 입합니다 안에 합니다.{}
:
git diffool {2fae9e6,a21dd00} 펌웨어/src/src.c
또는
git diff 도구 {2fae9e6,a21dd00} *tft.c
참고: 파일 간에 차이가 없으면 아무것도 열리지 않습니다.당신은 깃바시에서 빈 줄을 얻을 것입니다.
예를 들어, 스택의 단일 파일을 구분해야 하는 경우 다음을 수행할 수 있습니다.
git diff stash@{0} -- path/to/file
특정 커밋에 대한 차이를 찾고 있으며 명령줄 대신 github UI를 사용하려면(다른 사용자와 연결하고 싶다고 함) 다음을 수행할 수 있습니다.
https://github.com/<org>/<repo>/commit/<commit-sha>/<path-to-file>
예:
오른쪽 상단에 있는 이전 및 다음 링크를 참조하여 커밋의 모든 파일을 탐색할 수 있습니다.
그러나 이는 특정 커밋에만 적용되며 두 임의 버전을 비교하는 데는 사용되지 않습니다.
언급URL : https://stackoverflow.com/questions/5586383/how-to-diff-one-file-to-an-arbitrary-version-in-git
'programing' 카테고리의 다른 글
Atlas MongoDB 클라우드 서비스에 Heroku 앱 연결하기 (0) | 2023.05.12 |
---|---|
@Html.DisplayFor - 날짜 형식("mm/dd/yyyy") (0) | 2023.05.12 |
목록의 문자열 값 바꾸기 (0) | 2023.05.12 |
IQueryable과 INumberable의 차이점은 무엇입니까? (0) | 2023.05.12 |
총알이 없는 순서 없는 목록이 필요합니다. (0) | 2023.05.12 |