programing

기존 Git 분기 추적을 원격 분기로 설정하시겠습니까?

abcjava 2023. 5. 11. 21:02
반응형

기존 Git 분기 추적을 원격 분기로 설정하시겠습니까?

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

나는 내가 그냥 편집할 수 있다는 것을 압니다..git/config파일, 하지만 더 쉬운 방법이 있을 것 같습니다.

가 주어지면 기지정분정▁givenfoo 모콘리.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사전에

참고 항목:왜 항상 '셋업스트림'을 해야 합니까?

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

'원격'이 아직 없는 경우 설정

git remote add origin ssh://...

이제 추적할 마스터를 구성합니다.

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

푸시:

git push origin master

저는 이것을 밀고 나가는 부작용으로 합니다.-u에 있어서의 옵션

$ git push -u origin branch-name

한 긴 은 동등긴옵은다같습다니과음션한다입니다."입니다.--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에게 로컬 분기 "오리진/마스터"를 현재 체크아웃된 분기와 통합하도록 배치하도록 지시합니다. 이는 사용자가 의미한 바일 가능성이 매우 낮습니다.이 옵션은 더 이상 사용되지 않습니다. 새 옵션을 사용하십시오.--set-upstream-to (짧고달느한로으낌콤짧)▁a로느▁()와 함께)-u대신 옵션을 선택합니다.

현지인이 있다고 가정합니다.foo분기가 체크아웃되었으며 업스트림과 동일한 이름의 분기를 사용하도록 합니다.로 이것을 시킵니다.

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

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

도구가 유용할 수 있습니다.원격 분기를 만들고, 게시하고, 삭제하고, 추적하고, 이름을 바꾸기 위한 간단한 명령을 제공합니다.한 가지 좋은 특징은 당신이 질문할 수 있다는 것입니다.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

1 - git fetch --all을 사용하여 로컬 메타데이터를 업데이트합니다.

여기에 이미지 설명 입력

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

여기에 이미지 설명 입력

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

git checkout 지점Name

예:

여기에 이미지 설명 입력

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

git 브랜치 --stream 설정Remote 브랜치의 이름으로

N.B : 원격 지사 이름 : 2단계 "git branch -r"의 출력에서 복사합니다.

사용 예:

여기에 이미지 설명 입력

1 지점을 수 것으로 합니다.$BRANCH 지점 원격을추니다합적점지.origin/$BRANCH 것처럼이럼.

점을 하면,$BRANCH그리고.origin/$BRANCH.$BRANCH 경우 ), 있는 경우 switch away), do:(으)로 지정합니다.

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

은 다시생다니됩성을 다시 만듭니다.$BRANCH추적 지점으로서.-f에도 불구하고 창조를 강요합니다.$BRANCH이미 존재하는 --track, 매개 변수 "git-config " " " " (", "git-config " " " ") " " 가 사항입니다.branch.autosetupmerge사실임).

고참, 약만이면origin/$BRANCH. 아직존않습다를 수 있습니다. 로컬을 눌러 생성할 수 있습니다.$BRANCH다음을 사용하여 원격 저장소로 이동:

git push origin $BRANCH

이전 명령 다음에 로컬 분기를 추적 분기로 승격합니다.

실행해야 합니다.

git config push.default tracking

문제를 해결할 수 있는

».git/config아마도 가장 쉽고 빠른 방법일 것입니다.원격 지점을 처리하기 위한 Git 명령이 그렇게 하고 있습니다.

파일을 손으로 조작하고 싶지 않은 경우(그렇게 어렵지 않은 경우) 언제든지 사용할 수 있습니다.git config하기 위해서는...하지만 다시 말하지만, 그것은 단지 편집할 것입니다..git/config어쨌든, 파일.

물론사할용때원지점자동추로있방다습니법적도는하으을격▁using▁when다▁branch▁there▁aally▁remote▁track▁to▁automatic있을 사용할 때 원격 지점을 자동으로 추적하는 방법도 있습니다.git checkout으)로 )--trackflag(예: flag)를 사용하지만 이러한 명령은 기존 분기가 아닌 새 분기에서 작동합니다.

간단히 말해서

git branch --set-upstream yourLocalBranchName origin/develop

이것은 당신의 것이 될 것입니다.yourLocalBranchName 원격 합니다.develop.

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

grb track foo upstream

그것은 Git가 만드는 것을 야기할 것입니다.foo추적하다upstream/foo.

