모든 브랜치를 끌어당기고 푸시하도록 git 설정
새로 만든 브런치를 포함하여 기본적으로 모든 브런치를 밀고 당기고 싶습니다.
정의할 수 있는 설정이 있나요?
그렇지 않으면 로컬에서 새로운 브런치를 추가할 때 서버에서 브런치를 꺼낼 때 가장 간단한 방법은 무엇입니까?
같은 이름으로 지점을 새로 만들어서 당기려고 했는데 작동이 안 돼요.브런치의 모든 리모트 설정을 묻습니다.어떻게 세팅하지?
가장 간단한 방법은 다음과 같습니다.
git push --all origin
그러면 태그와 분기가 푸시됩니다.
최신 git에서는 항상 모든 브랜치를 가져옵니다(리모트 트래킹 브랜치로서).refs/remotes/origin/* 「」로 , 「」로 표시git branch -r ★★★★★★★★★★★★★★★★★」git remote show origin
의 ).push.defaultconfig variable)은 일치하는 브런치를 푸시합니다.즉, 먼저 이 브런치를git push origin branch git에 수 .git push.
항상 모든 분기를 푸시하려면 push refspec을 설정할 수 있습니다.리모트의 이름이 지정되어 있는 경우origingit config를 사용할 수 있습니다.
$ git config --add remote.origin.push '+refs/heads/*:refs/heads/*'
$ git config --add remote.origin.push '+refs/tags/*:refs/tags/*'
직접 편집하기.git/config일음
[리모트 '스위치']url = user@example.com:/srv/srv/repo.disples가져오기 = +refs/heads/*:refs/refs/refs/remotes/*fetch = +refs/filename/*:refs/filename/*푸시 = +refs/heads/*:refs/heads/*push = +refs/filename/*:refs/filename/*
다음 명령을 사용하여 모든 분기를 새 저장소로 마이그레이션했습니다.
~$ git clone --mirror <url_of_old_repo>
~$ cd <name_of_old_repo>
~$ git remote add new-origin <url_of_new_repo>
~$ git push new-origin master
~$ git push new-origin --mirror
메모: Atlassian Stash에서 AWS CodeCommit(공백 repo)로 repo를 복제하는 동안 두 번째 마지막 명령어(즉, push master first)를 사용해야 했습니다.이유는 잘 모르겠지만 (을) 밀어낸 후입니다.git push new-origin --mirror는 ) 이외의 하고 있었습니다.master.
푸시 사양에 +를 포함시키는 것은 나쁜 생각일 수 있습니다.이것은 git이 -f가 없어도 비빠르게 푸시 할 수 있다는 것을 의미하며, 리모트 서버가 그것들을 받아들이도록 설정되어 있으면 이력을 잃을 수 있기 때문입니다.
이것만 시험해 보세요.
$ git config --add remote.origin.push 'refs/heads/*:refs/heads/*'
$ git config --add remote.origin.push 'refs/tags/*:refs/tags/*'
$ git config --add remote.origin.fetch 'refs/heads/*:refs/remotes/origin/*'
$ git config --add remote.origin.fetch 'refs/tags/*:refs/tags/*'
오래된 repo에서 새로운 repo로 브런치를 이동하는 경우 오래된 repo 브런치를 모두 로컬로 가지고 있지 않은 경우 먼저 그것들을 추적해야 합니다.
for remote in `git branch -r | grep -v '\->'`; do git branch --track $remote; done
그런 다음 새 원격 보고서를 추가합니다.
git remote add bb <path-to-new-repo>
다음으로 다음 명령을 사용하여 모두 푸시할 수 있습니다.
git push -u bb --all
또는 이 작업을 한 번 하지 않거나 로컬브런치만 이동하려고 할 경우 여기서 다른 응답에 기재된 git config 명령을 사용하여 repo를 설정할 수 있습니다.
중요한 점은 다른 응답은 모든 LOCAL 브랜치만 푸시한다는 것입니다.브랜치가 대체 REMOTE 저장소에만 존재하는 경우 브랜치는 먼저 브랜치를 추적하지 않으면 이동하지 않습니다.여기에 제시된 for 루프가 도움이 됩니다.
모든 브런치를 오래된 리포에서 새로운 리포로 이동하는 경우 로컬 리포에서 각 브런치를 기존 오리진 브랜치로 추적한 후 새로운 리포에 푸시해야 합니다.그렇지 않으면 모든 오리진 브랜치가 새로운 오리진에 표시되지 않습니다.각 브랜치를 추적 또는 체크 아웃하여 수동으로 수행하거나 라이너를 1개 사용합니다.
for remote in `git branch -r | grep -v '\->' | grep -v master`; do git branch --track `echo $remote|sed 's=origin/=='` `echo $remote`; done
이 한 줄 명령어는 이 페이지의 다른 답변에 있는 해당 버전을 기반으로 합니다.단, 다음과 같은 점에서 이 명령어를 사용하는 것이 좋습니다.
- 이 페이지에 있는 이 명령어의 일부 오래된 버전과는 달리 브랜치트래킹을 올바르게 셋업합니다.이것은 --track에 파라미터가 1개만 제공되기 때문에 각 브랜치가 추적 마스터로 끝납니다.-좋지 않습니다.
- 는 개인적으로 원하지 않는 접두사 "origin/"를 붙이지 않고 로컬브런치 이름을 붙입니다.또한 브런치를 정상적으로 체크 아웃 했을 때의 동작과 일치합니다.
- 트래킹 마스터는 이미 발생하고 있기 때문에 건너뜁니다.
- 실제로 아무것도 체크하지 않기 때문에 빠르다
- git branch -r 출력의 ->에 걸려 넘어지는 것을 방지합니다.
다음으로 오리진을 전환하는 경우 링크를 이전 오리진으로 교체하고 새 리모트를 가리킵니다.먼저 bitbucket/github GUI를 사용하여 새 리모트를 생성하되 파일을 추가하지 마십시오. 그렇지 않으면 병합에 문제가 발생합니다.예.
git remote set-url origin git@bitbucket.org:YOUR/SOMEREPO.git
이제 밀어요.태그를 푸시하려면 두 번째 명령도 필요합니다.
git push -u --all origin
git push --tags origin
를 사용하여 git branch -a하다
for remote in `git branch -r`; do git branch --track $remote; done
git fetch --all
git pull --all
이것으로 모든 브런치가 표시됩니다.
git branch
모든 분기를 푸시하려면 다음 작업을 수행합니다.
git push --all
모든 브랜치 및 태그를 전송하기 위한 완전한 절차는 @vikas027과 @kumarahul의 답변을 조합한 것입니다.
~$ git clone <url_of_old_repo>
~$ cd <name_of_old_repo>
~$ git remote add new-origin <url_of_new_repo>
~$ git push new-origin --mirror
~$ git push new-origin refs/remotes/origin/*:refs/heads/*
~$ git push new-origin --delete HEAD
는 브랜치 이름인 '가 있기 입니다.HEAD 때문에 됩니다.
저는 여기서 @kumarahul이 게시한 것처럼 가장 간단하고 좋은 방법을 찾았습니다.그것은 모든 태그와 브런치를 원래 리모콘에서 새로운 리모콘으로 푸시합니다.
git remote add newremote new-remote-url
git push newremote --tags refs/remotes/origin/*:refs/heads/*
git push --all -u newremote'를 사용했는데 체크아웃된 브랜치만 newremote로 푸시됩니다.
Git: 모든 브런치를 새 리모콘에 푸시
Keith Dechant, 소프트웨어 아키텍트
여기 Git 저장소에서 마주친 시나리오가 있습니다.예를 들어 오래된 서버로부터 Git repo의 작업 복사본이 있습니다.그러나 작업 복사본만 있고 원본에 액세스할 수 없습니다.그러니까 그냥 포크로 하면 안 돼요.그러나 전체 보고서와 모든 지점 기록을 새 리모컨에 푸시해야 합니다.
이것은, 작업 카피에 낡은 리모트로부터의 트래킹 브랜치(origin/branch1, origin/branch1 등)가 포함되어 있는 경우에 가능합니다.만약 그렇게 한다면, 당신은 모든 보고서와 기록을 가지게 될 것입니다.
하지만, 제 경우는 수십 개의 지점이 있었고, 그 중 일부 또는 전부가 현지에서 체크아웃을 한 적이 없습니다.그것들을 모두 밀어내는 것은 무거운 리프트처럼 보였다.그럼 어떻게 진행하죠?
다음 두 가지 옵션을 확인했습니다.
옵션 1: 모든 브런치를 체크하고 이 작업을 수행할 수 있습니다.또, Bash 스크립트를 작성할 수도 있습니다.그러나 이렇게 하면 체크아웃할 때마다 작업 파일이 변경되어 각 원격 추적 지점의 로컬 지점이 생성됩니다.큰 레포로는 느릴 것이다.
옵션 2: 작업 복사본을 변경하지 않고 푸시하는 두 번째 방법이 있습니다.각 브랜치를 체크 아웃할 필요가 없으며 작업 복사본에 관련 없는 브랜치를 생성하지 않으며 작업 복사본의 파일도 수정하지 않습니다.
오래된 no-longer-active 리모컨을 "old remote"라고 부르고 새 리모컨을 "new remote"라고 부르는 경우 다음 명령을 사용하여 원격 추적 브랜치만 푸시할 수 있습니다.
git push newremote refs/remotes/oldremote/*:refs/heads/*경우에 따라서는, 브랜치의 서브셋만을 푸시 할 수도 있습니다.지점 이름에 슬래시(예: oldremote/features/branch3, oldremote/features/branch4)가 붙어 있는 경우 "oldremote/features"로 시작하는 이름의 원격 추적 지점만 푸시할 수 있습니다.
git push newremote refs/remotes/oldremote/features/*:refs/heads/features/*모든 브랜치를 푸시하든 일부 브랜치만 푸시하든 Git은 새로운 로컬 브랜치를 생성하지 않고 작업 파일을 변경하지 않고 전체 작업을 수행합니다.사용자의 패턴과 일치하는 모든 추적 브랜치가 새 리모컨으로 푸시됩니다.
항목에 대한 자세한 내용은 스택 오버플로에서 이 스레드를 확인하십시오.
투고일:2017년 10월 9일
리모트 송신원으로부터 다른 송신원으로 푸시 하는 경우는, 다음과 같이 할 수 있습니다.
git push newremote refs/remotes/oldremote/*:refs/heads/*
이건 나한테 효과가 있었어.문의처: https://www.metaltoad.com/blog/git-push-all-branches-new-remote
없는 origin config (설정)
글로벌 gitconfig에서 다음을 사용합니다.
[remote]
push = +refs/heads/*
push = +refs/tags/*
그러면 모든 브랜치와 태그가 푸시됩니다.
왜 안 죠?origin★★★★★★★★★★★★★★★★★?
하드코드의 경우:
origin이치노 어원을 수는 , 어원을 붙일 수 , 어원을 붙여야 한다, 어, 어, 어, 어, 어, 어, 어, 어, 어, 어, 어, 어, 어, 어, 어, 어, 어, 어, 어, 어, 어, 어, 어, 어, 어, 어, 어, 어, 어, 어, 어, 어, 어, 어, 어, 어, 어, 어, 어, 어, 어, 어, 어set-url- 툴이 다른 이름의 리모콘을 작성한 경우 push all 설정은 적용되지 않습니다.의 이름을 안 요.
origin(기억해주세요: (1번 지점부터)억해주) : )
페치는 이미 현대 git으로 처리되어 있습니다.
Jakub Narbsbski의 답변에 따르면:
최신 git에서는 항상 모든 브랜치를 가져옵니다(리모트 트래킹 브랜치로 참조/리모트/오리진/* 네임스페이스에).
새로운 리모트 리포 추가 시 마지막 단계에서 푸시 시 HEAD 브랜치가 제외됩니다.
git clone <url_of_old_repo>
cd <name_of_old_repo>
git remote add new-origin <url_of_new_repo>
git ls-remote . | grep 'refs/remotes/origin/' | grep -v 'HEAD' | awk -F 'origin/' '{print $2}' | xargs -i git push -f new-origin --tags refs/remotes/origin/{}:refs/heads/{}
먼저 리모트 git을 loacl에 추가합니다.
git remote add remote_name remote_address
다음 명령어를 사용하여 실행하기만 하면 됩니다.
git push --all remote_name
언급URL : https://stackoverflow.com/questions/1914579/set-up-git-to-pull-and-push-all-branches
'programing' 카테고리의 다른 글
| C# 코드에서 WPF 텍스트 상자의 배경색 설정 (0) | 2023.04.18 |
|---|---|
| WPF에 form.onload가 존재합니까? (0) | 2023.04.18 |
| 단일 PowerShell 스크립트 매개 변수에 여러 값 전달 (0) | 2023.04.18 |
| 다양한 커밋을 선택하여 다른 브랜치로 결합하려면 어떻게 해야 합니까? (0) | 2023.04.18 |
| 체크박스를 크게 하는 방법 (0) | 2023.04.18 |