programing

다른 분기 없이 하나의 Git 분기만 푸시하는 방법은 무엇입니까?

starjava 2023. 5. 17. 22:17
반응형

다른 분기 없이 하나의 Git 분기만 푸시하는 방법은 무엇입니까?

나는 로컬 깃 저장소에서 일하고 있습니다.두 개의 가지가 있습니다.master그리고.feature_x.

밀고 싶어요feature_x원격 레포로, 그러나 나는 변경 사항을 푸시하고 싶지 않습니다.master분점.

윌라git push origin feature_x내게서feature_x지점(feature_x원격) 작업에 분기가 이미 있습니까?

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

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

git checkout feature_x
git push origin feature_x

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

git config push.default upstream

이는 git 푸시를 수행할 때 git가 현재(체크아웃된) 분기만 업데이트한다는 의미입니다.

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

  • nothingrefspec이 명시적으로 지정되지 않은 경우 아무 것도 밀어내지 마십시오(오류).이것은 주로 항상 명확하게 함으로써 실수를 피하고 싶은 사람들을 위한 것입니다.
  • matching양쪽 끝에 동일한 이름을 가진 모든 분기를 밀어넣습니다.(Ver 1.7.11 이전의 기본 옵션)
  • upstream현재 분기를 업스트림 분기로 푸시합니다.이 모드는 일반적으로 풀링하는 것과 동일한 리포지토리(, 중앙 워크플로우)로 푸시하는 경우에만 사용할 수 있습니다.로컬 분기와 원격 분기의 이름이 같을 필요는 없습니다.
  • tracking사용되지 않음, 사용upstream대신.
  • current현재 분기를 수신측의 동일한 이름의 원격 분기로 푸시합니다.중앙 워크플로우와 비중앙 워크플로우 모두에서 작동합니다.
  • simple[Ver 1.7.11 이후 사용 가능] 중앙 집중화된 워크플로우에서 다음과 같은 작업upstream업스트림 브랜치의 이름이 로컬 브랜치와 다를 경우 푸시를 거부할 수 있는 안전성이 추가되었습니다.일반적으로 끌어내는 리모컨과 다른 리모컨으로 밀 때는 다음과 같이 작업합니다.current이것은 가장 안전한 옵션이며 초보자에게 적합합니다.이 모드는 Git 2.0에서 기본 모드가 되었습니다.

Karthik Bose의 답변 위에 있는 사소한 업데이트 - 모든 작업 공간에 영향을 미치도록 git을 전체적으로 구성할 수 있습니다.

git config --global push.default upstream

더 나은 대답은 다음과 같습니다.

git config push.default current

upstream작동합니다. 단, 분기가 없는 경우는 예외입니다.origin그러면 업스트림 분기를 설정해야 합니다.로 변경current자동으로 업스트림 분기를 설정하고 즉시 분기를 푸시합니다.

구성에 상관없이 현재 분기를 푸시하려면 다음을 수행합니다.

git push origin $(git branch --show-current)

예를 들어 로컬 분기 foo, origin이라는 원격 분기 foo 및 원격 분기 origin/master가 있다고 가정해 보겠습니다.

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

git checkout foo
git branch -u origin/master

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

git push origin HEAD:master

마지막 명령에서 --force를 추가하여 전체 오리진/마스터 기록을 foo 기록으로 바꿀 수 있습니다.

언급URL : https://stackoverflow.com/questions/820178/how-do-you-push-just-a-single-git-branch-and-no-other-branches

반응형