SW/Git

git pusfh.default option : matching 과 simple 차이점 관련

얇은생각 2019. 5. 10. 12:30
반응형

git pusfh.default option : matching 과 simple 차이점 등



프로젝트를 깃을 활용하는 경우, git push.default에 대해 고군분투하였습니다. 그러나 push.default "matching"과 "simple"의 차이가 무엇인지 확실하지 않아 조사를 해보았습니다.



git push - 구성에 따라 모든 브랜치 또는 일 브랜치를 푸시합니다 :

구성 1 – 모든 브랜치 푸시
git config --global push.default matching
이것은 모든 브랜치들을 remote 브랜치에 push하고 병합할 것을 나타냅니다. 모든 브랜치를 푸시하지 않으려면 현재의 브랜치만 푸시하면 됩니다.


구성 2: 현재 브랜치만 푸시
git config --global push.default simple
브랜치를 하나씩 푸시합니다. 이것은 대부분 현재의 지점과 연결되어 있습니다.

이것은 모든 브랜치들을 remote 브랜치에 밀어넣고 병합할 것을 나타냅니다. 모든 브랜치들을 푸시하지 않으려면 현재의 브랜치만 푸시하면 됩니다.



push.default
명시적으로 refspec이 제공되지 않은 경우, Git 푸시가 취해야 하는 조치를 정의해야 합니다. 가능한 값은 다음과 같습니다.

nothing – 명시적으로 Refspec이 제공되지 않는 한 어떤 것도 푸시하지 않습니다.(오류 발생). 이 기능은 주로 명시적인 실수를 피하고 싶어하는 사람들이 활용합니다.

current – 현재 브랜치를 푸시하여 같은 이름의 브랜치를 업데이트 합니다. 중앙 워크플로우와 비중앙 워크플로우 모두에서 작동합니다.

upstream – 변경 사항이 일반적으로 현재 브랜치(@{upstream})에 통합된 브랜치로 다시 푸시합니다. 이 모드는 같은 저장소(즉, 중앙 워크플로우)로 푸시하는 경우에만 의미가 있습니다.

simple – 중앙 집중식 워크플로우에서 업스트림과 같이 작업하여 업스트림 브랜치의 이름이 로컬 분기와 다를 경우 푸시를 거부합니다.

matching – 양쪽 끝에 동일한 이름을 가진 모든 가지를 푸시합니다. 이렇게 하면 푸시할 브랜치 집합을 저장하기 위해 리포지토리가 만들어집니다.



결론
간단히 말해서, Simple은 작동 중인 브랜치만 푸시하면 원격에서 동일한 이름이 있는 경우에도 마찬가지로 푸시가 됩니다. 이는 초보자에게 매우 좋은 설정이며 GIT 2.0에서 기본 설정이 됩니다.

반면 matching은 원격에서 동일한 이름을 가진 모든 브랜치가 로컬로 푸시됩니다. 현재 작업 지점과 관계없이 선택합니다. 즉, 공유하지 않으려는 지점을 포함하여 여러 가지 다른 분기가 푸시될 수 있습니다.

상황에 따라서 일반적으로 다른 옵션들을 활용할 수 있습니다. 현재 작업 지점만 푸시해주는 current를 활용하기도 합니다. 보통 변경 사항에 대해 현재 브랜치에만 푸시를 하는 것을 원하기 때문입니다. 평소에 활용을 하시거나 초보자라면 simple을 사용하시는 것 역시 추천드립니다.


반응형