하나의 Git 브랜치를 어떻게 푸시합니까?


247

로컬 자식 저장소에서 작업하고 있습니다. 이 두 가지가있다, masterfeature_x.

내가 밀어 원하는 feature_x원격 REPO에,하지만 난에 변경 밀어 싶지 않은 master지점.

윌 a는 git push origin feature_x내에서 feature_x지점 ( feature_x작업 지점은 이미 원격에 존재)?

지금은 마스터로 푸시 할 수 없기 때문에 상자에서 이것을 테스트하고 싶지 않습니다.


여기를보세요 : remote and here : 브랜치 가 작동하는 것처럼 github Sounds로 푸시 하십시오 .
알.

답변:


376

예, 다음을 수행하십시오.

git checkout feature_x
git push origin feature_x

54
최신 git에서는 단순히 "git push origin HEAD"또는 "git push HEAD"를 사용하여 현재 체크 아웃 된 분기 만 푸시 할 수 있어야합니다.
Jakub Narębski

2
feature_x에 체크 아웃해야합니까?
hd.

5
예, 마스터 인 경우 로컬 마스터 분기를 원격 feature_x 분기로 푸시하려고 시도하기 때문입니다. 하지하려면 먼저 체크 아웃해야 당신은해야 할 것 "자식 푸시 원산지 feature_x을 : feature_x"
cpjolicoeur

1
@cpjolicoeur 다른 질문에서 보았습니다 (예 : 여기 ) git push -u origin <branch-name>. 그러나 당신은 그것을 언급하지 않았습니다. 그게 필요 할까 ?
riroo

3
@miss_R 명령 의 -u옵션은 git-push방금 푸시 한 분기를 추적하기위한 업스트림 참조를 설정합니다. 이것은 git-pull미래에 그 지점 과 같은 것들을 지정하지 않고 어느 지점에서 끌어 올 것인지를 이미 알게 할 것입니다. 단일 브랜치를 푸시하는 옵션으로 필요하지는 않지만 많은 사람들이 로컬 브랜치를 추적하려는 원격 브랜치를 추적하기 때문에 널리 사용됩니다.
cpjolicoeur

74

기본적으로 git push모든 원격 브랜치가 업데이트됩니다. 그러나 현재 분기 만 업스트림으로 업데이트하도록 git을 구성 할 수 있습니다.

git config push.default upstream

git push를 할 때 git은 현재 (체크 아웃 된) 브랜치 만 업데이트한다는 것을 의미합니다.

다른 유효한 옵션은 다음과 같습니다.

  • nothing: 참조 스펙이 명시 적으로 지정되어 있지 않으면 아무것도 밀어 내지 마십시오 (오류) . 이것은 항상 명시 적으로 표현함으로써 실수를 피하고자하는 사람들을위한 것입니다.
  • matching: 같은 이름의 모든 가지를 양쪽 끝에 밀어 넣습니다 . (Ver 1.7.11 이전의 기본 옵션)
  • upstream: 현재 분기를 업스트림 분기로 푸시합니다. 이 모드는 일반적으로 가져 오는 것과 동일한 리포지토리 (예 : 중앙 워크 플로 ) 로 푸시하는 경우에만 의미가 있습니다 . 로컬 및 원격 지점에 동일한 이름을 가질 필요는 없습니다 .
  • tracking: 더 이상 사용되지 않습니다 upstream. 대신 사용하십시오.
  • current: 현재 분기를 수신 측 에서 같은 이름 의 원격 분기로 밉니다 . 중앙 및 비 중앙 워크 플로 모두에서 작동합니다.
  • simple: 중앙 워크 플로에서 [Ver 1.7.11부터 사용 가능] upstream, 업스트림 브랜치 이름이 로컬 브랜치 이름과 다른 경우 푸시를 거부하는 추가 안전 기능을 사용하십시오. 일반적으로 당기는 리모콘과 다른 리모콘을 밀 때로 작업하십시오 current. 이것은 가장 안전한 옵션이며 초보자에게 적합합니다. 이 모드는 Git 2.0에서 기본값이되었습니다.

2
고마워, current내가 찾던 것은 기본적 git push으로 foo지점 에서 지점으로 푸시합니다 origin/foo.
Dorian

@Dorian에게 감사합니다 current. 기본적으로 더 의미가 있음에 동의합니다 .
Zoltán

@Dorian, @ Zoltán- simple기본적으로 더 의미가 있다고 생각 합니다. 나는 '무엇을 사용할 때'로 답변을 업데이트했습니다. pls는 봐.
Karthik Bose

1
참고 : git 버전 2부터 기본값이로 변경되었습니다 simple.
Danijel


-2

로컬 브랜치 foo, 원점이라고 불리는 원격 브랜치 원점 / 마스터가 있다고 가정 해 봅시다.

foo의 내용을 origin / master로 푸시하려면 먼저 업스트림을 설정해야합니다.

git checkout foo
git branch -u origin/master

그런 다음 다음을 사용하여이 분기로 푸시 할 수 있습니다.

git push origin HEAD:master

마지막 명령에서 --force를 추가하여 전체 원산지 / 마스터 이력을 foo의 이력으로 바꿀 수 있습니다.

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