마지막으로 가져온 이후 변경된 내용에 대한 git diff를 어떻게 생성할 수 있나요?

StackOverflow https://stackoverflow.com/questions/61002

  •  09-06-2019
  •  | 
  •  

문제

가급적이면 rake에서 다음 작업을 단일 명령으로 스크립트하고 싶습니다.

  1. 내 로컬 Git 저장소의 버전을 가져옵니다.
  2. Git은 최신 코드를 가져옵니다.
  3. 1단계에서 추출한 버전과 현재 로컬 저장소에 있는 버전의 Git 차이입니다.

즉, 중앙 저장소에서 최신 코드를 가져와서 마지막으로 가져온 이후 변경된 내용에 대한 차이점을 즉시 생성하고 싶습니다.

도움이 되었습니까?

해결책

refspec을 사용하면 매우 간단하게 이 작업을 수행할 수 있습니다.

git pull origin
git diff @{1}..

그러면 끌어오기 전후에 존재했던 현재 분기의 차이점을 알 수 있습니다.가져오기가 실제로 현재 분기를 업데이트하지 않으면 diff에서 잘못된 결과가 제공됩니다.또 다른 옵션은 현재 버전을 명시적으로 기록하는 것입니다.

current=`git rev-parse HEAD`
git pull origin
git diff $current..

저는 개인적으로 단순히 로그를 역순으로 표시하는 별칭을 사용합니다(예:가장 오래된 것부터 최신 것까지), 마지막 풀 이후의 모든 커밋을 sans가 병합합니다.풀이 브랜치를 업데이트할 때마다 이것을 실행합니다.

git config --global alias.lcrev 'log --reverse --no-merges --stat @{1}..

다른 팁

그렉의 방법이 작동해야 합니다(저는 아니고 다른 Greg :P).귀하의 의견과 관련하여 Origin은 중앙 저장소를 로컬 컴퓨터에 복제할 때 Git에서 설정하는 구성 변수입니다.기본적으로 Git 저장소는 그것이 어디서 왔는지 기억합니다.그러나 git-config를 사용해야 하는 경우 이러한 변수를 수동으로 설정할 수 있습니다.

git config remote.origin.url <url>

여기서 url은 중앙 저장소의 원격 경로입니다.

다음은 작동해야 하는 배치 파일의 예입니다(테스트하지는 않았습니다).

@ECHO off

:: Retrieve the changes, but don't merge them.
git fetch

:: Look at the new changes
git diff ...origin

:: Ask if you want to merge the new changes into HEAD
set /p PULL=Do you wish to pull the changes? (Y/N)
IF /I %PULL%==Y git pull

제가 질문드린 내용과 매우 유사합니다 git에서 브랜치 변경사항을 가져오는 방법.git diff와 git diff의 동작을 참고하세요.git log는 두 개의 점을 사용할 때와 git log를 사용할 때 일관되지 않게 다릅니다.세 개의 점.그러나 애플리케이션에 다음을 사용할 수 있습니다.

git fetch
git diff ...origin

그 후, git pull 변경 사항을 HEAD에 병합합니다.

이것을 bash 프로필에 추가하면 grin(git 원격 수신) 및 grout(git 원격 송신)을 실행하여 오리진 마스터에 대해 들어오고 나가는 커밋의 차이점을 확인할 수 있습니다.

function parse_git_branch {
  git branch --no-color 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/\1/'
}
function gd2 { 
 echo branch \($1\) has these commits and \($2\) does not 
 git log $2..$1 --no-merges --format='%h | Author:%an | Date:%ad | %s' --date=local
}
function grin {
 git fetch origin master
 gd2 FETCH_HEAD $(parse_git_branch)
}
function grout {
 git fetch origin master
 gd2 $(parse_git_branch) FETCH_HEAD
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top