수색…


소개

Git을 사용하여 로컬 변경 사항이 중앙 저장소의 서버로 전송되는 것과는 달리 Git을 사용하면 서버의 현재 코드를 가져 와서 저장소의 서버에서 로컬 시스템으로 가져옵니다. 이 항목에서는 Git을 사용하여 저장소에서 코드를 가져 오는 과정과 다른 코드를 로컬 복사본으로 가져 오는 동안 발생할 수있는 상황에 대해 설명합니다.

통사론

  • git pull [options [<repository> [<refspec> ...]]

매개 변수

매개 변수 세부
--quiet 텍스트 출력 없음
-q --quiet 대한 속기
--verbose 자세한 텍스트 출력. fetch 및 merge / rebase 명령에 각각 전달됩니다.
-v --verbose 대한 속기
--[no-]recurse-submodules[=yes | on-demand | no] 하위 모듈에 대한 새로운 커밋을 가져 옵니까? (이것은 당기 / 체크 아웃이 아닙니다.)

비고

git pull 은 주어진 매개 변수로 git fetch 를 실행하고 git merge 를 호출하여 검색된 브랜치 헤드를 현재 브랜치에 병합합니다.

로컬 변경 사항으로 업데이트

로컬 변경 사항이 있으면 git pull 명령은보고를 중단합니다.

오류 : 다음 파일의 로컬 변경 사항을 병합하여 덮어 씁니다.

(svn update가 subversion으로 업데이트 한 것처럼) 업데이트하려면 다음을 실행할 수 있습니다.

git stash
git pull --rebase 
git stash pop

편리한 방법은 다음을 사용하여 별칭을 정의하는 것입니다.

2.9
git config --global alias.up '!git stash && git pull --rebase && git stash pop'
2.9
git config --global alias.up 'pull --rebase --autostash'

다음은 간단히 사용할 수 있습니다.

git up

리모컨에서 코드 가져 오기

git pull

당겨, 로컬 덮어 쓰기

git fetch
git reset --hard origin/master

주의 : reset --hard 사용하여 버려진 커밋은 reflogreset 사용하여 복구 할 수 있지만 커밋되지 않은 변경 사항은 영원히 삭제됩니다.

originmaster 를 리모컨으로 변경하고, 이름이 다른 경우 강제로 끌어 당길 지점을 변경합니다.

당기는 선형 역사 유지

당길 때 리베이스

원격 저장소에서 새로운 커밋을 가져오고 현재 브랜치에 로컬 변경 사항이있는 경우 git은 원격 버전과 버전을 자동으로 병합합니다. 브랜치의 병합 수를 줄이려면 원격 버전의 브랜치에서 커밋을 리베이스 하라.

git pull --rebase

기본 동작 만들기

새로 만든 분기의 기본 동작으로 만들려면 다음 명령을 입력하십시오.

git config branch.autosetuprebase always

기존 분기의 동작을 변경하려면 다음을 사용하십시오.

git config branch.BRANCH_NAME.rebase true

git pull --no-rebase

정상적인 병합을 수행하려면.


빨리 감기 가능한지 확인하십시오.

로컬 브랜치 만 빨리 전달할 수 있도록하려면 다음을 사용할 수 있습니다.

git pull --ff-only

로컬 브랜치가 빨리 감기가 가능하지 않고 업스트림으로 병합되거나 리베이스되어야 할 때 오류가 표시됩니다.

당겨, "허가 거부"

.git 폴더에 잘못된 권한이있는 경우 몇 가지 문제가 발생할 수 있습니다. 전체 .git 폴더의 소유자를 설정하여이 문제를 해결하십시오. 때때로 다른 사용자가 .git 폴더 또는 파일의 권한을 가져오고 변경하는 경우가 있습니다.

문제를 해결하려면 다음 단계를 따르세요.

chown -R youruser:yourgroup .git/

변경 사항을 로컬 저장소로 가져 오기

단순 잡아 당기기

다른 사람과 원격 저장소 (예 : GitHub)에서 작업 할 때 어느 시점에 변경 사항을 공유하려고합니다. 그들은 일단 밀어 원격 저장소에 변경 사항을,이 저장소에서 당겨 변경 사항을 검색 할 수 있습니다.

git pull

대부분의 경우 그렇게 할 것입니다.


다른 원격 또는 지점에서 가져 오기

이름을 지정하여 다른 원격 또는 지점에서 변경 사항을 가져올 수 있습니다

git pull origin feature-A

분기 끌어 feature-A 형태의 origin 해당 지역의 지점에. 원격 이름 대신 URL을 직접 제공하고 분기 이름 대신 커밋 SHA와 같은 객체 이름을 제공 할 수 있습니다.


수동 끌어 오기

git pull의 동작을 모방하려면 git fetch git merge 사용할 수 있습니다.

git fetch origin # retrieve objects and update refs from origin
git merge origin/feature-A # actually perform the merge

이렇게하면 더 많은 제어가 가능하며 병합하기 전에 원격 지점을 검사 할 수 있습니다. 실제로 가져온 후에 git branch -a 사용하여 원격 지점을 볼 수 있으며

git checkout -b local-branch-name origin/feature-A # checkout the remote branch
# inspect the branch, make commits, squash, ammend or whatever
git checkout merging-branches # moving to the destination branch
git merge local-branch-name # performing the merge

이것은 끌어 오기 요청을 처리 할 때 매우 유용 할 수 있습니다.



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow