Programming

가져 오기를 수행하지 않고 git-pull을 미리 보는 방법은 무엇입니까?

procodes 2020. 5. 11. 21:08
반응형

가져 오기를 수행하지 않고 git-pull을 미리 보는 방법은 무엇입니까?


가능합니까?

기본적으로 원격 저장소는 다음을 사용하여 가져옵니다.

git pull

이제 내 쪽의 물건을 건드리지 않고이 당김이 어떻게 바뀌는 지 (diff) 미리보고 싶습니다. 그 이유는 내가 당기는 것이 "좋은"것이 아닐 수 있으며 다른 사람이 내 저장소를 더러워지기 전에 수정하기를 원하기 때문입니다.


를 수행 한 후 a git fetch를 수행 git log HEAD..origin/master하여 마지막 공통 커밋과 오리진의 마스터 브랜치 사이의 로그 항목을 표시하십시오. diff를 표시하려면 git log -p HEAD..origin/master각 패치를 표시하거나 git diff HEAD...origin/master(두 개가 아닌 세 개의 점)을 사용하여 단일 diff를 표시하십시오.

A가 가져 오는 일을하는 경우에만 업데이트하기 때문에 일반적으로 인출 취소 할 필요는 없다 원격 지점과의 아무도 당신의 지점을. 모든 원격 커밋에서 풀 앤 병합을 수행 할 준비가되지 않은 경우 git cherry-pick원하는 특정 원격 커밋 만 수락 하는 사용할 수 있습니다 . 나중에 모든 것을 얻을 준비가 git pull되면 나머지 커밋에 의지가 병합됩니다.

업데이트 : 왜 git fetch를 사용하지 않으려는지 확실하지 않습니다. 모든 git fetch는 원격 브랜치의 로컬 복사본을 업데이트합니다. 이 로컬 사본은 브랜치와 관련이 없으며 커밋되지 않은 로컬 변경과는 관련이 없습니다. 나는 안전하기 때문에 크론 작업에서 git fetch를 실행하는 사람들에 대해 들었습니다. (하지만 일반적으로 권장하지는 않습니다.)


나는 git fetch 가 당신이 찾고있는 것이라고 생각 합니다.

로컬 저장소의 색인에 커밋하지 않고 변경 사항과 객체를 가져옵니다.

나중에 git merge를 사용 하여 병합 할 수 있습니다 .

맨 페이지

편집 : 추가 설명

로부터 직선 Git- SVN 크래시 코스 링크

이제 원격 저장소에서 새로운 변경 사항을 어떻게 얻습니까? 당신은 그들을 가져옵니다 :

git fetch http://host.xz/path/to/repo.git/ 

이제 저장소에 있으며 다음을 사용하여 검사 할 수 있습니다.

git log origin 

변경 사항을 비교할 수도 있습니다. git log HEAD..origin사용 하여 지점에없는 변경 사항 만 볼 수도 있습니다 . 그런 다음 병합하려면 다음을 수행하십시오.

git merge origin

가져올 분기를 지정하지 않으면 기본적으로 추적 리모컨이 기본값으로 설정됩니다.

매뉴얼 페이지를 읽으면 옵션과 사용법을 가장 잘 이해할 수 있습니다.

나는 예제와 메모리 로이 작업을 시도하고 있는데 현재 테스트 할 상자가 없습니다. 다음을 봐야합니다.

git log -p //log with diff

git reset --hard ( link )를 사용 하여 가져 오기를 취소 할 수 있지만 가져온 변경 사항뿐만 아니라 트리에서 커밋되지 않은 모든 변경 사항이 손실됩니다.


원격 리포지토리에서 가져 와서 차이점을 확인한 다음 당기거나 병합 할 수 있습니다.

다음은 원격 리포지토리 originmaster원격 분기 추적 이라는 브랜치의 예입니다 origin/master.

git checkout master                                                  
git fetch                                        
git diff origin/master
git pull --rebase origin master

나를 위해 사용자 지정 git 별칭을 만들었습니다.

alias.changes=!git log --name-status HEAD..

그것으로 당신은 이것을 할 수 있습니다 :

$git fetch
$git changes origin

이렇게하면을 수행하기 전에 변경 사항을 미리 볼 수있는 좋은 방법을 얻을 수 있습니다 merge.


이 두 명령을 사용하면 파일을 변경할 수 있습니다.

  1. 먼저 git fetch를 실행 하면 다음과 같은 출력을 제공합니다 (출력의 일부).

    ...
    72f8433..c8af041 개발-> 원산지 / 개발
    ...

이 작업은 두 개의 커밋 ID를 제공합니다. 첫 번째는 이전 ID이고 두 번째는 새 ID입니다.

  1. 그런 다음 git diff를 사용 하여이 두 커밋을 비교하십시오.

    git diff 72f8433..c8af041 | grep "diff --git"

이 명령은 업데이트 될 파일을 나열합니다.

diff --git a/app/controller/xxxx.php b/app/controller/xxxx.php
diff --git a/app/view/yyyy.php b/app/view/yyyy.php

예를 들어 app / controller / xxxx.phpapp / view / yyyy.php 가 업데이트됩니다.

git diff를 사용하여 두 커밋을 비교하면 업데이트 된 모든 파일이 변경된 줄로 인쇄되지만 grep을 사용 하면 출력에서 diff --git포함 된 줄만 검색하여 가져 옵니다 .


나는 파티에 늦을지도 모르지만 이것은 너무 오랫동안 나를 괴롭힌 것입니다. 내 경험상 작업 복사본을 업데이트하고 해당 변경 사항을 처리하는 것보다 보류중인 변경 사항을보고 싶습니다.

이것은 ~/.gitconfig파일 에 들어갑니다 .

[alias]
        diffpull=!git fetch && git diff HEAD..@{u}

현재 분기를 가져온 다음 작업 사본과이 가져온 분기간에 차이점을 수행합니다. 따라서 변경 사항 만 표시됩니다 git pull.


What about cloning the repo elsewhere, and doing git log on both the real checkout and the fresh clone to see if you got the same thing.

참고URL : https://stackoverflow.com/questions/180272/how-to-preview-git-pull-without-doing-fetch

반응형