programing

분기가 지정되지 않은 "git push"의 기본 동작

lovejava 2023. 4. 24. 21:04

분기가 지정되지 않은 "git push"의 기본 동작

리모트 브랜치에 푸시하려면 다음 명령을 사용합니다.

git push origin sandbox

내가 말한다면

git push origin

다른 지점도 변경됩니까, 아니면 현재 지점만 업데이트됩니까?3개의 : 3개의 지점이 있습니다.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 푸시가 실행해야 하는 액션을 정의합니다.사용 가능한 값은 다음과 같습니다.

  • nothing: "푸시하지 마세요"

  • matching ( 2.) 하는 브랜치를 . (Git 2.0 )))) ) 。

    양쪽 끝에 같은 이름을 가진 브랜치는 모두 일치하는 것으로 간주됩니다.

  • upstream 「브런치」).tracking는 upstream된 동의어입니다.

  • current:

  • simple ( 1 . . 、 2.0 git since since since 는 업스트림과 비슷하지만합니다(Git 1.7.11 、 Git 2.0 、 Git 2.0 ) 。

    이것은 가장 안전한 선택이며 초보자에게 매우 적합합니다.

심플 모드, 커런트 모드 및 업스트림 모드는 다른 브랜치를 아직 밀어낼 준비가 되지 않은 경우에도 작업 종료 후 하나의 브랜치를 밀어내고 싶은 사용자를 대상으로 합니다.

명령줄 예시:

현재의 설정을 표시하려면 , 다음의 순서에 따릅니다.

git config push.default

새 구성을 설정하려면:

git config push.default current

push.default를 사용하여 git의 기본 동작을 설정할 수 있습니다.

git config push.default current

또는 많은 저장소가 있고 모든 저장소가 동일한 경우

git config --global push.default current

이 설정의 전류는 기본적으로 git push를 실행할 때만 현재 분기를 푸시한다는 것을 의미합니다.

기타 옵션은 다음과 같습니다.

  • nothing : 아무것도 누르지 마세요.
  • matching : 일치하는 브랜치를 모두 푸시합니다(기본값).
  • tracking : 현재 브런치를 트래킹 중인 모든 브런치에 푸시합니다.
  • current : 현재 분기를 푸시합니다.

업데이트 - 새로운 방법

Git 1.7.11 현재 다음을 수행합니다.

git config --global push.default simple

이는 현재와 동일하게 동작하는 새로운 설정으로 루머에 따르면 v2.0부터 git으로 기본 설정될 예정입니다.

git push origin 상의 .origin★★★★★★에 대해서git push

, 하다, 하다, 하다, 하다.git push <remote>서, snowledge.<remote>는 현재 브랜치의 리모트(또는 현재 브랜치에 대해 리모트가 설정되어 있지 않은 경우는 오리진)입니다.

man 페이지의 Examples 섹션에서

난 그냥 내 코드를 브랜치에 커밋하고 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

여기 Git Push에 대한 매우 편리하고 유용한 정보가 있습니다: Git Push: Just the Tip

저장소로 입니다.git push는 로컬 변경을 퍼블릭업스트림 저장소로 푸시하는 것입니다.이 「이라고 하는 리모트(가 클론인 ), 가 「라고 하는 , 과 같이.git push origin master

git push origin는 모든 로컬브런치에서 일치하는 오리진리모트로 변경을 푸시합니다.

git push origin master는 로컬 마스터브런치에서 리모트마스터브런치로 변경을 푸시합니다.

git push origin master:staging로컬 마스터 브랜치에서 리모트스테이지 브랜치(존재하는 경우)로 변경을 푸시합니다.

】(2012년 3월)
주의:matching 기본 " 정책은 곧 변경
있습니다(때로는 git1.7.10+ 이후).

"논의해 주세요: 푸시할 내용을 말하지 않을 때 "git push"는 어떻게 해야 합니까?"를 참조하십시오.

현재 설정(즉, 인수 없음)에서는 로컬원격으로 동일한 이름으로 존재하는 모든 분기가 푸시됩니다.
이것은 보통 개발자가 자신의 공용 저장소에 푸시할 때 적합하지만 공유 저장소를 사용할 때는 위험하지 않으면 혼란스러울 수 있습니다.

제안은 기본값을 upstream'로 변경하는 것입니다. 즉, 현재 브랜치만 푸시하고, git pull을 끌어당기는 브랜치에 푸시하는 입니다.
다른 로는 '하다'가 있습니다current.' 현재 브랜치만 같은 이름의 리모트브런치로 푸시됩니다.

지금까지 설명한 내용은 이 스레드에서 확인할 수 있습니다.

http://thread.gmane.org/gmane.comp.version-control.git/192547/focus=192694

지금까지의 관련 논의는 다음과 같습니다.

토론에 참가하려면 다음 주소로 메시지를 보내 주십시오.git@vger.kernel.org

이것을 .gitconfig 에일리어스 섹션에 넣었을 뿐인데, 그 동작이 마음에 듭니다.

pub = "!f() { git push -u ${1:-origin} `git symbolic-ref HEAD`; }; f"

.git pub또는 와의 다른 응답git pub repo-name맛있네요.

명령을 사용하여 현재 분기를 푸시할 수 있습니다.

git push origin HEAD

(여기서 가져옴)

의 디폴트 동작을 다음과 같이 변경할 수 있습니다.

[push]
  default = current

현재 설정을 확인하려면 다음을 수행합니다.

git config --global --get push.default

git 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"을 실행하면 "current on" 브랜치만 푸시됩니다.

에일리어스를 사용하는 것보다 git-XXX 스크립트를 작성하는 것을 선호합니다.그래서 소스 제어를 쉽게 할 수 있습니다(이러한 타입의 것에 대해서는, 모두 특정의 소스 제어 dir 를 패스상에 가지고 있습니다).

스크립트(착신)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

주의해 주세요.사용하고 있는 동안,refs/for/XXX하고 있습니다.아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 맞다.

브런치를 체크 아웃한 후 호출합니다.

git checkout your-branch
git setpush

물론 체크아웃도 할 수 있지만, 저는 한 가지 일을 잘 할 수 있는 스크립트를 좋아합니다.

이러한 작업을 자동화하기 위해 다음 함수를 .bashrc 파일에 추가했습니다.git push/git pull + 현재 브랜치 이름을 사용합니다.

function gpush()
{
  if [[ "x$1" == "x-h" ]]; 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" == "x-h" ]]; 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
}

git 2.37.0

푸시 기본 동작을 변경하는 대신 자동 설정 원격 설정 실행

git config --global --add --bool push.autoSetupRemote true

push와할 수 있습니다.은 push로 있습니다.기본값은simple,upstream

참고 자료: tweet docs commit에 대한 응답

언급URL : https://stackoverflow.com/questions/948354/default-behavior-of-git-push-without-a-branch-specified