etc./StackOverFlow

기존 Git 분기가 원격 분기를 추적하도록 하시겠습니까?

청렴결백한 만능 재주꾼 2021. 10. 7. 22:04
반응형

질문자 :Pat Notz


원격 분기를 추적하는 새 분기를 만드는 방법을 알고 있지만 기존 분기가 원격 분기를 추적하도록 하려면 어떻게 해야 합니까?

.git/config 파일을 편집할 수 있다는 것을 알고 있지만 더 쉬운 방법이 있어야 합니다.



foo 브랜치와 원격 upstream 주어지면 :

Git 1.8.0부터:

 git branch -u upstream/foo

또는 로컬 브랜치 foo 가 현재 브랜치가 아닌 경우:

 git branch -u upstream/foo foo

또는 더 긴 명령을 입력하려는 경우 위의 두 가지 명령과 동일합니다.

 git branch --set-upstream-to=upstream/foo git branch --set-upstream-to=upstream/foo foo

Git 1.7.0(1.8.0 이전)부터:

 git branch --set-upstream foo upstream/foo

노트:

  • 위의 명령은 모두 현지 지사의 원인이됩니다 foo 원격 지사 추적 foo 원격에서 upstream .
  • 이전(1.7.x) 구문은 더 이상 사용되지 않으며 새(1.8+) 구문이 사용됩니다. 새로운 구문은 더 직관적이고 기억하기 쉽게 만들어졌습니다.
  • 아직 가져오지 않은 새로 생성된 원격에 대해 실행하면 업스트림 분기 정의가 실패합니다. 이 경우 미리 git fetch upstream

참조: 왜 항상 `--set-upstream`을 수행해야 합니까?


Dan Moulding

다음을 수행할 수 있습니다(마스터에서 체크아웃되었고 원격 분기 마스터로 푸시하려는 경우).

'원격'이 없으면 설정하십시오.

 git remote add origin ssh://...

이제 마스터가 다음을 추적하도록 구성합니다.

 git config branch.master.remote origin git config branch.master.merge refs/heads/master

그리고 푸시:

 git push origin master

Paul Hedderly

-u 옵션을 사용하여 푸시하는 부작용으로 이것을 수행합니다.

 $ git push -u origin branch-name

이에 상응하는 long 옵션은 --set-upstream 입니다.

git-branch 명령은 --set-upstream 도 이해하지만 사용법이 혼동될 수 있습니다. 버전 1.8.0 은 인터페이스를 수정합니다.

git branch --set-upstream 은 더 이상 사용되지 않으며 비교적 먼 미래에 제거될 수 있습니다. git branch [-u|--set-upstream-to] 가 더 정확한 인수 순서로 도입되었습니다.

git branch --set-upstream origin/master 라고 말하고 싶지만, 이는 Git에게 로컬 브랜치 "origin/master"를 정렬하여 현재 체크아웃된 브랜치와 통합하도록 지시하는데, 이는 사용자가 의미한 것 같지 않습니다. 이 옵션은 더 이상 사용되지 않습니다. 대신 새로운 --set-upstream-to (짧고 달콤한 -u ) 옵션을 사용하십시오.

foo 브랜치가 있고 업스트림과 동일한 이름으로 브랜치를 처리하기를 원한다고 가정해 보겠습니다. 다음과 같이 하십시오.

 $ git branch foo $ git branch --set-upstream-to=origin/foo

아니면 그냥

 $ git branch --set-upstream-to=origin/foo foo

Greg Bacon

Git 버전 1.8.0 이상:

실제로 수락 된 답변이 작동하려면 다음을 수행하십시오.

 git remote add upstream <remote-url> git fetch upstream git branch -f --track qa upstream/qa # OR Git version 1.8.0 and higher: git branch --set-upstream-to=upstream/qa # Gitversions lower than 1.8.0 git branch --set-upstream qa upstream/qa

Hedgehog

git_remote_branch 도구가 유용할 수 있습니다. 원격 분기 생성, 게시, 삭제, 추적 및 이름 바꾸기를 위한 간단한 명령을 제공합니다. 한 가지 좋은 기능은 grb 명령에 실행할 git 명령을 설명하도록 요청할 수 있다는 것입니다.

 grb explain create my_branch github # git_remote_branch version 0.3.0 # List of operations to do to create a new remote branch and track it locally: git push github master:refs/heads/my_branch git fetch github git branch --track my_branch github/my_branch git checkout my_branch

James Mead

나는 Git 1.5.x에서 이와 같이 로컬 브랜치 $BRANCH 가 원격 브랜치 origin/$BRANCH 추적하도록 만들 수 있다고 믿습니다.

