로컬 Git 브랜치를 다른 이름의 원격으로 쉽게 푸시할 수 있는 방법은 무엇입니까?
항상 두 개의 이름을 지정하지 않고 다른 이름의 원격 지점으로 로컬 지점을 쉽게 밀고 당길 수 있는 방법이 있는지 궁금합니다.
예:
$ git clone myrepo.git
$ git checkout -b newb
$ ...
$ git commit -m "Some change"
$ git push origin newb:remote_branch_name
이제 누군가 remote_branch_name을 업데이트하면 다음을 수행할 수 있습니다.
$ git pull
그리고 모든 것이 통합되고 빠르게 전달됩니다.그러나 로컬 "newb"를 변경하면 다음 작업을 수행할 수 없습니다.
$ git push
대신, 저는 다음을 수행해야 합니다.
% git push origin newb:remote_branch_name
좀 바보같네요.한다면git-pull
사용하다git-config branch.newb.merge
어디서 철수해야 할지 결정하기 위해, 왜 할 수 없었습니까?git-push
유사한 구성 옵션이 있습니까?이것을 위한 좋은 지름길이 있습니까 아니면 그냥 먼 길을 계속 가야 합니까?
git push -u origin my_branch:remote_branch
다음 푸시는 원하는 곳으로 이동합니다.
편집:
댓글에 따르면, 그것은 당김을 설정할 뿐입니다.
git branch --set-upstream
해야 합니다.
론이죠로 . 그냥 설정하세요.push.default
upstream
가지를 상류로 밀다(그것은 같습니다)pull
위치, 풀위치로 branch.newb.merge
이름이 일치하는 지점(기본 설정)으로 분기를 밀어넣는 대신push.default
,matching
).
git config push.default upstream
참고로 이것은 이전에 호출되었습니다.tracking
것은 아니다.upstream
1 Git 1.7.4.2를 하십시오.tracking
대신.그push.default
Git 1.6.4에 옵션이 추가되었으므로 이전 버전에서는 이 옵션이 전혀 없으며 푸시할 분기를 명시적으로 지정해야 합니다.
Adam의 명령은 이제 더 이상 사용되지 않습니다.사용할 수 있는 항목:
git branch --set-upstream-to origin/my_remote_branch my_local_branch
의상지을정의 상류 my_local_branch
origin/my_remote_branch
.
로컬 Git 브랜치를 다른 이름의 원격으로 쉽게 푸시할 수 있는 방법은 무엇입니까?
요약:.
다음은 일반적으로 필요한 주요 명령에 대한 간략한 요약입니다.
# push from your local `branch2` to a remote `branch1` (push to a branch with
# a different name) on the remote named `origin`
git push -u origin branch2:branch1
# pull from a remote branch `branch1` into your currently-checked-out branch
# (which could have a different name--ex: `branch2`)
git pull origin branch1
# Set your upstream to something new in case you want to change it; ex: set your
# currently-checked-out branch (perhaps `branch2`) to track `branch1` on the
# remote named `origin`
git branch -u origin/branch1
# Unset your upstream
git branch --unset-upstream
# See what your upstream is currently set to
git branch -vv
세부사항:
다음 섹션은 다음 순서로 설명되어 있습니다.
- 다른 분기로 푸시 중
- 다른 분기에서 풀링 중
- 추적할 업스트림 분기 설정 및 설정 해제
여기에는 불완전하고 부분적인 답변이 너무 많아서 저에게 많은 질문과 부족한 점이 있습니다.그래서, 많은 노력과 연구와 실험 끝에, 완벽한 해결책을 제공하기 위한 저의 시도가 있습니다.
로컬 분기에서 다른 이름의 원격 분기로 푸시
로컬에서 원격으로 푸시하려면 다음과 같이 두 분기를 지정해야 합니다.
# Push from local `branch2` to remote `branch1`
git push origin branch2:branch1
# General form: push from local `from_branch` to remote `to_branch`.
# - Watch out!: see also the additional explanations and NB note below!
git push <remote> <from_branch>[:to_branch]
그러나 위의 일반적인 형태로 쓴 각괄호는 다음을 나타냅니다.:to_branch
부품은 선택 사항입니다.내가 의미하는 바는 한 이름의 로컬 분기에서 다른 이름의 원격 분기로 푸시하는 경우 해당 부분은 선택 사항이 아니지만, 일반적인 git 명령어로서 다음을 포함하지 않으면 명령이 실행됩니다.:to_branch
부품, 즉 그런 의미에서 선택 사항입니다.하지만, 그것은 예상치 못한 결과를 낳을 수도 있습니다!명령어를 예를 들어 다음과 같습니다.
# (push to a remote branch with the **same name** as the local branch)
# Reduced **and confusing** form: this pushes from local `branch2` (even if you
# don't currently have it checked-out!) to remote `branch2`.
git checkout branch3
git push origin branch2 # Push from local branch2 to remote branch2
로컬이 있을 수 있습니다.branch3
현재 체크아웃했고, 그리고 생각해보세요.git push origin branch2
로컬을 푸시합니다.branch3
떨어진 먼곳로까지branch2
이 왕이면을 가지고 있기 branch3
현재 시스템에서 체크아웃되었지만 이는 발생하지 않습니다!오히려.git push origin branch2
로컬을 푸시합니다.branch2
원으로로branch2
현재 체크아웃하지 않은 경우에도 마찬가지입니다! git push origin branch2
따라서 이와 동등한 단초가 됩니다.
# These 2 commands are **exactly identical**! The 1st cmd is the short form
# of the 2nd.
git push origin branch2 # Push from local branch2 to remote branch2
git push origin branch2:branch2 # Push from local branch2 to remote branch2
위에 있는 cmd의 짧은 형식은 현재 체크아웃된 분기에서 대신 푸시될 것이라고 생각하면 매우 혼란스러운 동작을 생성합니다.다음은 위에서 설명한 동작을 요약한 Notebene 노트입니다.
로 NB: 적인형태로일반형로.git push <remote> <from_branch>[:to_branch]
를 "TO"로 :to_branch
지점인 FROM과 됩니다.from_branch
, 서에.remote
이것은 입력만 하는 경우를 의미합니다.git push origin branch2
에 git push origin some_other_branch:branch2
의 지역 .branch2
의 원격 branch2
당신이 하지 않았더라도.branch2
명령 실행 시 로컬 체크아웃!만약 당신이 타자를 친다고 생각했다면 이것은 매우 혼란스러울 수 있습니다.git push origin branch2
현재 체크아웃된 지점에 방금 말씀드렸었는데,some_other_branch
밀다branch2
원로으로서컬대에신격서▁on로▁the▁the에,컬▁local.branch2
먼 곳으로 떠밀려갔습니다.branch2
.
양식에 (일반양식설서명대한에(서ation▁for▁the설▁(▁document명)git push <remote> <from_branch>[:to_branch]
는 )에서 수 있습니다.man git push
의 맨 에 있는 "<refspec>...
섹션:
의
<refspec>
매변는선더하니입다기적택수개▁an입니다.+
객체인 소스개다표시다니됩에음이 나옵니다.<src>
다음에 콜론 콜다음에가 .:
목적지 참조 다음에 표시됩니다.<dst>
.
그리고 나중에:
:<dst>
부품을 생략할 수 있습니다. 이러한 푸시는 참조를 업데이트합니다.<src>
일반적으로 업데이트하지 않고 업데이트합니다.<refspec>
명령행에서.
그러나 위의 예시와 설명이 없다면 이 문서는 직관적이지 않고 이해하기 매우 어렵습니다.
[BETTER FORM OF] 다음을 누르는 동시에 업스트림 분기를 설정할 수도 있습니다.
# Push from local `branch2` to the remote `branch1`, while also at the same time
# setting `branch2` to track `origin/branch1` as the upstream
git push -u origin branch2:branch1
# OR (same thing)
git push --set-upstream origin branch2:branch1
# General form
git push -u <remote> <from_branch>[:to_branch]
위 명령 출력의 일부로 다음이 표시됩니다.
Branch 'branch2' set up to track remote branch 'branch1' from 'origin'.
여기서 무슨 일이 일어나고 있는지를 명확히 하기 위해 바로 위의 두 명령 중 하나가 다음 두 개의 개별 명령과 동일하다는 것을 알아야 합니다.
git push origin branch2:branch1
git branch -u origin/branch1
이제 지점의 업스트림 분기가 현재 설정된 값을 보려면 이중 상세 내역(-vv
)git branch
vmd:
git branch -vv
샘플 출력:
이 여서업림분기가임을 알 수 .origin/master
은 그말은을 합니다.master
이 " " "인 입니다.origin
:
* master b2f0466 [origin/master] c/array_filter_and_remove_element.c: add O(n) in-place solution
주의:
-vv
위는 "이중 장황함"을 의미합니다.이것은 인쇄된다는 것을 의미합니다.git branch
장황하게 말할 뿐만 아니라 이중 장황하게, 또는 장황하게.된 " 내용대괄호로 합니다.[origin/matser]
.- 로 모든 원격을 볼 수 .
git remote -v
.origin
는 위의 예에 표시된 리모컨입니다.
이름이 다른 원격 분기에서 로컬 분기로 풀링
[로컬로 이미 지점 체크아웃한 경우 권장!], TO라는 원격에서 FROM을 풀하려면 다음과 같이 풀할 원격 분기를 지정해야 합니다.
# THIS ASSUMES YOU ARE ALREADY CHECKED-OUT ON BRANCH `branch2`!
git pull origin branch1
# General form
git pull <remote> [from_branch]
두 분기를 모두 지정할 수도 있지만 이 경우에 어떤 차이가 있는지는 잘 모르겠습니다.
git pull origin branch1:branch2
# The general form seems to be:
git pull <remote> <from_branch>[:to_branch]
다음 명령은 원격 및 로컬 분기의 이름이 동일한 경우에만 작동합니다!(따라서 스택 오버플로 질문에는 대답하지 않습니다.)분기가 아직 없는 경우 이 명령을 사용하는 것이 좋습니다.some_branch
체크아웃!
# Pull FROM a remote branch named `some_branch` TO a local branch named
# `some_branch`, while you do NOT have `some_branch` locally checked-out.
git fetch origin some_branch:some_branch
# General form
git fetch <remote> <from_branch>:<to_branch>
# The above is a special form of `git fetch`, and (I believe) requires that
# `from_branch` and `to_branch` are **the same branch name**. It is roughly
# equivalent to the following *several* commands:
git checkout any_other_branch
# this `git fetch` cmd updates the **locally-stored**, hidden, remote-tracking
# branch named `origin/some_branch` with the latest changes from the branch
# by this name stored on the remote server named `origin`
git fetch origin some_branch
git checkout some_branch
git merge origin/some_branch # merge `origin/some_branch` into `some_branch`
git checkout any_other_branch # go back to the branch we started on
주의:
- 와는과 다르게 .
git push
,git pull
"는 " "이 아닙니다.")이 없습니다.-u
선택. - 다른 답변도 참조하십시오.GitHub에서 PR의 소유자를 변경하는 방법 / 열린 GitHub PR을 징발하는 방법
- 그
git fetch origin some_branch:some_branch
한 명은동게수다니로 됩니다.some_branch
두 번 사용된 이름입니다. 명령의 두 위치에 모두 있습니다.다른 점은 단순히git fetch origin some_branch
로컬로 검색된 숨겨진 원격 검색 분기만 업데이트합니다.origin/some_branch
이름이 지정된 원격 서버에 저장된 이 이름으로 분기의 최신 변경 사항 포함origin
에, 면에반에.git fetch origin some_branch:some_branch
된 표시 가능한 합니까?some_branch
그 변화들과 함께.- 만약 여러분이 이것에 대해 혼란을 느낀다면, 여러분은 여러분이 가지고 있다고 생각하는 모든 1에 대해, 여러분은 실제로 3개의 지점을 가지고 있다는 것을 배울 필요가 있습니다: 1) 지역 지점.
some_branch
2) 지서some_branch
라는 이름의origin
및 3) 로컬로 할당된 숨겨진 원격 할당 분기(이름 지정)origin/some_branch
자세한 내용은 여기를 참조하십시오. 그리고 분기당 3개 분기라는 개념을 처음 알게 된 곳은 다음과 같습니다.Git 브랜치를 로컬 및 원격으로 삭제하려면 어떻게 해야 합니까?이 답변 아래에 있는 제 의견도 참조하십시오.
- 만약 여러분이 이것에 대해 혼란을 느낀다면, 여러분은 여러분이 가지고 있다고 생각하는 모든 1에 대해, 여러분은 실제로 3개의 지점을 가지고 있다는 것을 배울 필요가 있습니다: 1) 지역 지점.
원격 분기를 추적하거나 추적 해제하도록 로컬 분기 구성
로컬 분기를 다음과 같이 설정할 수 있습니다.branch2
라는 이름의 상류 지점을 추적합니다.branch1
를 사용하여 밀어내는 것과 동시에git push -u
위에 표시된 cmd.
다음과 같은 이름의 업스트림 분기를 추적하도록 로컬 분기를 설정할 수도 있습니다.
# Set branch2 to track origin/branch1 (`branch1` on remote `origin`)
git branch --set-upstream-to=origin/branch1 branch2
# OR (same thing as just above)
git branch -u origin/branch1 branch2
# General form
git branch -u <remote>/<to_branch> [from_branch]
# OR, same as above if the currently-checked-out branch is `branch2`
git branch --set-upstream-to=origin/branch1
# OR (same thing as just above)
git branch -u origin/branch1
# General form
git branch -u <remote>/<to_branch>
업스트림 브랜치를 UN 설정하여 이전에 설정된 업스트림 브랜치를 더 이상 추적하지 않도록 하려면 다음과 같이 하십시오.origin/branch1
위의 예에서)를 실행합니다.
git branch --unset-upstream branch2
# OR, same as above if the currently-checked-out branch is `branch2`
git branch --unset-upstream
다시 위에 표시된 것처럼 지점의 업스트림 분기가 현재 설정된 값을 보려면 이중 상세 내역(-vv
)git branch
vmd:
git branch -vv
참조:
- 내가 처음 배운 곳은
git push -u origin local_FROM_branch:remote_TO_branch
구문: @Adam Dymitruk의 대답 - https://devconnected.com/how-to-set-upstream-branch-on-git/
- Git 브랜치를 로컬 및 원격으로 삭제하려면 어떻게 해야 합니까?
관git
제가 쓴 주제:
- 초보자:
- 중간:
- 고급:
Git에서 다른 이름의 분기로 푸시하는 방법
일반적으로 로컬 분기를 동일한 이름의 원격 분기로 푸시하지만 항상 그렇지는 않습니다.
다이의분푸면다려됩지음니다면하정을시하기로를 하면 됩니다.branch you want to push
및 콜론(:)으로 구분하여 밀어 넣을 분기의 이름.
예를 들어, 다음과 같은 분기를 푸시하려는 경우some-branch
my-feature
:
(some-branch)$ git push origin some-branch:my-feature
Total 0 (delta 0), reused 0 (delta 0)
To github.com:johnmosesman/burner-repo.git
+ 728f0df...8bf04ea some-branch -> my-feature
모든 로컬 분기를 원격으로 푸시하는 방법
밀어넣을 , 컬에서모분자밀필없을어지만,요는을있다니습수추할가밀어넣로넣든주기를 할 수 .--all
플래그:
(main)$ git branch
* main
my-feature
(main)$ git push --all
...
To github.com:johnmosesman/burner-repo.git
b7f661f..6e36148 main -> main
* [new branch] my-feature -> my-feature
예, ▁to▁make▁option다있▁config▁yes습,▁a를 만드는 구성 옵션이 있습니다.git
기본적으로 업스트림 분기에 푸시합니다.
다문집사수필없다습니요행가할여용음하를 하지 됩니다.git push origin local:remote
매번:
# Set remote branch with a different name as an upstream branch
# for local branch currently checked out
git branch --set-upstream-to origin/remote_branch_name
# Change the default behavior for git-push (see manpage for git-config)
git config push.default upstream
# Now git will push to the upstream branch by default
git push
▁the▁of▁behavior▁default▁after합다니▁change▁you▁to▁need▁with'▁the▁to야현해▁branch▁upstream,▁a재▁remote▁branch▁current▁settings경의 기본 동작을 변경해야 합니다.git push
upstream
참조)git-config
자, . . . . .git push
이 규칙을 준수하고 세트 업스트림으로 푸시합니다.
임시 원격 분기 푸시 및 생성
원하는 경우:
- 새 이름으로 현재 분기를 원격으로 푸시하지만 다음과 같습니다.
- 현재 분기의 원격 추적 분기를 변경하지 않고 다음을 수행합니다.
- 새 이름으로 로컬 분기를 만들지 마십시오.
그러면 다음과 같이 간단합니다.
git push origin HEAD:temp-branch-name
참고: 교할수있다로 대체할 수 .HEAD
다른 분기 또는 커밋 ID를 사용하여 이를 대신 푸시할 수 있습니다.
제게 효과가 있었던 과정은 이렇습니다.
git clone original-repo-url
git remote rename origin upstream
git remote add origin new-repo-url
이제 새 레포는 '오리진'이 되고 원래 레포는 '업스트림'이 됩니다.git remote -v.를 실행하여 확인합니다(측면 참고:업스트림은 원본 레포에서 가져오는 데 사용되며 - 기여할 프로젝트와 로컬 복사본을 동기화하기 위해 - 그리고 오리진은 사용자 자신의 레포에 기여할 수 있기 때문에 풀 앤 푸시에 사용됩니다.)
git push origin master
이제 새로운 원격 repo의 마스터(Github)가 원래 마스터와 동기화되지만 기능 분기는 없습니다.
git rebase upstream/branch-name
git push origin master
기본 재배치는 스마트 병합입니다.그런 다음 를 눌러 마스터로 다시 이동하면 선택한 피쳐 분기가 새 레포에 마스터로 표시됩니다.
선택 사항:
git remote rm upstream
git remote add upstream new-repo-url
언급URL : https://stackoverflow.com/questions/5738797/how-can-i-push-a-local-git-branch-to-a-remote-with-a-different-name-easily
'source' 카테고리의 다른 글
Azure 웹 사이트에서 사용할 수 있는 node.js 버전은 무엇입니까? (0) | 2023.05.02 |
---|---|
밀리초를 현재 날짜로 변환(Excel) (0) | 2023.05.02 |
web.config 파일이 전체 오류 메시지를 표시하도록 설정하는 방법 (0) | 2023.05.02 |
집계 프레임워크를 사용한 MongoDB의 그룹 수 (0) | 2023.05.02 |
Excel 시트에서 Datetime 값을 읽는 중 (0) | 2023.05.02 |