분산 된 워크 플로를위한 git의 "단순"vs "현재"push.default


121

기능적으로 말하면 분산 워크 플로에서 구성 설정에 대한 simplecurrent옵션 의 차이점을 알 수 없습니다 push.default.

current현재 분기를 지정된 원격지에서 동일한 이름의 분기로 푸시합니다. simple현재 분기에 대해 추적 된 원격 및 추적되지 않은 원격 장치 모두에 대해 동일한 작업을 효과적으로 수행합니다 (두 경우 모두 동일한 분기 이름을 적용합니다).

누군가 내가 놓치고있는 탈 중앙화 워크 플로우에 대해 둘 사이의 중요한 차이점을 설명 할 수 있습니까?



2
@Trevor-내 질문과 전혀 관련이 없습니다.
void.pointer 2014

답변:


184

차이점은 with simple, git push(refspec을 전달하지 않고) 현재 분기가 원격 업스트림 분기를 추적하지 않는 경우 (동일한 이름의 분기가 원격에있는 경우에도) 실패한다는 것입니다.

$ git checkout -b foo
Switched to a new branch 'foo'

$ git config push.default simple
$ git push
fatal: The current branch foo has no upstream branch.
To push the current branch and set the remote as upstream, use

    git push --set-upstream origin foo

반면에 current현재 브랜치가 업스트림을 추적하는지 여부는 신경 쓰지 않고 동일한 이름을 가진 브랜치로 푸시하려고합니다.

$ git config push.default current
$ git push
Total 0 (delta 0), reused 0 (delta 0)
To /Documents/GitHub/bare
 * [new branch]      foo-> foo

문서

로부터 힘내 구성 문서 :

  • upstream -현재 분기를 업스트림 분기로 푸시합니다 ...

  • simple -업스트림과 비슷하지만 업스트림 브랜치의 이름이 로컬 브랜치와 다른 경우 푸시를 거부합니다.

  • current -현재 분기를 동일한 이름의 분기로 푸시합니다.


4
유일한 "보너스"질문은 "왜"입니다. 업스트림 추적 분기를 강제하면 실수를 제거 할 수 있다고 생각합니다 (실수로 잘못된 원격에서 해당 분기를 덮어 씀).
void.pointer

7
단순함이 더 안전한 "안전 벨트"옵션으로 보입니다.
Jonathan

2
오랜만에 내 자신의 질문을 재검토 :-) current어떤 리모컨을 선택할지 어떻게 알았 습니까? 추적 분기가 설정되어 있지 않으면 어디로 푸시됩니까?
void.pointer

2
기본 원격-> 원점을 의미합니다. man git-push에서 : 명령 줄이 <repository> 인수로 푸시 할 위치를 지정하지 않으면 현재 분기에 대한 branch. *. remote 구성을 참조하여 푸시 할 위치를 결정합니다. 구성이 누락 된 경우 기본값은 origin입니다.
reegnz

2
나는 항상 문제없이 수년간 'current'를 사용했습니다. 대부분의 경우 작동합니다 : 하나의 리포지토리로 가져 오기 / 밀어 넣기, 새 분기 만들기 또는 이름 충돌 가능성이없는 기존 분기 확인. 문제없이 작동합니다. 안전하지 않기 때문에 기본값이어야한다고 말할 수는 없지만 존재한다는 점에 감사드립니다.
trisweb

10

차이점은 simple이름이 같은 경우 추적 분기로 푸시하고 추적 분기에 current관계없이 동일한 이름의 분기로 푸시한다는 것입니다.

$ git branch -vvv
  master 58d9fdc [origin/master: ahead 1] t1 bobo
* new    37132d3 [origin/save: ahead 1] t1 bibi   # <- tracking branch 'save'

$ git -c push.default=current push                # <- set `push.default=current`
Counting objects: 3, done.
Writing objects: 100% (3/3), 234 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To /home/jthill/sandbox/20/t1
 * [new branch]      new -> new                   # <- and push creates `new` 
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.