'git pull'과 'git fetch'의 차이점은 무엇입니까?
와의 차이점은 무엇입니까?
가장 간단한 말로 하면,는 그 뒤에 가 이어집니다.
git fetch<고객명>님의 리모트 합니다.refs/remotes/<remote>/. 이해도 안전합니다. 이 브랜치를 변경하지 이것은, 다음의 로컬 브랜치를 변경하지 않기 때문입니다.refs/heads.
git pull는 로컬 브랜치를 리모트버전으로 최신 상태로 만들고 다른 리모트브런치도 업데이트합니다.
의 Git 문서:
git pullgit fetch를 사용하여 또는 을 발신합니다.git rebase★★★★★★★★★★★★★★★★★」git merge서로 다른 나뭇가지를 조화시키는 거죠.
git pull는 커밋을 취득한 후 자동으로 Marge를 시도합니다.이는 컨텍스트에 따라 다르므로 풀된 모든 커밋이 현재 활성 브랜치로 병합됩니다.git pull는 커밋을 먼저 리뷰하지 않고 자동으로 Marge합니다.지점 관리를 주의 깊게 하지 않으면 자주 충돌할 수 있습니다.git fetch는 현재 브랜치에 존재하지 않는 커밋을 타깃브런치에서 수집하여 로컬저장소에 저장합니다.그러나 현재 브랜치에는 병합되지 않습니다.이 기능은 리포지토리를 최신 상태로 유지해야 하지만 파일을 업데이트하면 손상될 수 있는 작업을 수행할 때 특히 유용합니다.커밋을 현재 브랜치에 통합하려면git merge★★★★★★★★★★★★★★★★★★.
Git의 설계 철학과 SVN과 같은 전통적인 소스 제어 도구의 철학을 비교하는 것이 중요합니다.
서브버전은 클라이언트/서버 모델을 사용하여 설계 및 구축되었습니다.서버인 단일 저장소가 있으며, 여러 클라이언트가 서버에서 코드를 가져와 작업한 다음 다시 서버로 코드를 커밋할 수 있습니다.클라이언트는 조작을 실행할 필요가 있을 때 항상 서버에 접속할 수 있는 것을 전제로 하고 있습니다.
Git은 중앙 저장소가 필요 없는 분산형 모델을 지원하도록 설계되어 있습니다(원한다면 사용할 수 있습니다).또한 git은 클라이언트와 "서버"가 동시에 온라인 상태가 되지 않도록 설계되었습니다.Git은 신뢰할 수 없는 링크에 있는 사람들이 이메일을 통해서도 코드를 교환할 수 있도록 설계되었다.git을 통해 코드를 교환하기 위해 완전히 분리된 상태에서 CD를 구울 수 있습니다.
이 모델을 지원하기 위해 git는 코드와 함께 로컬 저장소를 유지하고 원격 저장소 상태를 반영하는 추가 로컬 저장소를 유지합니다.원격 저장소의 복사본을 로컬에 보관함으로써 원격 저장소에 연결할 수 없는 경우에도 필요한 변경 사항을 파악할 수 있습니다.나중에 변경 내용을 다른 사람에게 전송해야 할 경우 git은 해당 변경 내용을 알려진 시점부터 원격 저장소로 전송할 수 있습니다.
git fetch는 "리모트저장소의 로컬복사를 최신 상태로 만듭니다"라는 명령어입니다.git pull"리모트 저장소의 변경 내용을 자신의 코드를 보관하는 곳으로 가져옵니다."라고 말합니다.
보통 이를 수행하려면 를 수행하여 리모트저장소의 로컬복사를 최신 상태로 만든 후 변경 내용을 자신의 코드저장소와 작업복사에 Marge합니다.
중요한 것은 워크스테이션에 프로젝트의 복사본이 적어도3개 있는 경우가 많다는 것입니다.1개의 복사본은 커밋 이력이 있는 자신의 저장소입니다.두 번째 복사본은 편집 및 빌드 중인 작업 복사본입니다.세 번째 복사본은 원격 저장소의 로컬 "캐시된" 복사본입니다.
Oliver Steel의 모든 것이 어떻게 조화를 이루는지에 대한 이미지는 다음과 같습니다.

