가져 오기를 수행하지 않고 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 )를 사용 하여 가져 오기를 취소 할 수 있지만 가져온 변경 사항뿐만 아니라 트리에서 커밋되지 않은 모든 변경 사항이 손실됩니다.
원격 리포지토리에서 가져 와서 차이점을 확인한 다음 당기거나 병합 할 수 있습니다.
다음은 원격 리포지토리 origin
및 master
원격 분기 추적 이라는 브랜치의 예입니다 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
.
이 두 명령을 사용하면 파일을 변경할 수 있습니다.
먼저 git fetch를 실행 하면 다음과 같은 출력을 제공합니다 (출력의 일부).
... 72f8433..c8af041 개발-> 원산지 / 개발 ...
이 작업은 두 개의 커밋 ID를 제공합니다. 첫 번째는 이전 ID이고 두 번째는 새 ID입니다.
그런 다음 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.php 및 app / 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
'Programming' 카테고리의 다른 글
ggplot에서 일부 범례 끄기 (0) | 2020.05.11 |
---|---|
Visual Studio가 탭을 4 개의 공백으로 바꿉니 까? (0) | 2020.05.11 |
UIView의 프레임, 경계, 중심, 원점, 언제 무엇을 사용해야합니까? (0) | 2020.05.11 |
git에서 마지막 커밋을 취소하는 방법 (0) | 2020.05.10 |
Windows에서 추가 캐리지 리턴을 추가하는 Python의 CSV (0) | 2020.05.10 |