git push to specific branch


104

이 질문을 읽은 후에도 git-push-current-branch , 나는 여전히 git push 명령을 작성하는 방법을 파악하는 데 어려움을 겪고 있습니다. 질문 링크에서 언급했듯이 문서에서 명확하지 않습니다.

내 '실제 세계'예제를 사용하고 싶습니다. 다음은 git status브랜치의 최상위 수준 에서 명령을 수행 할 때 표시되는 내용입니다 .

분기 amd_qlp_tester

브랜치는 5 커밋만큼 'origin / amd_qlp_tester'보다 앞서 있습니다.

기타...

그래서 내 브랜치 이름은 amd_qlp_tester기본 브랜치에서 "분기"되었습니다 (용어가 잘못된 경우 SVN 배경 때문입니다). 그러나 'origin / amd_qlp_testser'라는 이름도 있습니다.

그렇다면 내 푸시 명령을 어떻게 표현합니까?

다음 중 하나입니까?

git push origin/amd_qlp_tester
git push origin amd_qlp_tester
git push amd_qlp_tester
git push origin
git push

답변:


93

git push origin amd_qlp_tester당신을 위해 일할 것입니다. 을 입력하기 만하면 git push현재 분기의 원격이 기본값입니다.

push 구문은 다음과 같습니다 git push <remote> <branch>. 원격 .git/config파일 [remote "origin"]을 보면 저장소의 URL을 지정 하는 항목 이 표시됩니다. 따라서 명령의 첫 번째 부분에서이 프로젝트의 저장소를 찾을 위치를 Git에 알리고 브랜치를 지정하기 만하면됩니다.


감사합니다 :), dit 상태 설명이 경로로 표시 할 때 두 개의 개별 "단어"인 이유를 설명해 주시겠습니까? 즉, 왜 origin amd_qlp_testser그렇지 않은지origin/amd_qlp_tester
code_fodder

기본 "원격"은 현재 분기의 구성을 기반으로합니다 (이 경우 실제로 origin). :설정되지 않은 경우 기본값 (현재 버전의 git)을 푸시 할 브랜치 , 즉을 의미 matching하지만 향후 변경 될 예정입니다.
torek

약간 혼란 스럽습니다. v2.10을 사용하고 있습니다. 입력 git push할 때 모든 추적 된 분기를 푸시하려고합니다 ( "현재 분기의 원격이 기본값입니다").
Roberto

Git 2.x는 simple현재 분기 만 푸시하는 푸시 전략을 사용해야합니다 . blogs.atlassian.com/2014/06/happened-git-2-0-full-goodies
페트르 Mensik

fatal: Couldn't find remote ref branch-name-here
doug65536

115

로컬 브랜치와 원격 브랜치가 동일한 이름이면 다음과 같이 할 수 있습니다.

git push origin branchName

로컬 및 원격 지점 이름이 다른 경우 다음과 같이 할 수 있습니다.

git push origin localBranchName:remoteBranchName

이것은 매우 유용하고 찾기 어려웠습니다. :)
Pe Dro

네, 당신 말이 맞아요, 또한 기억하기 어렵습니다!
Imranmadbar

8

링크 된 질문의 답변은 모두 git을 구성하여 매우 짧은 git push명령을 입력 하고 원하는대로 수행 할 수 있도록하는 것 입니다. 당신이 원하는 것을 알고 Git-Ese에서 철자를 어떻게 쓰는지 알고 있다면 훌륭하지만, 당신은 git을 처음 사용합니다! :-)

귀하의 경우 Petr Mensik의 대답 은 (음, "a") 옳은 것입니다. 그 이유는 다음과 같습니다.

명령 은 "remote"(예 :)라는 이름 의 파일을 찾기 위해 파일에 뿌리를 둡니다 . 구성 파일은 다음을 나열합니다.git push remote.git/configorigin

  • 여기서 (URL-현명한) 해당 원격 "삶"(예 )ssh://hostname/path
  • 다른 경우 푸시가가는 곳
  • 푸시 할 분기를 말하지 않은 경우 푸시되는 항목
  • 실행할 때 가져 오는 것 git fetch remote

리포지토리를 처음 복제했을 때 (그때마다) git은 이들 중 일부에 대한 기본값을 설정합니다. URL은 설정 또는 해제, 모든 "적당한"기본값 ... 나, 흠, 경우에 당신이에서 복제하고, 나머지는 뭐든 있습니다 그들은을?

이것의 문제는 사람들이 "합리적인"것에 대해 시간이 지남에 따라 마음을 바꾸 었다는 것입니다. 이제 (git의 버전과 세부 사항을 구성했는지 여부에 따라) git은 향후 기본값 변경에 대한 많은 경고를 출력 할 수 있습니다. "푸시 할 분기"의 이름을 추가하면 amd_qlp_tester— (1) 해당 분기가 종료되고 (2) 해당 분기 만 푸시됩니다.

더 편리하게 밀고 싶다면 다음과 같이 할 수 있습니다.

git push origin

또는:

git push

그러나 그것이 당신이 원하는 것을하는지 여부는 원래 기본값이 합리적이라는 "초기 git 작성자"에 동의하는지 또는 원래 기본값이 합리적이지 않다는 "나중에 git 작성자"에 동의하는지 여부에 따라 다릅니다. 따라서 모든 구성 작업을 수행하려면 (결국) 연결 한 질문 (및 답변)을 참조하십시오.

이름에 관해서는 origin/amd_qlp_tester처음부터 : 실제로 현지 법인의 IT는 "원격 지점"이라고에도 불구하고, (이름은 당신의 repo 내부에 보관). " amd_qlp_tester저기 있는 곳"에 대한 git의 최선의 추측 이다. Git은 가능할 때 업데이트합니다 .


1
설명 해주셔서 감사합니다. 이제 분명한 것 같습니다. 나는에 충실 할 수 있도록 정확하게 좋아 git push origin amd_qlp_tester내가 :) 더 많은 고급 물건을 할 필요 할 때까지
code_fodder

2

업데이트 된 답변을 추가하고 싶습니다-지금은 잠시 동안 git을 사용했으며 다음 명령을 사용하여 푸시를 수행하는 경우가 많습니다 (원래 질문을 예제로 사용).

  • git push origin amd_qlp_tester-라는 origin원격 분기에서 호출 되는 원격지에있는 분기로 푸시합니다 amd_qlp_tester.
  • git push -u origin amd_qlp_tester-마지막과 동일하지만 로컬 분기를 원격 분기에 연결하는 업스트림을 설정하여 다음에 git push/pull아직 연결되지 않은 경우 에만 사용할 수 있도록합니다 (한 번만 수행하면 됨).
  • git push -일단 업스트림을 설정하면이 짧은 버전을 사용할 수 있습니다.

참고 -u 옵션은의 짧은 버전이며 --set-upstream동일합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.