$BRANCHorigin/$BRANCH 가 존재하고 현재 $BRANCH 체크아웃하지 않은 경우(있는 경우 전환) 다음을 수행합니다.

 git branch -f --track $BRANCH origin/$BRANCH

$BRANCH 가 추적 분기로 다시 생성됩니다. -f $BRANCH 이미 존재함에도 불구하고 강제로 생성합니다. --track 은 일반적인 기본값이 있는 경우 선택 사항입니다(즉, git-config 매개 변수 branch.autosetupmerge 가 true인 경우).

origin/$BRANCH 가 아직 존재하지 않는 경우 다음을 사용하여 로컬 $BRANCH 를 원격 저장소로 푸시하여 생성할 수 있습니다.

 git push origin $BRANCH

로컬 분기를 추적 분기로 승격하는 이전 명령이 뒤따릅니다.


wu-lee

1- 다음을 사용하여 로컬 메타 데이터 업데이트: git fetch --all

여기에 이미지 설명 입력

2- 다음을 사용하여 원격 및 로컬 분기를 표시합니다. git branch -a , 다음 스크린샷 참조

여기에 이미지 설명 입력

3- 원격과 연결하려는 대상 분기로 전환: 사용

자식 체크 아웃 브랜치 이름

예시 :

여기에 이미지 설명 입력

4- 다음을 사용하여 로컬 지점을 원격 지점에 연결합니다.

자식 분기 --set-upstream-to nameOfRemoteBranch

NB : nameOfRemoteBranch : 2단계의 출력에서 복사하기 위해 "git branch -r"

사용 예:

여기에 이미지 설명 입력


Monsif EL AISSOUSSI

다음을 실행하는지 확인하십시오.

 git config push.default tracking

문제 없이 밀어붙일 수 있도록


romanlv

.git/config 편집하는 것이 아마도 가장 쉽고 빠른 방법일 것입니다. 어쨌든 원격 분기를 처리하기 위한 Git 명령이 수행하는 작업입니다.

파일을 손으로 처리하고 싶지 않다면(그리고 그렇게 어렵지는 않음) 항상 git config 를 사용하여 이를 수행할 수 있습니다. 하지만 다시 말하지만, 이는 .git/config 파일을 편집하는 것뿐입니다. 그래도.

git checkout 사용할 때 원격 분기를 자동으로 추적하는 방법( --track 플래그 전달)이 있지만 이러한 명령은 기존 분기가 아닌 새 분기에서 작동합니다.


mipadi

아주 짧게

 git branch --set-upstream yourLocalBranchName origin/develop

이렇게 하면 yourLocalBranchName develop 이라는 원격 분기를 추적하게 됩니다.


MadNik

1.6.x의 경우 git_remote_branch 도구를 사용하여 수행할 수 있습니다.

 grb track foo upstream

foo track upstream/foo 를 만들 수 있습니다.


wik

다음 명령을 사용합니다(로컬 브랜치 이름이 "branch-name-local"이고 원격 브랜치 이름이 "branch-name-remote"라고 가정).

 $ git branch --set-upstream-to=origin/branch-name-remote branch-name-local

로컬 브랜치와 원격 브랜치 모두 이름이 같은 경우 다음을 수행합니다.

 $ git branch --set-upstream-to=origin/branch-name branch-name

yrazlik

새 분기를 생성하기 위해 다음 명령을 사용할 수 있습니다.

 git checkout --track -b 예제 출처/예제
이미 생성 된 분기가 원격 사이에 링크를 생성하려면 해당 분기에서 아래 명령을 사용하십시오.

 git 분기 -u 원산지/원격 분기 이름


jithu reddy

githubgit version 2.1.4 사용하여 다음을 수행하십시오.

 $ git clone git@github.com:user/repo.git

그리고 원격은 로컬로 연결되지 않은 경우에도 itelsef로 제공됩니다.

 $ git remote show origin * remote origin Fetch URL: git@github.com:user/repo.git Push URL: git@github.com:user/repo.git HEAD branch: master Remote branches: develop tracked <<<<<<<<<<<<<<<<<<<<<<<<<<<<<< master tracked Local branch configured for 'git pull': master merges with remote master Local ref configured for 'git push': master pushes to master (up to date)

그러나 물론 여전히 로컬 지점은 없습니다.

 $ git branch * master <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

보다? 이제 개발자가 체크아웃하기만 하면 자동으로 마술이 실행됩니다.

 $ git checkout develop Branch develop set up to track remote branch develop from origin. Switched to a new branch 'develop'

