답변:
repo_a에서 :
git remote add -f b path/to/repo_b.git
git remote update
git diff master remotes/b/master
git remote rm b
origin/master
맨손보다는 지정해야 할 것 같습니다 master
. 또한 이것은 마스터 브랜치의 차이점을 발견하므로 다른 모든 브랜치를 찾으려면 어떻게해야합니까? 예를 들어 리포지토리 백업 상태를 확인 하시겠습니까?
Meld 는 디렉토리를 비교할 수 있습니다.
meld directory1 directory2
두 git repos의 디렉토리를 사용하면 멋진 그래픽 비교를 얻을 수 있습니다.
파란색 항목 중 하나를 클릭하면 변경된 내용을 볼 수 있습니다.
하나의 저장소에 두 가지가 모두 있으면을 수행 할 수 있습니다 git diff
. 그리고 하나의 저장소에 넣는 것만 큼 쉽습니다.
git fetch /the/other/repo/.git refs/heads/*:refs/remotes/other/*
git diff master remotes/b
맞습니다. remotes/b
원격이지만 지점이 아닙니다.
그것이 작동하게하려면 :
git diff master remotes/b/master
"일반"의 " http://git.or.cz/gitwiki/GitTips "섹션, "두 로컬 리포지토리를 비교하는 방법"섹션을 참조하십시오 .
간단히 말해서 GIT_ALTERNATE_OBJECT_DIRECTORIES 환경 변수를 사용하여 다른 저장소의 객체 데이터베이스에 액세스 하고 / GIT_DIR 과 함께 git rev-parse 를 사용하여 --git-dir
다른 저장소의 기호 이름을 SHA-1 식별자로 변환하십시오.
최신 버전은 다음과 같습니다 ( 'repo_a'에 있다고 가정).
GIT_ALTERNATE_OBJECT_DIRECTORIES = .. / repo_b / .git / objects \ git diff $ (git --git-dir = .. / repo_b / .git rev-parse --verify HEAD) HEAD
여기서 ../repo_b/.git
repo_b의 오브젝트 데이터베이스에 대한 경로입니다 (저장소 인 경우 repo_b.git입니다). 물론 HEAD뿐만 아니라 임의의 버전을 비교할 수 있습니다.
repo_a 및 repo_b가 동일한 저장소 인 경우, git remote add -f ...
반복 업데이트를 위해 저장소에 대한 별명을 작성하기 위해 " "를 사용하거나, "obe off" 를 사용하여 둘 다 동일한 저장소에 두는 것이 더 합리적 일 수 있습니다.git fetch ...
. 다른 답변에 설명 된대로.