두 리포지토리 간의 차이 파악
두 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-dir
GIT_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/.git
repo_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
'programing' 카테고리의 다른 글
Postgres의 기존 열에 'serial' 추가 (0) | 2023.05.25 |
---|---|
특정 커밋 제거 (0) | 2023.05.25 |
mongodb가 아닌 mongo 셸만 설치합니다. (0) | 2023.05.25 |
VBA 언어로 "값이 비어 있지 않은 경우"를 어떻게 표현합니까? (0) | 2023.05.25 |
T-SQL에서 중복된 공간을 단일 공간으로 바꾸기 (0) | 2023.05.25 |