질문자 :Debajit
다음 명령을 사용하여 원격 분기로 푸시합니다.
git push origin sandbox
내가 말한다면
git push origin
다른 브랜치에서도 변경 사항을 푸시합니까, 아니면 현재 브랜치만 업데이트합니까? master
, production
및 sandbox
세 가지 분기가 있습니다.
git push
문서는 이에 대해 명확하지 않으므로 이것을 명확히 하고 싶습니다.
git push
명령이 정확히 업데이트하는 브랜치와 리모컨은 무엇입니까?
git push git push origin
origin
는 리모컨입니다.
git push [remote] [branch]
는 해당 분기만 원격으로 푸시한다는 것을 이해합니다.
git 구성에서 push.default를 설정하여 기본 동작을 제어할 수 있습니다. git-config(1) 문서에서 :
push.default
명령줄에 refspec이 지정되지 않았거나 원격에 refspec이 구성되지 않았으며 명령줄에 제공된 옵션에 refspec이 암시되지 않은 경우 git push가 취해야 하는 작업을 정의합니다. 가능한 값은 다음과 같습니다.
nothing
: 아무것도 누르지 마십시오
matching
: (Git 2.0 이전의 기본값) 일치하는 모든 분기를 푸시합니다.
양쪽 끝에서 같은 이름을 가진 모든 분기는 일치하는 것으로 간주됩니다.
upstream
: 현재 브랜치를 업스트림 브랜치로 푸시합니다( tracking
은 업스트림의 더 이상 사용되지 않는 동의어입니다)
current
: 현재 브랜치를 같은 이름의 브랜치로 푸시
simple
: (Git 1.7.11의 새로운 기능, Git 2.0 이후의 기본값) 업스트림과 비슷하지만 업스트림 분기의 이름이 로컬 이름과 다른 경우 푸시를 거부합니다.
이것은 가장 안전한 옵션이며 초보자에게 적합합니다.
Simple, Current, Upstream 모드는 작업이 끝난 후 다른 브랜치를 뺄 준비가 되지 않은 상태에서 하나의 브랜치를 밀어내고자 하는 분들을 위한 모드입니다.
명령줄 예:
현재 구성을 보려면:
git config --global push.default
새 구성을 설정하려면:
git config --global push.default current
Community Wikipush.default를 사용하여 git의 기본 동작을 설정할 수 있습니다.
git config push.default current
또는 많은 저장소가 있고 모두 동일하게 원하는 경우
git config --global push.default current
이 설정의 현재 는 기본적으로 git push 를 수행할 때 현재 분기만 푸시 한다는 것을 의미합니다.
다른 옵션은 다음과 같습니다.
- 아무것도 : 아무것도 누르지 마십시오
- matching : 일치하는 모든 분기를 푸시합니다(기본값).
- 추적: 현재 분기를 추적 중인 항목으로 푸시합니다.
- current : 현재 분기를 푸시
업데이트 - 이를 수행하는 새로운 방법
Git 1.7.11부터 다음을 수행하십시오.
git config --global push.default simple
이것은 현재와 같은 방식으로 작동하는 새로운 설정으로 도입되었으며 소문에 따르면 v 2.0부터 git으로 기본 설정될 예정입니다.
Christoffergit push origin
에서 원격 지점을 일치 한 지역 나뭇 가지에 모든 변경 사항 밀어 버린다 origin
에 관해서는 git push
git push <remote>
처럼 작동합니다. 여기서 <remote>
는 현재 분기의 원격지(또는 현재 분기에 대해 원격지가 구성되지 않은 경우 원점)입니다.
git-push
매뉴얼 페이지 의 예제 섹션에서
baudtack방금 코드를 분기에 커밋하고 다음과 같이 github에 푸시했습니다.
git branch SimonLowMemoryExperiments git checkout SimonLowMemoryExperiments git add . git commit -a -m "Lots of experimentation with identifying the memory problems" git push origin SimonLowMemoryExperiments
neoneye다음은 Git Push 에 대한 매우 편리하고 유용한 정보입니다. Git Push: Just Tip
git push의 가장 일반적인 용도는 로컬 변경 사항을 공개 업스트림 리포지토리로 푸시하는 것입니다. : 업스트림 원격라는 이름의 "근원"이라고 가정하고 분기 "마스터"(기본 분기 이름)라는 이름에서 /에 업데이트 할 (저장소가 복제 인 경우 기본 원격 이름)이이 이루어집니다 git push origin master
git push origin
은 모든 로컬 브랜치의 변경 사항을 원본 원격 브랜치와 일치하는 브랜치로 푸시합니다.
git push origin master
는 로컬 마스터 브랜치에서 원격 마스터 브랜치로 변경 사항을 푸시합니다.
git push origin master:staging
은 변경 사항을 로컬 마스터 브랜치에서 원격 스테이징 브랜치로 푸시합니다(있는 경우).
Mukesh Chapagain(2012년 3월)
주의: 기본 " matching
" 정책이 곧 변경될 수 있습니다.
(가끔 git1.7.10+ 이후) :
" 무엇을 푸시할지 말하지 않을 때 "git push"는 무엇을 해야 합니까? "를 참조하십시오.
현재 설정 (예: push.default=matching
)에서 git push
는 동일한 이름으로 로컬 및 원격에 존재하는 모든 분기를 푸시합니다 .
이것은 일반적으로 개발자가 자신의 공개 리포지토리로 푸시할 때 적절하지만 공유 리포지토리를 사용할 때 위험하지 않다면 혼란스러울 수 있습니다.
제안은 upstream
'으로 변경하는 것입니다 . 즉, 현재 분기만 푸시하고 git pull이 가져올 분기로 푸시합니다.
다른 후보는 ' current
'입니다. 이것은 현재 브랜치를 같은 이름의 원격 브랜치로 푸시합니다.
지금까지 논의된 내용은 이 스레드에서 볼 수 있습니다.
http://thread.gmane.org/gmane.comp.version-control.git/192547/focus=192694
이전 관련 토론에는 다음이 포함됩니다.
토론에 참여하려면 git@vger.kernel.org로 메시지를 보내십시오.
VonC나는 이것을 .gitconfig aliases 섹션에 넣고 작동 방식을 좋아합니다.
pub = "!f() { git push -u ${1:-origin} `git symbolic-ref HEAD`; }; f"
현재 분기를 git pub
git pub repo-name
다른 저장소로 푸시합니다. 맛있는.
Mat Schaffer명령으로 현재 분기를 푸시할 수 있습니다.
git push origin HEAD
( 여기서 가져옴 )
Andriy F..gitconfig
에서 기본 동작을 변경할 수 있습니다. 예를 들면 다음과 같습니다.
[push] default = current
현재 설정을 확인하려면 다음을 실행하십시오.
git config --global --get push.default
kenorbgit push는 모든 로컬 브랜치를 원격 서버로 푸시하려고 시도합니다. 이것은 당신이 원하지 않는 것일 수 있습니다. 이를 처리하기 위해 몇 가지 편의 설정이 있습니다.
별칭 "gpull" 및 "gpush":
내 ~/.bash_profile에서
get_git_branch() { echo `git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/\1/'` } alias gpull='git pull origin `get_git_branch`' alias gpush='git push origin `get_git_branch`'
따라서 "gpush" 또는 "gpull"을 실행하면 "현재 켜져 있는" 분기만 푸시됩니다.
Cody Caughlan별칭을 사용하는 것보다 git-XXX 스크립트를 만드는 것을 선호하므로 소스를 더 쉽게 제어할 수 있습니다.
이 스크립트( git-setpush
remote.origin.push
값의 구성 값을 현재 분기만 푸시하는 값으로 설정합니다.
#!/bin/bash -eu CURRENT_BRANCH=$(git branch | grep '^\*' | cut -d" " -f2) NEW_PUSH_REF=HEAD:refs/for/$CURRENT_BRANCH echo "setting remote.origin.push to $NEW_PUSH_REF" git config remote.origin.push $NEW_PUSH_REF
참고로 Gerrit
사용하고 있으므로 대상을 refs/for/XXX
로 설정하여 리뷰 브랜치로 푸시합니다. 또한 origin이 원격 이름이라고 가정합니다.
다음을 사용하여 분기를 확인한 후 호출하십시오.
git checkout your-branch git setpush
분명히 체크 아웃도 할 수 있도록 조정할 수 있지만 스크립트 가 한 가지만 잘 수행하는 것을 좋아합니다.
Mark Fisher이러한 작업을 자동화하기 위해 다음 기능을 .bashrc 파일에 추가했습니다. git push/git pull + 현재 분기의 이름을 수행합니다.
function gpush() { if [[ "x$1" == "xh" ]]; then cat <<EOF Usage: gpush git: for current branch: push changes to remote branch; EOF else set -x local bname=`git rev-parse --abbrev-ref --symbolic-full-name @{u} | sed -e "s#/# #"` git push ${bname} set +x fi } function gpull() { if [[ "x$1" == "xh" ]]; then cat <<EOF Usage: gpull git: for current branch: pull changes from EOF else set -x local bname=`git rev-parse --abbrev-ref --symbolic-full-name @{u} | sed -e "s#/# #"` git pull ${bname} set +x fi }
MichaelMoser출처 : http:www.stackoverflow.com/questions/948354/default-behavior-of-git-push-without-a-branch-specified