'1'의 git fetch 해서 전에 할 수 에 현재 복사본의 될 수 .따라서 실제 풀 작업을 수행하기 전에 확인할 수 있습니다. 그러면 현재 지점 및 작업 복사본의 파일이 변경될 수 있습니다.
git fetch
git diff ...origin
double-to-에 관한 문서를 참조해 주세요... 트리플 도트...구문을 사용합니다.
무엇이 다른지 이해하기 위해 조금 비용이 들었지만, 이것은 간단한 설명입니다. masterlocalhost가 .
저장소를 복제할 때 전체 저장소를 로컬 호스트로 가져옵니다., 이 ,, 그, 마, 마, 마, 마, 마, 마, 마, 마, pointer, , pointer, pointer, pointer, /, this, this, this, this, this, this, to, to, to, to, to, to, to, to, to, ,HEAD입니다.HEAD.
포인터가 '마스터 포인터'로합니다.HEAD+ 커밋합니다.그러나 오리진/마스터 포인터는 여전히 복제 당시 상태를 가리키고 있습니다.
그 차이는 다음과 같습니다.
- 에 ㅇㅇㅇㅇㅇㅇㅇㅇㅇㅇ.
git fetch리모트 저장소(GitHub)의 모든 변경을 가져와 오리진/마스터 포인터를 로 이동합니다.HEAD한편, 로컬 브랜치마스터는 그 위치를 계속 가리킵니다. - 에 ㅇㅇㅇㅇㅇㅇㅇㅇㅇㅇ.
git pull으로 (앞에서와 같이)를 """로HEAD.
때로는 시각적인 표현이 도움이 됩니다.
좀 더 짧게
git fetch는 업데이트를 가져오지만 병합하지는 않습니다.
git pull 하다git fetch, 그에 보 under, under under under undermerge.
간단히
git fetch와 유사하다pull병합되지 .refs ★★★★★★★★★★★★★★★★★」objects 로컬은 그대로입니다).origin/master되지만 '''은"master그대로)를 사용합니다.
git pull리모콘에서 끌어내려 순식간에 합쳐집니다.
더
git clone고서를를복복복복
git rebase는 업스트림브런치에 없는 현재의 브런치에서 임시 에리어로 데이터를 저장합니다.이제 브랜치는 변경을 시작하기 전과 동일합니다.so,는,git pull -rebase리모트 변경을 풀다운하고 로컬브런치를 되감아 현재 브런치 상단에서 변경을 하나씩 재생합니다.최신 상태가 될 때까지 재생합니다.
ㅇㅇㅇㅇ.git branch -a로컬 및 리모트 모든 지점에서 정확히 어떤 일이 일어나고 있는지 확인합니다.
이 블로그 투고는 도움이 되었습니다.
git pull, git fetch 및 git clone (및 git rebase)의 차이점 - Mike Pearce
및 커버git pull,git fetch,git clone ★★★★★★★★★★★★★★★★★」git rebase.
갱신하다
실제로 어떻게 사용하는지 보여드리기 위해 업데이트하려고 합니다.
원격에서 로컬 repo를 업데이트합니다(마지하지 마십시오.
git fetch업데이트를 다운로드한 후 차이점을 살펴보겠습니다.
git diff master origin/master이러한 업데이트에 만족하는 경우 병합:
git pull
주의:
2단계: 로컬과 리모트 간의 차이에 대한 자세한 내용은 로컬 Git 브랜치와 리모트 브랜치를 비교하는 방법을 참조하십시오.
3: (하는 레포의은 아마 3: (급변하는 레포의 경우)로 이 더입니다.git rebase origin여기. 다른 답변의 @Justin Ohms 코멘트를 참조하십시오.
참고 항목: http://longair.net/blog/2009/04/16/git-fetch-and-merge/
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★.merge a pull, 「」, 「」를 할 수 .pullrebase★★★★★★ 。
git-pull - 다른 리포지토리 또는 로컬브런치에서 가져오기 및 병합개요 끌어당기다묘사 지정된 파라미터로 git-fetch를 실행하고 git-merge를 호출하여 merge를 Marge합니다.현재 브랜치로 헤드를 취득했습니다.--rebase를 사용하면 git-rebase를 호출합니다.git-block 대신. (현재 디렉토리)를 <리포지토리>로서 사용하고,로컬 저장소에서 - 로컬브런치를 Marge할 때 편리합니다.현재의 브런치에 접속합니다. 또한 옵션은 git-pull 자체와 기본 git-merge를 의미합니다.git-timeout에 대한 옵션보다 먼저 지정해야 합니다.
이력을 통합하고 싶을 때는 끌어당기고, 코데즈를 원하기만 하면 취득할 수 있습니다.여기서 어떤 사람이 몇 개의 기사에 태그를 붙이고 있기 때문입니다.
네, 여기 다음 정보가 있습니다.git pull ★★★★★★★★★★★★★★★★★」git fetch실제 차이를 이해할 수 있도록...간단히 말하면 fetch는 최신 데이터를 얻지만 코드는 변경되지 않고 현재 로컬 브랜치코드에 영향을 주지 않습니다.다만, 코드 변경을 가져와 로컬 브랜치를 Marge 합니다.각각의 상세한 것에 대하여는, 다음의 내용을 참조해 주세요.
가져오다
모든 참조 및 개체와 새 분기가 로컬 저장소에 다운로드됩니다.
하나 이상의 다른 저장소에서 분기 및/또는 태그(전체적으로 "ref")와 해당 기록을 완료하는 데 필요한 개체를 가져옵니다.리모트 트래킹브런치가 갱신되었습니다(이 동작을 제어하는 방법에 대해서는, 다음의 설명을 참조해 주세요).
기본적으로는 가져올 이력을 가리키는 태그도 모두 가져옵니다.이러한 태그는 관심 있는 브랜치를 가리키는 태그를 가져옵니다.이 기본 동작은 --tags 또는 --no-tags 옵션을 사용하거나 원격 설정을 통해 변경할 수 있습니다.tagOpt. 태그를 명시적으로 가져오는 refspec을 사용하면 관심 있는 브랜치를 가리키지 않는 태그를 가져올 수도 있습니다.
git fetch는 지정된 단일 이름 있는 저장소 또는 URL 또는 리모트가 있는 경우 여러 저장소에서 동시에 가져올 수 있습니다.(git-config1 참조).
remote를 지정하지 않으면 현재 브랜치에 대해 구성된 업스트림브런치가 없는 한 기본적으로 오리진리모트가 사용됩니다.
가져온 참조의 이름과 참조가 가리키는 개체 이름이 .git/FETCH_HEAD에 기록됩니다.이 정보는 스크립트 또는 git-pull과 같은 다른 git 명령에 의해 사용될 수 있습니다.
git 당김
리모트로부터의 변경을 로컬의 현재 브랜치에 적용합니다.
원격 저장소의 변경 사항을 현재 분기에 통합합니다.디폴트 모드에서는 git pull은 git fetch의 줄임말이고 git merge FETH_HEAD가 이어집니다.
보다 정확하게는 git pull은 지정된 파라미터로 git fetch를 실행하고 git merge를 호출하여 취득한 브랜치헤드를 현재 브랜치로 Marge합니다.--rebase를 사용하면 git merge 대신 git rebase를 실행합니다.
git-ref1에 전달된 리모트저장소의 이름이어야 합니다.는 임의의 리모트 참조(태그 이름 등) 또는 대응하는 리모트 참조 브랜치(refs/heads/:refs/remotes/refs/refs/refs/refs/refsets)를 가진 참조 컬렉션의 이름을 지정할 수 있지만, 일반적으로 리모트저장소의 브랜치 이름입니다.
및 의 기본값은 git-branch --track에 의해 설정된 현재 브랜치의 "remote" 및 "merge" 설정에서 읽힙니다.
아래 그림도 작성해서 보여드릴게요.git fetch ★★★★★★★★★★★★★★★★★」git pull★★★★★★★★★★★★...
은 '다'이다.git pull 말하면git fetch에 어 followed가 붙는다.git merge.
할 점은, 이 점에 유의해 주시기 바랍니다.git pull좋든 싫든 자동으로 병합됩니다.물론 이로 인해 병합 충돌이 발생할 수 있습니다.리모콘이origin는 '고'입니다.master 이.네가 만약git diff origin/master풀링하기 전에 잠재적인 Marge 경합에 대해 파악하고 그에 따라 로컬 지점을 준비할 수 있어야 합니다.
풀링과 푸시 외에 일부 워크플로우에는git rebase링크된 기사에서 바꿔 말하면 다음과 같습니다.
git pull origin master
git checkout foo-branch
git rebase master
git push origin foo-branch
수 .git pull --rebase당신이 정말 뭘 하고 있는지 모르는 이상, 저는 그렇게 하지 말라고 충고하고 싶습니다.는 " " " 에서 온 입니다.mangit-pull , 전 ,2.3.5:
이는 잠재적으로 위험한 작동 모드입니다.이미 이력을 공개했을 때는 좋지 않은 징조가 됩니다.git-rebase(1)를 주의 깊게 읽지 않으면 이 옵션을 사용하지 마십시오.
원격 저장소에서 가져와 차이를 확인한 다음 풀 또는 병합할 수 있습니다.
라고 할 수 있습니다.origin라고 하는 지부master, ", " " "origin/master:
git checkout master
git fetch
git diff origin/master
git rebase origin master

이 인터랙티브한 그래픽 표현은 git의 스트레칭을 줄이는 데 매우 도움이 됩니다.http://ndpsoftware.com/git-cheatsheet.html
git fetch원격에서 로컬 저장소로 변경 내용을 "수정"하기만 하면 됩니다. git pull마게다 「」라고 하는 모드입니다.git pull의 줄임말이다git fetch에 어 followed가 붙는다.git merge FETCH_HEAD
보너스:
상기 답변의 pull&fetch에 대해 말씀드리면, 흥미로운 트릭을 공유하겠습니다.
git pull --rebase
위의 명령어는 많은 시간을 절약한 제 git 생활에서 가장 유용한 명령어입니다.
새로운 커밋을 서버에 푸시하기 전에 이 명령을 실행하면 최신 서버 변경(fetch+merge와 함께)이 자동으로 동기화되어 git 로그의 맨 위에 커밋이 배치됩니다.수동 당김/머지 걱정은 없습니다.
자세한 것은, http://gitolite.com/git-pull--rebase 를 참조해 주세요.
나는 상황을 시각적으로 표현하고 싶다.다른 개발자도 보고 싶어할 것 같으니 추가 사항을 말씀드리겠습니다.모든 것이 맞는지는 잘 모르기 때문에, 뭔가 실수가 있으면 코멘트해 주세요.
LOCAL SYSTEM
. =====================================================
================= . ================= =================== =============
REMOTE REPOSITORY . REMOTE REPOSITORY LOCAL REPOSITORY WORKING COPY
(ORIGIN) . (CACHED)
for example, . mirror of the
a github repo. . remote repo
Can also be .
multiple repo's .
.
.
FETCH *------------------>*
Your local cache of the remote is updated with the origin (or multiple
external sources, that is git's distributed nature)
.
PULL *-------------------------------------------------------->*
changes are merged directly into your local copy. when conflicts occur,
you are asked for decisions.
.
COMMIT . *<---------------*
When coming from, for example, subversion, you might think that a commit
will update the origin. In git, a commit is only done to your local repo.
.
PUSH *<---------------------------------------*
Synchronizes your changes back into the origin.
리모트의 페치 미러의 주된 장점은 다음과 같습니다.
- 퍼포먼스(네트워크를 스퀴즈하지 않고 모든 커밋과 메시지를 스크롤)
- 로컬 레포 상태에 대한 피드백(예를 들어 Atlassian의 Source Tree를 사용하고 있습니다.이것에 의해, 오리진보다 커밋이 앞서는지 늦어지는지를 알 수 있습니다.이 정보는 GIT FETCH로 갱신할 수 있습니다).
GIT Fetch와 GIT Pull의 차이는 다음과 같은 시나리오로 설명할 수 있습니다. (그림은 말보다 더 큰 소리로 말한다는 점에 유의하십시오! 그림 표현을 제공했습니다.)
예를 들어 팀원들과 함께 프로젝트를 진행하고 있습니다.따라서 프로젝트의 메인 브랜치가 1개 존재하며, 모든 참여자는 자신의 로컬 저장소로 분기하여 이 로컬 브랜치에서 모듈을 수정/추가하고 나서 메인 브랜치로 푸시해야 합니다.
따라서 로컬 저장소에서 메인 프로젝트를 포킹했을 때의 두 브랜치의 초기 상태는 다음과 같습니다.A,B ★★★★★★★★★★★★★★★★★」C★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★)
새로운 : 모듈이라고 가정하면)에 대한 되었습니다.D를하면,D브랜치에 하고 싶은 , 그 중 한 Module을 했습니다.E,F 변경된 " " " "C.
상황의 할 수 .D기능하지 않도록 합니다.
이러한 문제를 회피하고 프로젝트의 원래 진행 상황과 병행하기 위해서는 다음 두 가지 방법이 있습니다.
1. Git Fetch - 로컬브런치에는 없는 오리진/본점 프로젝트의 변경 내용을 모두 다운로드합니다.그리고 Git Merge 명령어가 저장소 또는 브랜치로 가져온 변경 사항을 적용하기를 기다립니다.
이제 파일을 저장소에 병합하기 전에 주의 깊게 모니터링할 수 있습니다.도 할 수 요.D한 경우 [Modified ]에 의해C.
2. Git Pull - 로컬 브랜치를 오리진/메인 브랜치로 갱신합니다.즉, 실제로 Git Fetch와 Git 머지를 차례로 조합하는 것입니다.그러나 충돌이 발생할 수 있으므로 Git Pull을 깨끗한 복사본과 함께 사용하는 것이 좋습니다.
저도 이것 때문에 고생했어요.사실 저는 똑같은 질문을 구글에서 검색해 보았습니다.이 모든 답을 읽으면서 마침내 머릿속에 그림이 그려졌고, 2개의 저장소와 1개의 샌드박스 상태를 보고 시간을 두고 실행한 액션들을 보면서 이것을 내려보기로 결심했다.그래서 제가 생각해낸 것은 이렇습니다.제가 잘못했으면 정정해 주세요.
가져오기 기능이 있는 세 개의 저장소:
--------------------- ----------------------- -----------------------
- Remote Repo - - Remote Repo - - Remote Repo -
- - - gets pushed - - -
- @ R01 - - @ R02 - - @ R02 -
--------------------- ----------------------- -----------------------
--------------------- ----------------------- -----------------------
- Local Repo - - Local Repo - - Local Repo -
- pull - - - - fetch -
- @ R01 - - @ R01 - - @ R02 -
--------------------- ----------------------- -----------------------
--------------------- ----------------------- -----------------------
- Local Sandbox - - Local Sandbox - - Local Sandbox -
- Checkout - - new work done - - -
- @ R01 - - @ R01+ - - @R01+ -
--------------------- ----------------------- -----------------------
끌어당기는 기능이 있는 세 개의 저장소
--------------------- ----------------------- -----------------------
- Remote Repo - - Remote Repo - - Remote Repo -
- - - gets pushed - - -
- @ R01 - - @ R02 - - @ R02 -
--------------------- ----------------------- -----------------------
--------------------- ----------------------- -----------------------
- Local Repo - - Local Repo - - Local Repo -
- pull - - - - pull -
- @ R01 - - @ R01 - - @ R02 -
--------------------- ----------------------- -----------------------
--------------------- ----------------------- -----------------------
- Local Sandbox - - Local Sandbox - - Local Sandbox -
- Checkout - - new work done - - merged with R02 -
- @ R01 - - @ R01+ - - @R02+ -
--------------------- ----------------------- -----------------------
이것은 왜 페치가 매우 중요한지를 이해하는 데 도움이 되었습니다.
이 인터넷… 하기 전에 그냥 할 수 .git fetch origin <branch>모든 변경 사항을 컴퓨터에 가져오지만 로컬 개발/워크스페이스와는 별도로 유지합니다.
평면에서 로컬 작업 공간을 변경한 다음 이전에 가져온 작업과 병합한 다음 인터넷에 연결하지 않고도 잠재적인 병합 충돌을 모두 해결할 수 있습니다.또, 리모트 저장소에 새로운 변경을 가하지 않는 한, 목적지에 도착하면, 그 변경을 실시할 수 있습니다.git push origin <branch>가서 커피나 마셔요
이 멋진 아틀라시안 튜토리얼에서:
git fetch명령어는 리모트저장소에서 로컬저장소로 커밋, 파일 및 참조를 다운로드합니다.다른 사람들이 어떤 일을 하고 있는지 보고 싶을 때 하는 게 바로 '취득'입니다.중앙 이력이 어떻게 진행되었는지 볼 수 있다는 점에서 SVN 업데이트와 유사하지만 변경 내용을 저장소에 병합하도록 강제하지는 않습니다.Git은 가져온 콘텐츠를 기존 로컬 콘텐츠와 분리하여 로컬 개발 작업에 전혀 영향을 미치지 않습니다.Import된 콘텐츠는 를 사용하여 명시적으로 체크아웃해야 합니다.
git checkout명령어를 입력합니다.이를 통해 커밋을 로컬 저장소와 통합하기 전에 커밋을 안전하게 검토할 수 있습니다.하는 경우
git pull★★★★★★★★★★★★★★★★★」git fetch명령어를 사용하여 작업을 수행할 수 있습니다. 생각하시면 .git fetch이렇게 '어느 정도'라고 합니다.원격 컨텐츠는 다운로드되지만 로컬 저장소의 작동 상태는 업데이트되지 않고 현재 작업은 그대로 유지됩니다.git pull대체 하여 즉시 한다.git merge새로운 리모트 콘텐츠의 머지 커밋을 작성합니다.진행 중인 변경 사항이 있는 경우 충돌이 발생하고 병합 충돌 해결 흐름이 시작됩니다.
★★★★★★★★★★★★★★★★ git pull:
- 당신은 고립되지 않아요.
- 명시적으로 체크할 필요는 없습니다. 암묵적으로 있기 입니다.
git merge. - 병합 단계는 로컬 개발에 영향을 미치고 충돌을 일으킬 수 있습니다.
- 기본적으로 안전하지 않습니다.공격적이야.
- ★★★★★★★★★★★★★★★와 달리
git fetch을 줄 수 밖에 요..git/refs/remotes은 양쪽 ..git/refs/remotes....git/refs/heads/
를 ...로 그럼 작업 복사본을 업데이트하지 않으면git fetch럼럼어 디경 ?경 경?? ???Git fetch git git git git git git git git git git git git git git?
좋은 질문입니다. the도도도 도도도 무도도도도?heads ★★★★★★★★★★★★★★★★★」remotes새 커밋을 저장하지 마십시오.그들은 단지 커밋에 대한 조언이 있을 뿐이다.그래서...git fetch최신 git 오브젝트(blob, tree, commits)를 다운로드합니다.오브젝트를 완전히 이해하려면 git internal에서 이 비디오를 시청해야 합니다.단, 업데이트만 하면 됩니다.remotes포인터를 사용하여 해당 브랜치의 최신 커밋을 가리킵니다. 지점의가 작업 복사본에 되어 있기 입니다.heads이치노는 하다merge/pull★★★★★★★★★★★★★★★★★?알아보자.
, 「」를 )git을 하다
ls파일 및 디렉토리가 표시됩니다.아, 아, 아, 아, 아, 아.,그러세요.
ls -a닷 파일, 즉 다음 문자로 시작하는 파일이 표시됩니다..다음과 같은가 나타납니다..git.cd .git이치노, 이제 이야.
ls이치노 있습니다refscd refs.모든 디렉터리에 무엇이 들어 있는지 보는 것은 흥미롭지만, 그 중 두 가지에 초점을 맞추도록 하겠습니다.
heads★★★★★★★★★★★★★★★★★」remotes을 사용하다cd그 안에 있는 걸 확인하려고요.git fetch할 수 ./.git/refs/remotes디렉토리로 이동합니다.에 아무것도 갱신되지 않습니다./.git/refs/heads디렉토리로 이동합니다.git pull.git fetch할 수 있습니다./.git/refs/remotes디렉토리로 이동합니다.그 후 로컬과 병합하여 내부 헤드를 변경합니다./.git/refs/heads디렉토리로 이동합니다.
매우 좋은 관련 답변은 '기트 페치' 자체가 어디에 위치합니까?에서도 찾을 수 있습니다.
또한 Git 분기 명명 규칙 게시물에서 "슬래시 표기법"을 찾습니다.Git이 다른 디렉토리에 배치하는 방법을 더 잘 이해할 수 있도록 도와줍니다.
실제 차이를 확인하려면
다음 작업을 수행합니다.
git fetch origin master
git checkout master
원격 마스터가 업데이트되면 다음과 같은 메시지가 나타납니다.
Your branch is behind 'origin/master' by 2 commits, and can be fast-forwarded.
(use "git pull" to update your local branch)
않으면fetch .git checkout master그러면 당신의 로컬 git은 2개의 커밋이 추가된 것을 모를 것입니다.츠키노
Already on 'master'
Your branch is up to date with 'origin/master'.
하지만 그건 시대에 뒤떨어지고 틀렸어.왜냐하면 git은 알고 있는 것만으로 당신에게 피드백을 주기 때문입니다.아직 내려오지 않은 새로운 커밋을 의식하지 않고...
지사에서 로컬로 작업하면서 원격으로 변경된 내용을 볼 수 있는 방법이 있습니까?
하며 IDE(Xcode)의 합니다.git fetch현재 작업 중인 지점의 원격 분기에서 변경된 코드 행에 주석을 달 수 있습니다.로컬 변경과 리모트브런치 모두에 의해 행이 변경된 경우, 그 행에는 빨간색 주석이 붙습니다.합병 충돌이 아닙니다.잠재적인 합병 충돌입니다.이 경고는 다음 작업을 수행하기 전에 미래의 병합 충돌을 해결하는 데 사용할 수 있습니다.git pull모모트리
재미있는 힌트:
리모트 브랜치를 취득했을 경우는, 다음과 같이 합니다.
git fetch origin feature/123
그러면 이게 리모트 디렉토리에 들어갑니다.아직 로컬 디렉토리에서 사용할 수 없습니다.다만, DWIM(Do than I were)에 의해서, 리모트 브랜치로의 체크 아웃이 간단하게 됩니다.
git checkout feature/123
다음 작업을 수행할 필요가 없습니다.
git checkout -b feature/123 origin/feature/123
자세한 내용은 여기를 참조하십시오.
간단히 말하면 다음과 같습니다.
git pull == git fetch + git merge
<고객명>을git pull데이터를 로컬에 병합할 필요가 없습니다.<고객명>을git fetchgit merge로컬 머신에 최신 코드를 가져올 수 있습니다.그렇지 않으면 로컬 기계 코드가 병합되지 않고 변경되지 않습니다.
Git Gui에서는 데이터를 가져올 때 데이터를 병합해야 합니다.fetch 자체는 로컬에서 코드를 변경하지 않습니다.코드를 업데이트 할 때 fetch and see를 한 번 가져오면 코드가 변경되지 않음을 확인할 수 있습니다.그런 다음 병합...변경된 코드가 표시됩니다.
git fetch는 리모트 서버에서 로컬저장소의 트래킹브런치로 코드를 풀다운합니다.이 「」인 .origin 이 은 (이러한) 가지 안에 .origin/: " " )origin/master,origin/mybranch-123이것들은 현재 브랜치가 아니라 서버로부터의 브랜치 로컬복사입니다.
git pull 하다git fetch또한 추적 브랜치의 코드를 해당 브랜치의 현재 로컬버전으로 병합합니다.아직 그 변화를 받아들일 준비가 안 됐다면git fetch 번째
git fetch하고, 「」를 취득할 수 있도록 .git diff ★★★★★★★★★★★★★★★★★」git merge을 사용하다 git pull는 현재 분기에 의해 추적되는 리모트브래치에서 페치를 실행하고 결과를 Marge합니다.하시면 됩니다.git fetch리모트 브랜치에 업데이트가 있는지 확인하기 위해 로컬 브랜치와 통합할 필요가 없습니다.
Git 가져오기
오리진에서 가져오기까지 로컬 분기에 대한 변경 내용을 다운로드합니다.Fetch는 다른 사용자가 실행했지만 로컬 리포에 없는 모든 커밋을 원격 리포에 요청합니다.Fetch는 이러한 커밋을 다운로드하여 로컬 저장소에 추가합니다.
Git 머지
merge 명령을 사용하여 가져오기를 통해 다운로드한 변경 사항을 적용할 수 있습니다.Marge는 fetch에서 취득한 커밋을 가져와 로컬브런치에 추가하려고 합니다.merge에서는 로컬 변경 커밋 이력이 유지되므로 push로 브랜치를 공유할 때 Git은 다른 사용자가 변경 내용을 Marge할 수 있는 방법을 알 수 있습니다.
Git 풀
fetch와 merge가 함께 실행되는 빈도는 pull 명령어가 생성될 정도로 높습니다.Pull은 로컬브런치에 다운로드된 커밋을 추가하기 위해 페치를 수행한 후 Marge를 수행합니다.
의 유일한 차이점. "의 유일한 git pull ★★★★★★★★★★★★★★★★★」git fetch : ,, 음, 다, 다, 다, 다, 입니다.
git pull마지
git fetch 뿐, 는 Marge하지 .
예를 들어 git pull = git fetch + git merge...
git pull 명령어는 실제로는shortcut설정에 따라 git fetch 뒤에 git merge 또는 git rebase 명령을 사용합니다.Git 저장소는 git pull이 fetch에 이어 rebase가 되도록 설정할 수 있습니다.
Git은 시간순으로 오래된 커밋을 새로운 커밋 뒤에 적용할 수 있도록 합니다.따라서 저장소 간에 커밋을 전송하는 작업은 다음 두 단계로 나뉩니다.
리모트 브랜치에서 로컬리포 내의 이 리모트브런치의 카피에 새로운 커밋을 카피하고 있습니다.
to operation) (repo 조작)
master@remote >> remote/origin/master@local로컬 브랜치에 새 커밋 통합
(syslog-repo 조작)
remote/origin/master@local >> master@local
2단계에는 두 가지 방법이 있습니다.다음과 같은 작업을 수행할 수 있습니다.
- 마지막 공통 상위 항목 뒤에 로컬 분기를 포크하고 로컬 저장소에 고유한 커밋에 병렬로 새 커밋을 추가합니다. 커밋을 병합하고 포크를 닫으면 완료됩니다.
- 마지막 공통 상위 항목 뒤에 새 커밋을 삽입하고 로컬 저장소에 고유한 커밋을 다시 적용합니다.
»git은 「」, 「1」입니다.git fetch는, 「」입니다git merge ★★★★★★★★★★★★★★★★★」git rebase
git pullgit fetch ★★★★★★★★★★★★★★★★★」git merge
Git은 다음 두 가지 명령을 사용하여 원격에서 로컬로 최신 버전의 분기를 가져옵니다.
fetch: Git은 리모트에서 로컬로 최신 버전을 가져오지만 자동으로 병합되지 않습니다.
git fetch origin mastergit log -p master..origin/mastergit merge origin/master위의 명령어는 리모트마스터 브랜치에서 오리진마스터 브랜치로 메인브런치의 최신 버전을 다운로드함을 의미합니다.그런 다음 로컬 마스터 브랜치와 오리진 마스터 브랜치를 비교합니다.마지막으로 병합합니다.
git pull: Git은 리모콘에서 최신 버전을 가져와 로컬에 병합합니다.
git pull origin master는 의의음음음음 the the the the the the 。
git fetch★★★★★★★★★★★★★★★★★」git merge제로,는git fetch머지 전에 변경 사항을 확인하고 머지 여부를 결정할 수 있기 때문에 더 안전할 수 있습니다.
git pull★★★★★★★★★★★★★★★★★」git fetch
이를 이해하려면 먼저 로컬 git이 로컬 저장소뿐만 아니라 원격 저장소의 로컬 복사본도 유지한다는 것을 이해해야 합니다.
git fetch원격 저장소의 로컬 복사를 최신 상태로 만듭니다.예를 들어 원격 저장소가 GitHub인 경우 원격 저장소에서 변경한 내용을 원격 저장소의 로컬 복사본으로 가져올 수 있습니다.이렇게 하면 비교 또는 병합 등의 작업을 수행할 수 있습니다.
git pull한편, 리모트저장소의 변경은, 독자적인 코드를 보관 유지하는 장소에 표시됩니다.「」입니다.git pull git fetch먼저 원격 저장소의 로컬 복사본을 최신 상태로 만든 다음 변경 내용을 사용자 자신의 코드 저장소와 작업 복사본에 병합합니다.
초보자를 위한 간단한 그래픽 표현
여기서,
git pull
저장소에서 코드를 가져와 로컬로 기본 재배치합니다.git pull에서는 새로운 커밋이 작성될 가능성이 있습니다.
단, 에서는,
가져오다
이 .git rebase
예: 서버 마스터에서 가져와 로컬 마스터에서 기본을 변경합니다.
1) git pull (기본값 재설정은 자동으로 이루어집니다) :
git pull origin master
여기서 발신지는 리모트 리포트 마스터는 브랜치입니다.
2) git fetch (수동으로 기본 재배치 필요):
git fetch origin master
원본에서 서버 변경사항을 가져옵니다.사용자가 직접 기본을 변경할 때까지 로컬에 보관됩니다. 코드를 확인하여 충돌을 수동으로 수정해야 합니다.
git rebase origin/master
그러면 코드가 로컬로 재설정됩니다.그 전에 제대로 된 지점을 확보하세요.
실제로 Git은 사용자 자신의 코드와 원격 저장소의 복사본을 유지합니다.
" " "git fetch원격 저장소에서 데이터를 가져와 로컬 복사를 최신 상태로 만듭니다.이것이 필요한 이유는 다른 사용자가 코드를 변경했을 수 있고 사용자가 최신 정보를 유지하기를 원하기 때문입니다.
" " "git pull는 리모트저장소의 변경을 독자적인 코드를 보관하는 장소에 가져옵니다. normally normally.git pull이를 수행하려면 먼저 '스위치 가져오기'를 수행하여 원격 저장소의 로컬 복사본을 최신 상태로 만든 다음 변경 내용을 사용자 자신의 코드 저장소와 작업 복사본에 병합합니다.
git pull == (git fetch + git merge)
git fetch는 로컬브런치로 변경되지 않습니다.
원하는 프로젝트에 리모트가 설정되어 있는 로컬저장소가 이미 있는 경우 git fetch를 사용하여 기존 리모트의 모든 브랜치 및 태그를 가져올 수 있습니다.가져오기에서는 로컬 브랜치가 변경되지 않으므로 새로 가져오기 변경 사항을 포함하려면 원격 브랜치를 쌍으로 구성된 로컬 브랜치와 병합해야 합니다.github에서
언급URL : https://stackoverflow.com/questions/292357/what-is-the-difference-between-git-pull-and-git-fetch
'programing' 카테고리의 다른 글
| 여러 하위 프로세스가 완료될 때까지 bash에서 기다렸다가 하위 프로세스가 코드 !=0으로 끝날 때 종료 코드 !=0을 반환하는 방법? (0) | 2023.04.14 |
|---|---|
| UITextField 암호 숨기기 (0) | 2023.04.14 |
| WPF 코드 배후에 의한 리소스 액세스 (0) | 2023.04.09 |
| Ruby에서 어레이의 일부를 반환하려면 어떻게 해야 합니까? (0) | 2023.04.09 |
| Bash에서 길이가 0이 아닌 문자열 테스트: [ -n "$var" ]또는 [$var"] (0) | 2023.04.09 |








