2017-09-12 5 views
0

업스트림 브랜치없이 원격 저장소 (예 : GitHub)로 푸시 할 때 오류를 방지하는 Bash 기능이 있습니다. 아마 당신은이 오류에 익숙 :git config push.default current로 전환 할 때의 영향은 무엇입니까?

$ git checkout -b test 
$ git push 
fatal: The current branch test has no upstream branch. 
To push the current branch and set the remote as upstream, use 

    git push --set-upstream origin test 

, 그 수정 내가하는 일은 git push에 대한 호출을 가로채는 내가 더 상류 지점에 관련된 오류를 받고 있어요 있는지 확인하려면. 그 오류의 경우 위의 제안 된 명령을 복사하여 붙여 넣는 대신 터미널에 자동으로 실행됩니다. 당신이 궁금해하는 경우

코드입니다 : https://github.com/arturoherrero/dotfiles/blob/6f517a0b7287ac61174dfd2b6c9ee5bf9a9c2e96/system/git.sh#L22-L34


나의 현재 망할 놈의 구성이 push.default simple,하지만 오늘은 그냥 나도 같은 행동 (제거를 달성하기 위해 push.default current를 사용할 수 있음을 깨달았다 내 사용자 정의 코드).

Ref. https://www.kernel.org/pub/software/scm/git/docs/git-config.html

  • current - push the current branch to update a branch with the same name on the receiving end. Works in both central and non-central workflows.

  • simple - in centralized workflow, work like upstream with an added safety to refuse to push if the upstream branch’s name is different from the local one.

    When pushing to a remote that is different from the remote you normally pull from, work as current. This is the safest option and is suited for beginners.

    This mode has become the default in Git 2.0.

그래서, git config push.default current 전환의 의미는 무엇인가? Git이 다른 동작을하기 때문에 문제가 발생할 수있는 시나리오를 이해하고 싶습니다.

답변

2

당신이 어떤 repo를 누를 때 git은 가지 이름이 일치한다고 가정합니다. 하나의 리모컨 (origin)으로 푸시하고 리모컨과 로컬의 동일한 지점에 항상 같은 이름을 사용하면 문제가 없습니다. 다른 유형의 브랜치 맵핑을 설정하려면 - 예를 들어 로컬 기능 브랜치 feature_1이 원격 브랜치 dev/features/feature_1 또는 이와 유사한 브랜치로 이동해야한다면 - simplepush.default으로 사용하고 싶지 않을 것입니다.

실제로 숨겨진 의미는 없습니다. 게시 한 문서는 동작을 설명하고, 원하는 동작이면 사용할 수 있습니다.