programing

git 원격 업데이트와 fetch의 차이점은 무엇입니까?

muds 2023. 6. 25. 20:37
반응형

git 원격 업데이트와 fetch의 차이점은 무엇입니까?

아이즈git remote update에 하는 것git fetch?

한마디로 이야기할 수 없군요. git remote update하나뿐 아니라 모든 원격에서 가져오기.

코드를 확인하지 않고도 다음을 확인할 수 있습니다.remote update기본적으로 각 원격에 대해 가져오기를 실행합니다. git fetch훨씬 더 세분화될 수 있습니다.

업데이트: 추가 정보!

나는 처음부터 이것을 했어야 했습니다: 나는 Git's Gitrepo에서 Git 릴리스 노트를 그리핑했습니다. (그래서 메타!)

grep --color=always -R -C30 fetch Documentation/RelNotes/* | less

그리고 나서 저는.less--allGit 버전 1.6.6의 릴리스 노트에서 확인한 내용은 다음과 같습니다.

git fetch학식이 --all그리고.--multiple " " "라는 파일이 있습니다.--prune오래된 원격 추적 분기를 제거하는 옵션입니다.은 이제들은을 만듭니다.git remote update그리고.git remote prune적음(제거할 )remote update도 아니다remote prune그러나).

버전 1.6.6은 2009년 12월 23일까지 출시되지 않았고, 원본 포스터는 2009년 12월 6일에 그의 질문을 했습니다.

릴리스 노트에서 알 수 있듯이 Git의 저자들은 다음과 같은 사실을 알고 있었습니다.git remote update명령 기능이 에 의해 다소 중복되고 있었습니다.git fetch그러나 기존 스크립트 및 프로그램과의 하위 호환성을 위해 또는 작업이 너무 많고 우선 순위가 높은 항목이 있기 때문에 제거하지 않기로 결정했습니다.


더 자세한 내용이 포함된 원답변

Xenoterracide의 답변은 현재 3.5년이 되었으며, Git는 그 이후로 여러 버전을 거쳤습니다(이 문서에서는 v1.6.5에서 v1.8.3.2로 변경됨). 및 에 대한 현재 문서를 보면 둘 다 기본적으로 여러 원격에서 새 커밋을 가져오는 동일한 기능을 수행할 수 있는 것 같습니다.적절한 옵션과 인수가 주어집니다.

모든 원격을 가져오는 중

한 은 여러원가한방가은법지는져오격을 입니다.--all플래그:

git fetch --all

원격에서 입니다. "" " " " " " " "가 없다고 할 때 사용자가 설정한 모든 원격에서 .remote.<name>.skipFetchAll그들을 위해 설정됨:

true이면 git-fetch(1) 또는 git-remote(1)의 update 하위 명령을 사용하여 업데이트할 때 이 원격은 기본적으로 건너뜁니다.git-config 설명서

이는 다음을 사용하는 것과 같습니다.

git remote update

가져올 원격 그룹을 지정하지 않고 또한 없습니다.remotes.default구성에 , 에 repo가 없는 에도 repo가 없습니다.remote.<name>.skipDefaultUpdate참으로 설정합니다.

Git의 구성에 대한 현재 1.8.3.2 설명서에는 다음과 같은 내용이 포함되어 있지 않습니다.remotes.default설정, 하지만 저는 전능한 구글과 상의했고 Mislav Marohnich로부터 다음과 같은 유용한 설명을 찾았습니다.

$ git config remotes.default 'origin mislav staging'
$ git remote update

# fetches remotes "origin", "mislav", and "staging"

가 기본 목록정수있다니습의로 할 수 .remote update지권휘은 팀할 수 있는 의 원격 일 수 이들은 팀원, 오픈 소스 프로젝트의 신뢰할 수 있는 커뮤니티 구성원 등의 원격 정보일 수 있습니다.

그러니 아마도, 만약 당신이 가지고 있다면,remotes.default세트, 그리고 당신의 모든 리모콘이 그것에 나열되지는 않습니다, 그러면.git remote update사용자의 레포가 "인식"하는 모든 원격을 가져오지 않습니다.

remote.<name>.skipDefaultUpdateGit 문서는 다음과 같이 설명합니다.

true이면 git-fetch(1) 또는 git-remote(1)의 update 하위 명령을 사용하여 업데이트할 때 이 원격은 기본적으로 건너뜁니다.

지정된 원격 그룹을 가져오는 중

모든 원격을 가져오는 대신에, 두 가지 모두fetch그리고.remote update가져올 여러 원격 및 원격 그룹을 지정할 수 있습니다.

git fetch [<options>] <group>
git fetch --multiple [<options>] [(<repository> | <group>)…]

git fetch [<options>] <group>에서는 그룹의 일부인 여러 원격을 가져올 수 있습니다(Mislav의 다른 예를 빌리기 위해).

$ git config remotes.mygroup 'remote1 remote2 ...'
$ git fetch mygroup

git fetch --multiple문서에서 한 번에 가져올 여러 리포지토리 및 리포지토리 그룹을 지정할 수 있습니다.

개 허용<repository>그리고.<group>지정할 인수입니다.아니요.<refspec>s지정할 수 있습니다.

git remote update

의 개요는 명령 구문이 다음과 같이 지정됩니다.

git remote [-v | --verbose] update [-p | --prune] [(<group> | <remote>)…]

마막부분주을목세요하지,▁the▁notice요▁last세주▁part목하.[(<group> | <remote>)…]에 오는 점들은 에오는 입니다.... 그룹 및 할 수 합니다. 즉, 이명을사여여그수지의있다며미, 다로동의니작합미을함방으와 합니다.git fetch --multiple둘 유사한지 ?... 둘사이구어그떻유렇아사십까니지한게게문이의??

러나문, 같에서서, 그설은명에 설명이 .update는 다중 원격 하는 것에 대해 아무 , "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" ""만" "" "" "" "" "

대로 대로 정의된 된 원격 에 대한 를 가져옵니다remotes.<group>.

그래서 그것은 확실하지 않습니다.git remote update▁ident와 동일하게 git fetch --multiple여러 개별 원격 및 여러 원격 그룹 지정과 관련하여

단일 리모컨 가져오기

마지막으로, 모든 사람이 단일 리모컨을 가져오는 간단한 경우를 알고 있습니다.

git fetch <remote>

그런 경우에 당신도 사용할 수 있습니다.

git remote update <remote>

것을만, 했듯이, 한작을수기위해행그, 이언이섹듯서급문, 는서에했에 대한 입니다.git remote update명령을 사용하여 단일 원격 그룹 이외의 다른 항목을 가져올 수 있는지 여부가 불분명합니다.

마무리

처럼,git fetch그리고.git remote update여러 원격에서 가져오기와 관련하여 유사하게 동작합니다.하지만 그들은 유사한 구문과 인수를 공유합니다.git fetch더 짧기 때문에, 사람들은 아마도 타이핑하고 사용하는 것이 더 쉽다고 생각할 것입니다.

수도 있어요.git remote update단일 리모컨을 가져오는 데 사용할 수 없습니다.git fetch하지만 제가 지적했듯이, 그 문서는 이것을 명확하게 하지 않습니다.

따로

Git perche 명령 간의 기능 중복은 다음과 같이 예시됩니다.git fetch그리고.git remote update위의 는 고유하지 않습니다.와 유사한 상황을 발견했습니다. 둘 다 다양한 범위의 커밋을 사용하여 새 기본 커밋에 패치를 적용할 수 있습니다.

에 따라,이 (불가피하게도합니다. 최종 사용자를 Git수발불일기부능이서년간도면전게하하가피이불)▁g▁to▁(기이▁range능?▁i▁a도수년일게for▁to부's▁simpler▁pass간)ality▁was,하▁(▁a▁example▁as?)로 범위를 전달하는 것이 더 간단하다고 생각합니다. 중복되었으며, 때로는 최종 사용자의 편의를 위해 (예를 들어, 범위를 전달하는 것이 더 간단합니다.)cherry-pick범위를 선택하기 위해 단일 커밋을 반복적으로 전달하는 것보다. 보하니아▁apparent.cherry-pickv1.7.2 릴리스 정보에서 설명한 것처럼 커밋 범위를 항상 수락하지는 않았습니다.

git cherry-pick을 배웠습니다( 예배방웠습니다을법는택하선범위를커밋예().cherry-pick A..B그리고.cherry-pick --stdin), 역시 마찬가지입니다.git revert은 더 을 지원하지 .rebase [-i]하지만, 있습니다.

언급URL : https://stackoverflow.com/questions/1856499/differences-between-git-remote-update-and-fetch

반응형