github의 두 분기간에 단일 파일에 대한 diff를 어떻게 생성 할 수 있습니까? 생성해야합니다. 그런

실제로 github의 태그 인 두 버전 간의 차이점을 보여주는 단일 파일에 대한 diff를 생성해야합니다. 그런 다음이 diff를 이메일을 통해 다른 사람에게 보내려고하므로 diff에 대한 github URL이 이상적입니다. github 비교 뷰를 사용하면 변경된 모든 파일에 대해이 작업을 수행 할 수 있지만 내 저장소에 수천 개의 파일이 있으므로 좋지 않습니다.

다음과 같이 명령 줄에서이 작업을 수행 할 수 있지만 이메일을 통해 다른 사람에게 diff를 보내야하므로 도움이되지 않습니다.

git diff tag1 tag2 -- path/to/file

여기서 논의한 명령 줄 버전을 찾았습니다
. 로컬 브랜치와 원격 브랜치 사이에 지정된 파일의 차이점을 어떻게 볼 수 있습니까?



답변

GitHub는 두 커밋 간의 차이를 표시하는 방법 만 제공합니다.

해당 태그가 실제로 커밋을 가리키는 경우 Url 형식은 다음과 같습니다.

https://github.com/{user}/{repository}/compare/{from-tag}...{until-tag}

예를 들어 https://github.com/libgit2/libgit2sharp/compare/v0.9.0…v0.9.5 는 LibGit2Sharp 프로젝트의 두 버전 간의 차이점을 보여줍니다. 이 차이에는 수정 된 모든 파일이 포함됩니다.

특정 파일을 대상으로하는 URL을 검색하려는 경우 :

  • 변경된 파일 탭으로 전환

  • 온 클릭 표시 DIFF 통계 버튼 (이 링크와 같은 수정 된 파일의 목록이 표시됩니다)

  • 원하는 특정 파일의 링크를 클립 보드에 복사합니다. 그리고 Tada! 끝났습니다.

예를 들어, 위의 diff가 주어지면 https://github.com/libgit2/libgit2sharp/compare/v0.9.0…v0.9.5#diff-11 링크 LazyFixtures.cs는 버전 v0.9.0과 버전 사이에 발생한 변경 사항을 가리 킵니다. v0.9.5.

최신 정보

diff가 웹 인터페이스를 통해 렌더링하기에는 너무 크다는 의견에 따라 오래된 명령 줄 도구로 되 돌리는 것은 어떻습니까? diff의 출력을 파일로 리디렉션 한 다음 파일을 이메일 첨부 파일로 보낼 수 있습니다.

$ git diff v0.9.0 v0.9.5 -- LibGit2Sharp.Tests/LazyFixture.cs > /tmp/lazyfixture.diff

답변

다음 문제가 적용될 때의 해결 방법은 다음과 같습니다.

이 비교는 큽니다! 가장 최근의 커밋 250 개만 표시합니다.

https://gist.github.com/ 과 비교할 파일의 원시보기를 복사 하십시오 . 비교하려는 두 가지 특정 커밋 포인트를 사용합니다. 이전 커밋으로 시작하십시오.

https://gist.github.com/ 은 ‘수정’을 클릭하면 나란히보기 좋은 비교보기를 제공합니다.


답변

답변은 이전 체크인을 위해 GITHUB 웹 페이지에서 파일의 코드 변경 내역 / 취소 내역 만보고 (다운로드 안함) 원하는 사람들을위한 것입니다.

github에서 해당 파일로 이동 한 다음 HISTORY 를 선택 합니다. 그러면 아래와 같은 체크인 댓글 목록이있는 페이지가 열립니다.


그것을 클릭하면 코드 변경 사항이 표시됩니다. 역사를 클릭 한 후; 패키지를 클릭하면 모든 파일 체크인 패키지 수준을 볼 수 있습니다.

Eclipse에서는 EGit 플러그인을 사용하여 히스토리를 비교할 수 있으며 파일에서 “마우스 오른쪽 버튼 클릭-> 비교”를 할 수 있습니다.
Eclipse에서 git의 두 개정판을 어떻게 비교할 수 있습니까?


답변

나는 nulltoken의 대답을 사용 했습니다. 을 하여 명령 줄에서 GitHub의 두 커밋 사이의 차이점을 가져 오는 간단한 편의 스크립트를 작성했습니다.

gist 에서 전체 스크립트를 찾을 수 있지만 다음은 좋은 부분입니다.

# Parse the following patterns for repo urls to get the github repo url
# https://github.com/owner/repo-name.git
# git@github.com:owner/repo-name.git
BASE_URL="https://github.com/""$(git config --get remote.origin.url | sed 's/.*github\.com[/:]\(.*\).git/\1/')""/compare"

if [[ "$#" -eq 1 ]]; then
  if [[ "$1" =~ .*\.\..* ]]; then
    # Handle "git hubdiff fromcommit..tocommit"
    open "${BASE_URL}/$(git rev-parse "${1/\.\.*/}")...$(git rev-parse ${1/*\.\./})"
  else
    # Handle "git hubdiff fromcommit"
    open "${BASE_URL}/$(git rev-parse "$1")...$(git rev-parse HEAD)"
  fi
elif [[ "$#" -eq 2 ]]; then
  # Handle "git hubdiff fromcommit tocommit"
  open "${BASE_URL}/$(git rev-parse "$1")...$(git rev-parse "$2")"
fi

인수 분기, 커밋 및에서 해결할 수있는 기타 모든 것을 허용합니다 git rev-parse. 나는 open웹 페이지를 여는 데 macOS에서만 작동하는을 사용 했으므로 다른 환경에 있다면 조정하고 싶을 것입니다.

nulltoken의 대답과 마찬가지로 diff에서 단일 파일을 가리 키려면 파일 제목을 클릭하여 URL 표시 줄에 앵커 문자열을 표시 한 다음 복사 할 수 있습니다.


답변

이것이 여전히 가능하지 않기 때문에 여기에 브라우저 기반 diff-tool 방법이 있습니다. 자동화를 활용하지 않지만 Chrome 확장 프로그램을 설치하는 기능 만 필요합니다.

  1. Chrome 브라우저 용 Diff 도구 설치 : https://chrome.google.com/webstore/detail/diff-tools-text-pdf-doc-o/lkcdojpmjehlniamnglpjlldkoonlomb
  2. Diff 도구 열기 ( http://iblogbox.com/devtools/diff/ )
  3. GitHub에서 커밋, 태그 또는 브랜치 전으로 이동하여 파일을 연 다음 Raw 버튼을 클릭하여 원시 파일보기를 가져오고 모두 선택하고 복사 한 다음 Diff 도구의 왼쪽 텍스트 상자에 입력합니다.
  4. 3 단계를 반복하되 AFTER 파일에 대해 Diff Tools의 오른쪽 상자에 붙여 넣습니다.
  5. 클릭 Compare Now하여 diff ad-hoc 수행