programing

두 리포지토리 간의 차이 파악

yellowcard 2023. 5. 25. 21:40
반응형

두 리포지토리 간의 차이 파악

두 Git 저장소 간의 차이를 어떻게 얻을 수 있습니까?

시나리오:repo_a와 repo_b가 있습니다.후자는 repo_a의 복사본으로 생성되었습니다.이후 두 저장소 모두에서 유사한 개발이 이루어졌습니다.이 두 저장소의 현재 버전의 차이점을 나열할 수 있는 방법이 있습니까?

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

Meld는 디렉토리를 비교할 수 있습니다.

meld directory1 directory2

두 git repos의 디렉토리를 사용하기만 하면 다음과 같은 그래픽 비교가 가능합니다.

여기에 이미지 설명 입력

파란색 항목 중 하나를 클릭하면 변경된 내용을 볼 수 있습니다.

다른 보고서를 먼저 현재 보고서에 원격으로 추가할 수 있습니다.

git remote add other_name PATH_TO_OTHER_REPO

원격에서 brach를 가져옵니다.

git fetch other_name branch_name:branch_name

이렇게 하면 해당 분기가 현재 repo에 새 분기로 생성된 다음, 예를 들어 현재 분기를 새 분기(branch_name)와 비교할 수 있습니다.

git diff branch_name

저는 폴더와 파일을 비교할 수 있는 뛰어난 기능을 가진 PyCharm을 사용합니다.

두 리포지토리 모두에 대해 상위 폴더를 열고 색인화될 때까지 기다리기만 됩니다.그런 다음 폴더나 파일을 마우스 오른쪽 단추로 클릭하여Compare to...다른 쪽에 있는 해당 폴더/파일을 선택합니다.

어떤 파일이 다른지 뿐만 아니라 그 내용도 보여줍니다.명령줄보다 훨씬 쉽습니다.

하나의 리포지토리에 두 개의 분기가 모두 있으면 다음 작업을 수행할 수 있습니다.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

원격 구성을 사용하지 않고 쉽게 수행할 수 있는 방법입니다.repo A에서 마스터(마스터 분기를 비교하려고 한다고 가정):

git fetch path/to/repo_b.git master
git diff FETCH_HEAD

http://git.or.cz/gitwiki/GitTips, "일반"의 "두 로컬 리포지토리 비교 방법" 섹션을 참조하십시오.

즉, 다른 리포지토리의 개체 데이터베이스에 액세스하기 위해 GIT_ALTERNATE_OBJECTORIES 환경 변수를 사용하고 gitrev-parse를 사용합니다.--git-dirGIT_DIR - 다른 리포지토리의 기호 이름을 SHA-1 식별자로 변환합니다.

현대 버전은 다음과 같습니다('repo_a'에 있다고 가정할 때).

GIT_ALTERNAL_OBJECTORIES=../repo_b/.git/message \git diff $(git --git-diff=../repo_b/.git rev-parse --HEAD 확인) HEAD

../repo_b/.gitrepo_b에 있는 개체 데이터베이스의 경로입니다(맨 저장소였다면 repo_b.git일 것입니다).뿐만 아니라 할 수 있습니다. HEAD의 경우는 물론입니다.


리포지토리인 "repo_a" repo_b를하여 둘 다한 리포지토리에이 더 일 수 .git remote add -f ...업데이트를 대한 " offs")git fetch ...다른 응답에서 설명한 바와 같이.

다음 명령을 사용할 수 있습니다.

diff -x .git -r repo-A repo-B

또는 나란히 사용할 수 있습니다.

diff -x .git -W200 -y -r repo-A repo-B

모든 diff 파일을 Colorizing하는 경우 다음을 사용할 수 있습니다.

diff -x .git -W200 -y -r repo-A repo-B | sed -e "s/\(^diff .*\)/\x1b[31m\1\x1b[0m/"

로컬 시스템에 두 개의 reposure를 모두 설정하고 두 개의 디렉토리를 매개 변수로 사용하는 것이 가장 좋습니다.

diff -r repo-A repo-B

@iamamac의 답변에 따라 다음과 같이 요약합니다.

git remote add -f b path/to/repo_b.git
git remote update

diff-tree를 사용합니다.

git diff-tree master remotes/b/master --compact-summary

자기 자신에게 알림...먼저 가져오기, 그렇지 않으면 리포지토리에 로컬 해시가 없습니다.

1단계. 업스트림 원격 이상 설정^

단일 파일 디핑은 다음 패턴을 따릅니다.

gitdiff localBranchuptreamBranch --공간 경로/단일 파일

git diff master upstream/nameofrepo -- src/index.js

언급URL : https://stackoverflow.com/questions/1968512/getting-the-difference-between-two-repositories

반응형