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


121

기능적으로 말하면 분산 워크 플로에서 구성 설정에 대한 simple및 current옵션 의 차이점을 알 수 없습니다 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.