수색…
소개
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
편리한 방법은 다음을 사용하여 별칭을 정의하는 것입니다.
git config --global alias.up '!git stash && git pull --rebase && git stash pop'
git config --global alias.up 'pull --rebase --autostash'
다음은 간단히 사용할 수 있습니다.
git up
리모컨에서 코드 가져 오기
git pull
당겨, 로컬 덮어 쓰기
git fetch
git reset --hard origin/master
주의 : reset --hard
사용하여 버려진 커밋은 reflog
와 reset
사용하여 복구 할 수 있지만 커밋되지 않은 변경 사항은 영원히 삭제됩니다.
origin
과 master
를 리모컨으로 변경하고, 이름이 다른 경우 강제로 끌어 당길 지점을 변경합니다.
당기는 선형 역사 유지
당길 때 리베이스
원격 저장소에서 새로운 커밋을 가져오고 현재 브랜치에 로컬 변경 사항이있는 경우 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
이것은 끌어 오기 요청을 처리 할 때 매우 유용 할 수 있습니다.