Git | 원격 Git 저장소 | git fetch


git fetch 명령어

git fetch 는 원격 저장소에서 로컬 저장소에 지점을 가져올 명령입니다. 가져온 브랜치는 지금까지 학습 해 온 일반 로컬 브랜치가 아니라 원격 브랜치로 저장됩니다. 이 기능은 그들을 로컬 저장소에 통합하기 전에 변경 내용을 확인할 수 있습니다.

사용법

git fetch <remote>

저장소에서 모든 분기를 가져 오는 명령입니다. 이 명령을 실행하면 관련된 모든 커밋 및 파일도 그 저장소에서 다운로드됩니다.

git fetch <remote> <branch>

위의 명령과 동일한 기능을 갖는 명령이지만, 그러나 페치하는 대상은 지정된 지점뿐입니다.

보충 설명

페치는 다른 개발자의 작업 내용을 확인하는 경우에 수행 할 작업입니다. 가져온 브랜치는 원격 브랜치로 표현되기 때문에 로컬 개발 작업에 전혀 아무런 영향을주지 않습니다. 인출 한 지점을 로컬 저장소에 통합하기 전에 그 내용을 확인하는 것이 가능하며, 따라서 인출은 안전한 작업 할 수 있습니다. 이 명령은 중앙 저장소의 진행 상황을 확인할 수 있다는 의미에서 SVN의 svn update 명령과 비슷하지만, 그러나이 명령은 실제로 지점의 로컬 저장소에 통합하지 않습니다.

원격 지사

원격 브랜치는 로컬 브랜치와 비슷하지만, 그러나 다른 개발자의 저장소의 브랜치를 가리키는 것입니다. 로컬 브랜치 마찬가지로 원격 브랜치를 체크 아웃 할 수 있지만, 이렇게하면 (로컬 저장소에서 과거의 커밋을 체크 아웃 한 경우와 유사한) detached HEAD 상태입니다. 즉, 원격 지사는 읽기 전용 지점이라고 생각할 수 있습니다. 원격 브랜치의 목록을 표시하려면 -r 플래그를 지정하여 git branch 명령을 실행합니다. 원격 브랜치의 시작은 그 지점이있는 원격 연결의 명칭이 부가되므로 로컬 브랜치와 혼동하는 것은 아닙니다. 예를 들어 다음의 짧은 코드는 origin 원격 저장소에서 가져 오기를 수행 할 때 나타나는 목록입니다 :

git branch -r
# origin/master
# origin/develop
# origin/some-feature

여기서도 또한 일반 git checkout 명령과 git log 명령을 사용하여 브랜치를 확인 할 수 있습니다. 원격 브랜치에 포함 된 변경이 승인 가능한 내용 일 경우 일반 git merge 명령을 사용하여 그것을 로컬 저장소에 병합 할 수 있습니다. 따라서, SVN과 달리 로컬 저장소를 원격 저장소와 동기화하는 작업은 실제로 인출 및 병합의 두 단계 작업입니다. git pull 명령은이 두 단계 작업을 간편화하기 위해 마련된 바로 가기입니다.

사용 예

이 예에서는 로컬 저장소를 중앙 저장소의 master 브랜치와 동기화 할 때의 일반적인 워크 플로우를 보여줍니다.

git fetch origin

이 명령을 실행하면 다운로드 된 지점이 표시됩니다 :

a1e8fb5..45e66a4 master -> origin/master
a1e8fb5..9e8ab1c develop -> origin/develop
* [new branch] some-feature -> origin/some-feature

아래 그림과 같이 이러한 원격 브랜치에있는 커밋은 원형이 아닌 사각형으로 표시되어 있습니다. 볼 수 있듯이, git fetch 명령을 실행하면 원격 저장소의 브랜치 전체에 액세스 할 수 있습니다.

Git 튜토리얼 : git fetch 중앙 저장소의 master에 추가 한 커밋을 검사하려면 다음 명령처럼 master 브랜치를 대상으로 git log 명령을 실행합니다 :

git log --oneline master..origin/master

다음 명령은 변경을 승인하고 그들을 로컬 master 브랜치에 병합합니다 :

git checkout master
git log origin/master

그리고 git merge origin / master 를 사용할 수 있습니다.

git merge origin/master

이제 origin / master 및 master 두 브랜치가 동일한 완결을 점하게 중앙 저장소와 동기화가 완료되었습니다.