질문자 :Marko
나는 잠시 동안 Git을 사용해 왔으며 최근에 업데이트를 다운로드하여 push
하려고 할 때 이 경고 메시지가 나타나는 것을 발견했습니다.
warning: push.default is unset; its implicit value is changing in Git 2.0 from 'matching' to 'simple'. To squelch this message and maintain the current behavior after the default changes, use: git config --global push.default matching To squelch this message and adopt the new behavior now, use: git config --global push.default simple
분명히 언급된 값 중 하나로 설정할 수 있지만 그 의미는 무엇입니까? 사이의 차이가 무엇 simple
하고 matching
?
한 클라이언트에서 변경하면 리포지토리를 공유하는 다른 클라이언트에서 작업을 수행해야 합니까?
docs 에 자세히 설명되어 있지만 요약하려고 합니다.
matching
git push
가 모든 로컬 분기 를 원격에서 동일한 이름을 가진 분기로 푸시한다는 것을 의미합니다. 이렇게 하면 의도하지 않은 분기를 실수로 쉽게 푸시할 수 있습니다.
simple
은 git push
가 현재 분기만 git pull
이 가져올 분기로 푸시하고 이름이 일치하는지 확인한다는 것을 의미합니다. 이것은 보다 직관적인 동작이므로 기본값이 이것으로 변경됩니다.
이 설정은 로컬 클라이언트의 동작에만 영향을 미치며 명령줄에서 푸시할 분기를 명시적으로 지정하여 재정의할 수 있습니다. 다른 클라이언트는 다른 설정을 가질 수 있으며 푸시하려는 분기를 지정하지 않을 때만 영향을 미칩니다 .
hammar나는 이것이 오래된 게시물이라는 것을 알고 있지만 방금 같은 문제에 부딪쳤고 답변을 찾는 데 문제가 있었기 때문에 조금 추가할 것이라고 생각했습니다.
따라서 @hammar의 대답은 정확합니다. push.default simple
사용하는 것은 어떤 면에서 분기에 대한 추적을 구성하는 것과 같으므로 푸시 및 풀링할 때 원격 및 분기를 지정할 필요가 없습니다. matching
옵션은 모든 분기를 기본 원격의 해당 상대로 푸시합니다(리포지토리를 다르게 구성하지 않는 한 설정된 첫 번째 원격 원격).
다른 사람들이 미래에 유용하다고 생각하는 한 가지는 내가 OS X Mountain Lion에서 Git 1.8을 실행하고 있었고 이 오류를 본 적이 없다는 것입니다. Mavericks로 업그레이드하면 갑자기 표시됩니다( git --version
을 실행하면 OS 업데이트 전까지는 본 적이 없는 git version 1.8.3.4 (Apple Git-47)
wgpgit에서 구성의 'simple' 값에 대해 불평하는 메시지를 받으면 git 버전을 확인하세요.
git을 1.7.4.4에서 1.8.3.4로 업그레이드한 Xcode(Mountain Lion을 실행하는 Mac에서)를 업그레이드한 후 업그레이드 전에 시작된 셸은 여전히 git 1.7.4.4를 실행하고 있었고 push.default의 'simple' 값에 대해 불평했습니다. 글로벌 구성.
해결책은 이전 버전의 git을 실행하는 쉘을 닫고 새 버전을 사용하는 것이었습니다.
Tom BarronUbuntu 16.04(Git 2.7.4와 함께 제공됨)에서는 큰 경고 메시지가 표시되지만 Arch Linux에서는 표시되지 않는 이유가 궁금합니다. 그 이유는 Git 2.8 (2016년 3월)에서 경고가 제거되었기 때문입니다.
Git 버전 2.0 전후로 전환하는 동안 사용자는 push.default 구성 변수를 설정하지 않고 "git push"를 실행할 때 꽤 큰 경고를 받았습니다. 전환이 오래 전에 완료되었으므로 더 이상 경고하지 않습니다.
'simple'
동작을 변경하려는 경우가 아니면 push.default
를 설정할 필요가 없는 경우 경고가 표시되지 않습니다.
Eugene Yarmash중복으로 닫힐 수 있는 다른 스레드에서 내 답변을 가져왔습니다...
GIT 문서에서: Git 문서
아래는 전체 정보를 제공합니다. 간단히 말해서, simple
current working branch
만 푸시하고 원격에서도 동일한 이름을 가진 경우에만 푸시합니다. 이것은 초보자에게 매우 좋은 설정이며 GIT 2.0
반면 matching
는 원격에서 동일한 이름을 가진 모든 분기를 로컬로 푸시합니다. (현재 작업 지점에 관계없이). 이는 공유하고 싶지 않은 분기를 포함하여 잠재적으로 많은 다른 분기가 푸시될 수 있음을 의미합니다.
: 내 개인 사용, 나는 일반적으로 다른 옵션을 사용 current
(I는 항상 변화를 분기하기 때문에) 현재 작업 분기를 밀어. 그러나 초보자에게는 simple
push.default
refspec이 명시적으로 제공되지 않은 경우 git push가 수행해야 하는 작업을 정의합니다. 특정 워크플로에는 다양한 값이 적합합니다. 예를 들어, 순수한 중앙 워크플로(즉, 가져오기 소스가 푸시 대상과 같음)에서 업스트림이 원하는 것일 수 있습니다. 가능한 값은 다음과 같습니다.
없음 - refspec이 명시적으로 제공되지 않는 한 아무 것도 푸시하지 않습니다(오류 출력). 이것은 주로 항상 명시적으로 실수를 피하려는 사람들을 위한 것입니다.
현재 - 현재 분기를 푸시하여 수신 측에서 동일한 이름으로 분기를 업데이트합니다. 중앙 및 비중앙 워크플로우 모두에서 작동합니다.
upstream - 변경 사항이 일반적으로 현재 분기에 통합되는 분기(@{upstream}이라고 함)로 현재 분기를 다시 푸시합니다. 이 모드는 일반적으로 가져오는 동일한 리포지토리(예: 중앙 워크플로)로 푸시하는 경우에만 의미가 있습니다.
단순 - 중앙 집중식 워크플로에서 업스트림 브랜치의 이름이 로컬 이름과 다른 경우 푸시를 거부하는 추가 안전성과 함께 업스트림처럼 작동합니다.
평소에 당기는 리모컨과 다른 리모컨을 밀 때 현재로 작동합니다. 이것은 가장 안전한 옵션이며 초보자에게 적합합니다.
이 모드는 Git 2.0에서 기본값이 됩니다.
일치 - 양쪽 끝에 같은 이름을 가진 모든 분기를 푸시합니다. 이렇게 하면 푸시 중인 저장소가 푸시될 분기 세트를 기억하게 됩니다(예: 항상 maint와 master를 거기에 푸시하고 다른 분기가 없는 경우 푸시하는 저장소에는 이 두 분기와 로컬 maint 및 마스터가 있습니다. 거기로 밀릴 것입니다).
이 모드를 효과적으로 사용하려면 git push를 실행하기 전에 푸시할 모든 분기가 푸시될 준비가 되었는지 확인해야 합니다. 이 모드의 요점은 한 번에 모든 분기를 푸시할 수 있도록 하는 것입니다. 일반적으로 하나의 분기에서만 작업을 끝내고 다른 분기가 완료되지 않은 상태에서 결과를 푸시하는 경우 이 모드는 적합하지 않습니다. 또한 이 모드는 공유 중앙 리포지토리로 푸시하는 데 적합하지 않습니다. 다른 사람들이 거기에 새 브랜치를 추가하거나 사용자가 제어할 수 없는 기존 브랜치의 팁을 업데이트할 수 있기 때문입니다.
이것은 현재 기본값이지만 Git 2.0은 기본값을 단순으로 변경합니다.
UpAndAdam출처 : http:www.stackoverflow.com/questions/13148066/warning-push-default-is-unset-its-implicit-value-is-changing-in-git-2-0