너무 쉽게!


요약. 이 두 가지 명령을 실행하십시오.

 $ git clone git@github.com:user/repo.git $ git checkout develop

DrBeco

'--track' 옵션 사용

  • git pull 후 :

    git checkout --track <remote-branch-name>

  • 또는:

    git fetch && git checkout <branch-name>


Loukan ElKadi

이것은 이 질문에 대한 직접적인 대답은 아니지만 업스트림 분기를 구성하려고 할 때 나와 같은 문제를 겪을 수 있는 누군가를 위해 여기에 메모를 남기고 싶었습니다.

push.default 에 주의하십시오.

이전 git 버전의 경우 기본값은 matching 이었습니다. 예를 들어 다음과 같은 경우 매우 바람직하지 않은 동작이 발생합니다.

오리진/마스터에 대한 로컬 분기 "마스터" 추적

업스트림/마스터에 대한 원격 분기 "업스트림" 추적

"upstream" 브랜치에 있을 때 "git push"를 시도하면 push.default 일치 git이 자동으로 로컬 브랜치 "master"를 "upstream/master"로 병합하려고 시도하여 많은 혼란을 야기합니다.

이것은 더 정상적인 행동을 제공합니다.

git config --global push.default 업스트림


Tom Mettam

git 버전 2.25.1 의 경우 다음 명령을 사용합니다.

 git push --set-upstream origin <local_branch_name>

tonderaimuchada

다소 관련이 있는 방식으로 기존 분기에 원격 추적 분기를 추가하려고 했지만 원격 추적 분기를 추가하려는 시스템의 해당 원격 저장소에 액세스할 수 없었습니다. 스니커넷을 통해 해당 리모컨에 푸시할 수 있는 액세스 권한이 있는 다른 시스템으로 리포지토리). 아직 가져오지 않은 로컬에 원격 브랜치를 강제로 추가할 방법이 없다는 것을 발견했습니다(그래서 로컬은 브랜치가 원격에 존재한다는 것을 알지 못했고 오류가 발생했습니다: the requested upstream branch 'origin/remotebranchname' does not exist ) 존재하지 않습니다.

.git/refs/remotes/origin/remotebranchname 새 헤드 파일을 추가한 다음 ref를 복사하여 이전에 알려지지 않은 새로운 원격 분기를 추가할 수 있었습니다. -) 원본 리포지토리에 액세스할 수 있는 시스템에서 워크스테이션으로(원격 분기를 추가한 로컬 리포지토리 포함).

완료되면 git branch --set-upstream-to=origin/remotebranchname


Ville

또는 단순히 :

아직 분기하지 않은 경우 분기로 전환하십시오.

 [za]$ git checkout branch_name

운영

 [za]$ git branch --set-upstream origin branch_name Branch origin set up to track local branch brnach_name by rebasing.

다음을 수행할 준비가 되었습니다.

 [za]$ git push origin branch_name

구성 파일을 살펴보고 다음을 실행하여 무엇을 추적하는지 확인할 수 있습니다.

 [za]$ git config -e

이것은 또한 어떤 브랜치가 추적되고 어떤 브랜치가 추적되지 않는지 보여줍니다. :

 [za]$ git remote show origin

z atef

나처럼 로컬 브랜치 이름을 원격 브랜치 이름과 동기화하려는 사람을 위해 다음과 같은 편리한 명령이 있습니다.

 git branch -u origin/$(git rev-parse --abbrev-ref HEAD)

Constantinos

메시지를 받을 때마다 해야 할 일을 기억하지 않으 려면:

병합하려는 지점을 지정하십시오. git-pull(1) 참조
자세한 내용은.
.....

원점을 현재 지점의 업스트림으로 설정하는 다음 스크립트를 사용할 수 있습니다.

제 경우에는 origin 이외의 다른 것을 기본 upstream 으로 설정한 적이 거의 없습니다 . 또한 로컬 및 원격 분기에 대해 거의 항상 동일한 분기 이름을 유지합니다. 그래서 다음이 나에게 적합합니다.

 #!/bin/bash # scriptname: git-branch-set-originupstream current_branch="$(git branch | grep -oP '(?<=^\* )(.*)$')" upstream="origin/$current_branch" git branch -u "$upstream"

Marinos An

이것도 효과가 있을 것입니다

 git branch --set-upstream-to=/< remote>/< branch> < localbranch>

Abhi

출처 : http:www.stackoverflow.com/questions/520650/make-an-existing-git-branch-track-a-remote-branch

반응형