다음 명령을 사용합니다(로컬 지점 이름이 "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

서기를 사용하여, 용사github그리고.git version 2.1.4그냥 하기:

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

원격은 로컬로 연결되지 않더라도 자체적으로 제공됩니다.

$ 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

분기를 는 다음 할 수 .

git checkout --track -b 예제 출발지/도착지
For the already created branch to create link between remote then from that branch use below command

git branch -u origin/remote-branch-name

'--track' 옵션 사용

  • 에.git pull:

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

  • 또는:

    git fetch && git checkout <branch-name>

이 질문에 대한 직접적인 답변은 아니지만, 업스트림 분기를 구성할 때 저와 같은 문제가 발생할 수 있는 사용자를 위해 여기에 메모를 남기고 싶습니다.

push.default를 주의하십시오.

이전 Git 버전에서는 기본값이 일치하므로 다음과 같은 경우 매우 바람직하지 않은 동작이 발생합니다.

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

업스트림/마스터에 대한 원격 지사 "업스트림" 추적

"upstream" 브랜치에서 push.default matching git를 사용하여 "git push"를 시도하면 로컬 브랜치 "master"를 "upstream/master"로 자동 병합하여 많은 혼란이 발생합니다.

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

git config --global push.default upstream

버전 Forgit »2.25.1다음 명령을 사용합니다.

git push --set-upstream origin <local_branch_name>

실행 후 "error: 요청된 업스트림 분기 'origin/foo'가 존재하지 않습니다"가 발생한 경우:

git branch -u origin/foo

  1. ㅠㅠorigin에는 가있다가 .foo분점.

  2. 다음을 확인합니다.remote.origin.fetch 은 " 가수다설정됨로으" 로 .+refs/heads/*:refs/remotes/origin/*:

$ git config remote.origin.fetch '+refs/heads/*:refs/remotes/origin/*'
$ git config --get remote.origin.fetch
+refs/heads/*:refs/remotes/origin/*
  1. 려달을 합니다.git fetch -v다음에서 git 업데이트를 확인해야 합니다.origin/foo:
$ git fetch -v
From github.com:davidhcefx/test
 * [new branch]      foo             -> origin/foo
 = [up to date]      master          -> origin/master
  1. 성하면공,면,,git branch -avv에는 추적된 원격 분기를 나타내는 대괄호가 표시됩니다.
$ git branch -u origin/foo
branch 'foo' set up to track 'origin/foo'.
$ git branch -avv
* foo                            92c5ada [origin/foo] Initial commit
  master                         92c5ada [origin/master] Initial commit

원격 추적 분기를 기존 분기에 추가하려고 했지만 원격 추적 분기를 추가하려는 시스템의 원격 저장소에 액세스할 수 없었습니다(이 저장소의 복사본을 해당 원격에 푸시할 수 있는 액세스 권한이 있는 다른 시스템으로 자주 squellernet을 통해 내보내기 때문입니다).아직할 수 있는 로컬은 에 분기가 오류가수 있습니다: " 아직가따않로원분추수강은있없방격다니습법이발오것존분몰다때생합니다가음류을에는랐기문다한재가원기에격라서로은는컬할가제기로를지컬에져오따▁i:▁error▁thatso▁the▁on▁get▁to▁a▁i발오다몰▁there것▁local때▁did생▁branch▁the합니음▁that▁adding▁local가다▁found▁existed류▁would에▁hadn문기the requested upstream branch 'origin/remotebranchname' does not exist).

는 결국다위에새헤파추이알가전여다않에니있수습추었가에서 새로운 헤드 을 추가하여 이전에 알려지지 않았던 분기를 않고) 추가할 수 있었습니다..git/refs/remotes/origin/remotebranchname그런 다음 ref를 복사합니다(원격 브랜치를 추가하는 로컬 레포와 함께 오리진 레포에 액세스할 수 있는 시스템에서 워크스테이션까지 ;-).

그렇게 되면, 는 일단그되면, 그다음에게를 사용할 수 .git branch --set-upstream-to=origin/remotebranchname

또는 단순히 다음과 같은 방법으로:

분기에 아직 참여하지 않은 경우 분기로 전환합니다.

[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 

나처럼 로컬 지점 이름을 원격 지점 이름과 동기화하려는 사용자를 위해 다음과 같은 유용한 명령이 있습니다.

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

메시지를 받을 때마다 수행해야 할 작업을 기억하지 않으려면 다음을 수행합니다.

병합할 분기를 지정하십시오. git-pull(1) 참조
상세한 것은
.....

현재 분기에 대해 오리진을 업스트림으로 설정하는 다음 스크립트를 사용할 수 있습니다.

저의 경우에는 오리진이 아닌 다른 항목기본 업스트림으로 설정하지 않습니다.또한 로컬 및 원격 지점에 대해 거의 항상 동일한 지점 이름을 유지합니다.그래서 저는 다음과 같습니다.

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

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

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

언급URL : https://stackoverflow.com/questions/520650/make-an-existing-git-branch-track-a-remote-branch

반응형