모든 원격 지점을 복제하려면 어떻게 해야 합니까?
나의master
그리고.development
분기는 GitHub에서 원격으로 추적됩니다.이 두 분기를 모두 복제하려면 어떻게 해야 합니까?
먼저 원격 Git 저장소를 복제하여 해당 저장소에 복제합니다.
$ git clone git://example.com/myproject
$ cd myproject
그런 다음 저장소의 로컬 분기를 확인합니다.
$ git branch
* master
그러나 저장소에 다른 분기가 숨어 있습니다!음을사이를 사용하여 이러한 하십시오.-a
플래그:
$ git branch -a
* master
remotes/origin/HEAD
remotes/origin/master
remotes/origin/v1.0-stable
remotes/origin/experimental
업스트림 분기를 간단히 보려면 직접 확인하십시오.
$ git checkout origin/experimental
해당 분기에서 작업하려면 로컬 추적 분기를 생성합니다. 이 분기는 다음 작업을 통해 자동으로 수행됩니다.
$ git checkout experimental
Branch experimental set up to track remote branch experimental from origin.
Switched to a new branch 'experimental'
여기서 "새 분기"는 인덱스에서 분기를 가져와 로컬로 작성하는 것을 의미합니다.이전 줄에서 알 수 있듯이 원격 분기를 추적하도록 분기가 설정되고 있으며, 이는 일반적으로 origin/branch_name 분기를 의미합니다.
이제 로컬 분기에 다음이 표시됩니다.
$ git branch
* experimental
master
사용둘이원격저추있수다습니적할을 사용하여 둘 의 원격 할 수 .git remote
:
$ git remote add win32 git://example.com/users/joe/myproject-win32-port
$ git branch -a
* master
remotes/origin/HEAD
remotes/origin/master
remotes/origin/v1.0-stable
remotes/origin/experimental
remotes/win32/master
remotes/win32/new-widgets
이 시점에서, 상황은 꽤 미쳐가고 있어요, 그러니 도망가세요.gitk
상황을 확인하기 위해:
$ gitk --all &
한 번에 가져오려는 원격 분기가 많은 경우 다음을 수행합니다.
git pull --all
이제 원격 저장소를 사용하지 않고 필요에 따라 모든 지점을 체크아웃할 수 있습니다.
참고: 이렇게 하면 체크아웃되지 않은 분기의 작업 복사본이 생성되지 않습니다. 이는 질문과 같습니다.자세한 내용은
이 Bash 스크립트는 저에게 도움이 되었습니다.
#!/bin/bash
for branch in $(git branch --all | grep '^\s*remotes' | egrep --invert-match '(:?HEAD|master)$'); do
git branch --track "${branch##*/}" "$branch"
done
마스터(원래 clone 명령에서 가져온 것일 수 있음)를 제외한 모든 원격 분기에 대한 추적 분기를 만듭니다.제 생각에 당신은 여전히 해야 할 것 같습니다.
git fetch --all
git pull --all
확실히
라이너 하나:
git branch -a | grep -v HEAD | perl -ne 'chomp($_); s|^\*?\s*||; if (m|(.+)/(.+)| && not $d{$2}) {print qq(git branch --track $2 $1/$2\n)} else {$d{$_}=1}' | csh -xfs
하기 전에 합니다.사용자 cfi에게 가는 한 라이너에 대한 크레딧
--mirror
은 옵은복는것같다니습하사를 처럼 보입니다.remote
분기를 올바르게 추적합니다.그러나 저장소를 기본 저장소로 설정하므로 나중에 일반 저장소로 다시 전환해야 합니다.
git clone --mirror path/to/original path/to/dest/.git
cd path/to/dest
git config --bool core.bare false
git checkout anybranch
참조:Git FAQ: 원격으로 추적된 모든 지점을 사용하여 리포지토리를 복제하려면 어떻게 해야 합니까?
고급 "git checkout -banch origin/somebranch" 구문을 사용하지 않고 쉽게 분기로 전환할 수 있습니다.할 수 있는 일:
git checkout somebranch
Git는 자동으로 올바른 작업을 수행합니다.
$ git checkout somebranch
Branch somebranch set up to track remote branch somebranch from origin.
Switched to a new branch 'somebranch'
Git는 동일한 이름을 가진 분기가 정확히 하나의 원격에 존재하는지 확인하고, 존재하는 경우 원격 분기임을 명시적으로 지정한 것과 동일한 방식으로 추적합니다.Git 1.8.2.1의 Git-checkout man 페이지에서:
<branch>를 찾을 수 없지만 일치하는 이름을 가진 정확히 하나의 원격(<remote>라고 함)에 추적 분기가 있는 경우 다음과 동일하게 처리합니다.
$ git checkout -b <branch> --track <remote>/<branch>
에 관하여,
git checkout - b 실험 기원/실험
사용.
git checkout -t origin/experimental
또는 더 장황하지만 기억하기 더 쉽습니다.
git checkout --track origin/experimental
원격 저장소를 추적하는 것이 더 나을 수 있습니다.
별칭을 사용합니다.네이티브 Git 원라이너는 없지만 다음과 같이 정의할 수 있습니다.
git config --global alias.clone-branches '! git branch -a | sed -n "/\/HEAD /d; /\/master$/d; /remotes/p;" | xargs -L1 git checkout -t'
그리고 나서 그것을 사용합니다.
git clone-branches
수행 중인 가져오기는 모든 원격 분기를 가져와야 하지만 해당 분기에 대한 로컬 분기를 만들지는 않습니다.gitk를 사용하는 경우 "remote/origin/dev" 또는 이와 유사한 원격 분기가 표시됩니다.
원격 분기를 기반으로 로컬 분기를 만들려면 다음과 같은 작업을 수행합니다.
git checkout -b dev refs/remotes/origin/dev
다음과 같은 것을 반환해야 합니다.
Branch dev set up to track remote branch refs/remotes/origin/dev. Switched to a new branch "dev"
이제 dev 분기에 있을 때 "git pull"은 원격 dev 분기와 동일한 지점으로 로컬 dev를 업데이트합니다.모든 가지를 가져오지만 현재 있는 가지만 트리 맨 위로 끌어옵니다.
이를 위한 최선의 방법은 다음과 같습니다.
mkdir repo
cd repo
git clone --bare path/to/repo.git .git
git config --unset core.bare
git reset --hard
된 원격 복사본이 됩니다(" " " "로 하십시오"로 확인하십시오).git branch
) 를 사용할 수 있습니다.--mirror
에 --bare
원격 리포지토리에 자체 원격이 있는 경우
"git clone git://location"을 수행하면 모든 분기와 태그가 가져옵니다.
특정 원격 분기 위에서 작업하려면 원본 원격이라고 가정합니다.
git checkout -b branch origin/branchname
왜 당신은 "주인"만 보십니까?
git clone
에서는 모든 원격 분기를 다운로드하지만 파일이 새 리포지토리에 있더라도 여전히 "원격"으로 간주합니다.여기에는 한 가지 예외가 있는데, 복제 프로세스가 "master"라는 원격 분기에서 "master"라는 로컬 분기를 생성한다는 것입니다.기적으로본,git branch
로컬 분기만 표시되므로 "마스터"만 표시됩니다.
git branch -a
원격 분기를 포함한 모든 분기를 표시합니다.
로컬 분기를 가져오는 방법
실제로 분기에서 작업하려면 "로컬" 버전을 원할 수 있습니다.원격 분기에서 로컬 분기를 체크아웃하지 않고 로컬 분기를 생성하여 작업 디렉토리의 내용을 변경하려면 다음과 같이 할 수 있는 방법은 다음과 같습니다.
git branch branchone origin/branchone
git branch branchtwo origin/branchtwo
git branch branchthree origin/branchthree
예에서는, 이예서는에,는,branchone
다을기작성로컬지이점름의다니입는을 입니다.origin/branchone
다른 이름으로 로컬 분기를 생성하려는 경우 다음 작업을 수행할 수 있습니다.
git branch localbranchname origin/branchone
지점을 로컬분만후다음같볼수이있다습니과에는든기를,▁it다▁with▁once▁branch있▁local로 볼 수 .git branch
(따라서, 당신은 필요하지 않습니다.-a
로컬 지점 보기).
이것은 너무 복잡하지 않습니다.매우 간단하고 간단한 단계는 다음과 같습니다.
git fetch origin
모든 원격 지점을 로컬로 가져옵니다.
git branch -a
모든 원격 분기가 표시됩니다.
git checkout --track origin/<branch you want to checkout>
다음 명령을 사용하여 원하는 분기에 있는지 확인합니다.
git branch
출력은 다음과 같습니다.
*your current branch
some branch2
some branch3
현재 분기를 나타내는 * 기호에 주목합니다.
이렇게 하면 됩니다.
$ git clone git://example.com/myproject
$ cd myproject
$ git checkout branchxyz
Branch branchxyz set up to track remote branch branchxyz from origin.
Switched to a new branch 'branchxyz'
$ git pull
Already up-to-date.
$ git branch
* branchxyz
master
$ git branch -a
* branchxyz
master
remotes/origin/HEAD -> origin/master
remotes/origin/branchxyz
remotes/origin/branch123
있아요.git clone git://example.com/myprojectt
모든 것을 가져옵니다. 가지도 마찬가지입니다. 체크아웃만 하면 로컬 지점이 생성됩니다.
모든 분기를 가져오려면 "git clone"만 사용하면 됩니다.
git clone <your_http_url>
마스터 분기만 표시되는 경우에도 "git branch -a"를 사용하여 모든 분기를 볼 수 있습니다.
git branch -a
이미 보유하고 있는 모든 지점으로 전환할 수 있습니다.
git checkout <your_branch_name>
"git clone"을 수행한 후에는 원격 저장소에 연결할 필요가 없습니다."git branch -a" 및 "git checkout <your_branch_name>은 인터넷에 연결되어 있지 않을 때 성공적으로 실행될 수 있습니다.따라서 "git clone"을 수행하면 이미 원격 저장소에서 모든 분기를 복사한 것으로 확인됩니다.그런 다음 원격 저장소가 필요하지 않습니다.로컬에 이미 모든 지점의 코드가 있습니다.
A git clone
전체 저장소를 복사해야 합니다. 복를시다실행음을 실행합니다.git branch -a
모든 분기를 나열해야 합니다. "master아닌 하려면 "master" "foo" "foo"를 사용합니다.git checkout foo
.
여기서 본 모든 답변은 유효했지만 저장소를 복제하고 모든 분기를 한 번에 풀 수 있는 훨씬 더 깨끗한 방법이 있습니다.
리포지토리를 복제하면 분기의 모든 정보가 실제로 다운로드되지만 분기는 숨겨집니다.명령어 사용
git branch -a
명령을 사용하여 저장소의 모든 분기를 표시할 수 있습니다.
git checkout -b branchname origin/branchname
그런 다음 한 번에 하나씩 수동으로 "실행"할 수 있습니다.
그러나 많은 분기가 있는 저장소를 복제하려는 경우 이전 답변에 나와 있는 모든 방법은 좀 복잡하지만 훨씬 깨끗하고 빠른 방법과 관련하여 시간이 오래 걸리고 지루합니다.이 작업을 수행하려면 다음과 같은 세 단계가 필요합니다.
첫걸음
시스템에 새 빈 폴더를 생성하고 저장소에서 .git 폴더의 미러 복사본을 복제합니다.
cd ~/Desktop && mkdir my_repo_folder && cd my_repo_folder
git clone --mirror https://github.com/planetoftheweb/responsivebootstrap.git .git
my_repo_folder 폴더 내의 로컬 리포지토리는 여전히 비어 있으며 터미널에서 "ls -alt" 명령으로 볼 수 있는 숨겨진 .git 폴더만 있습니다.
두 번째 단계
Git 구성의 부울 값 "bare"를 false로 전환하여 이 리포지토리를 빈(베어) 리포지토리에서 일반 리포지토리로 전환합니다.
git config --bool core.bare false
세 번째 단계
현재 폴더 안에 있는 모든 항목을 가져와서 로컬 시스템에 모든 분기를 생성하여 이 저장소를 일반 저장소로 만듭니다.
git reset --hard
이제 "git branch" 명령을 입력하면 모든 분기가 다운로드되는 것을 확인할 수 있습니다.
이렇게 하면 Git 저장소를 모든 분기와 함께 한 번에 복제할 수 있지만 모든 프로젝트에 대해 이러한 방식으로 복제할 수는 없습니다.
독립형 저장소
모든 원격 지점 및 커밋 로그를 포함하는 자체 포함 클론 또는 백업을 찾고 있는 경우 다음을 사용합니다.
git clone http://user@repo.url
git pull --all
대답인의 일반적인 입니다.git branch -a
원격 분기만 표시합니다.만약 당신이 시도한다면.checkout
오리진 서버에 대한 네트워크 액세스 권한이 없는 경우에는 할 수 없는 분기입니다.
크레딧: 게이브 코플리는 사용을 제안합니다.git pull --all
.
참조:
물론 서버에 대한 네트워크 액세스 권한이 없는 경우 에서는 리포지토리 복제에 업데이트가 반영되지 않습니다.수정사항에는 위의 두 리포지토리 복제 명령을 수행한 날짜 및 시간의 커밋이 반영됩니다.
Checkout a *local* branch in the usual way with `git checkout remote/origin/` Use `git branch -a` to reveal the remote branches saved within your `clone` repository.
명령 하나로 모든 복제 분기를 로컬 분기로 체크아웃하려면 아래의 bash 명령 중 하나를 사용합니다.
$ for i in $(git branch -a |grep 'remotes' | awk -F/ '{print $3}' \
| grep -v 'HEAD ->');do git checkout -b $i --track origin/$i; done
OR
repo에 중첩된 분기가 있는 경우 이 명령어는 다음 사항도 고려합니다.
for i in $(git branch -a |grep 'remotes' |grep -v 'HEAD ->');do \
basename ${i##\./} | xargs -I {} git checkout -b {} --track origin/{}; done
는 " " " 입니다.checkout
로컬 Git 저장소에 대한 로컬 분기(와 동일한 이름을 지정하고 다음으로 설정)--track
서버의 원격 지점에서 변경한 내용은 오리진 레포 서버에 대한 네트워크 액세스를 한 번 더 복구하고 다음을 수행할 수 있습니다.git pull
상투적인 방법으로 명령합니다.
내 도구 git_remote_branch(grb)를 사용합니다.시스템에 Ruby를 설치해야 합니다.원격 지점 조작을 쉽게 수행할 수 있도록 특별히 설계되었습니다.
사용자 대신 작업을 수행할 때마다 콘솔에서 빨간색으로 인쇄됩니다.시간이 지나면, 그것들은 마침내 당신의 뇌에 달라붙습니다 :-)
grb가 사용자 대신 명령을 실행하지 않으려면 '설명' 기능을 사용하십시오.명령이 실행되는 대신 콘솔에 인쇄됩니다.
마지막으로, 모든 명령에는 별칭이 있으므로 쉽게 암기할 수 있습니다.
이것은 알파 소프트웨어입니다 ;-)
grb 도움말을 실행할 때의 도움말은 다음과 같습니다.
git_remote_vmdk 버전 0.2.6 용도: grb branch_name [branch_server] 생성 grb 게시 branch_name [branch_server] grb branch_name [branch_server] 이름 바꾸기 grb branch_name [branch_server] 삭제 grb track branch_name [grb_server] 주의: origin_server를 지정하지 않으면 'origin' 이름으로 간주됩니다.(기본값)이름 바꾸기 기능은 현재 분기의 이름을 바꿉니다. meta-command 설명: 명령어 앞에 다음 명령어를 추가할 수도 있습니다.키워드 'https:/http://https:명령을 실행하는 대신 git_remote_branch실행해야 하는 명령 목록을 간단히 출력합니다.그 목표 예: grb 설명 생성grb 설명 my_github 만들기 또한 모든 명령에는 별칭이 있습니다. 생성: 생성, 새로 만들기삭제: 삭제, 파괴, 삭제, 제거, rm게시: 게시, 원격화이름 바꾸기: 이름 바꾸기, rn, mv, 이동트랙: 트랙, 팔로우, 잡기, 가져오기
#!/bin/bash
for branch in `git branch -a | grep remotes | grep -v HEAD | grep -v master `; do
git branch --track ${branch#remotes/origin/} $branch
done
이 코드는 모든 원격 분기 코드를 로컬 리포지토리로 가져옵니다.
로컬 레포에서 복제하면 git clone 및 git fetch에서 작동하지 않습니다. 많은 분기/태그가 fetch되지 않은 상태로 유지됩니다.
모든 분기 및 태그가 있는 복제본을 가져옵니다.
git clone --mirror git://example.com/myproject myproject-local-bare-repo.git
모든 분기와 태그를 포함하고 작업 복사본을 포함하는 복제본을 가져오려면:
git clone --mirror git://example.com/myproject myproject/.git
cd myproject
git config --unset core.bare
git config receive.denyCurrentBranch updateInstead
git checkout master
좋아요, 레포를 복제하면 모든 지점이...
당신이 그냥 한다면,git branch
그들은 일종의 숨겨진...
모든 분기 이름을 보려면 다음을 추가하십시오.--all
다음과 같은 플래그:
git branch --all
또는git branch -a
지점에 체크아웃만 하시면 필요한 것을 모두 받으실 수 있습니다.
하지만 복제 후 다른 사용자가 만든 분기는 어떨까요?
이 경우 다음을 수행합니다.
git fetch
모든 분기를 다시 확인합니다.
가져오기 및 체크아웃을 동시에 수행하려면 다음 작업을 수행할 수 있습니다.
git fetch && git checkout your_branch_name
또한 아래 이미지를 생성하여 제가 말한 내용을 단순화했습니다.
질문에 대한 답변 중 하나를 보고 단축할 수 있다는 것을 깨달았습니다.
for branch in `git branch -r | grep -v 'HEAD\|master'`; do
git branch --track ${branch##*/} $branch;
done
그러나 원격 분기 중 하나의 이름이 지정된 경우(예: admin_master) 다운로드되지 않습니다!
git clone --mirror
원래 레포는 이것에 잘 작동합니다.
git clone --mirror /path/to/original.git
git remote set-url origin /path/to/new-repo.git
git push -u origin
여기에 awk를 사용하는 답이 있습니다.이 방법은 새 레포에 사용할 경우 충분합니다.
git branch -r | awk -F/ '{ system("git checkout " $NF) }'
기존 분기는 단순히 체크아웃되거나 이미 있는 것으로 선언되지만 충돌을 방지하기 위해 필터를 추가할 수 있습니다.
명시적으로 호출되도록 수정할 수도 있습니다.git checkout -b <branch> -t <remote>/<branch>
지휘권
또는 원격 분기를 대신 지정할 수 있습니다.이것은 머피톡의 답변에 근거한 것입니다.
git branch -r | awk '{ system("git checkout -t " $NF) }'
그것은 충돌에 치명적인 오류 메시지를 던지지만 저는 그것들이 해롭지 않다고 봅니다.
두 명령 모두 별칭을 지정할 수 있습니다.
다른 사용자의 응답을 참조로 사용하면 다음 명령을 사용하여 별칭을 만들 수 있습니다.
git config --global alias.clone-branches '! git branch -r | awk -F/ "{ system(\"git checkout \" \$NF) }"'
git config --global alias.clone-branches '! git branch -r | awk "{ system(\"git checkout -t \" \$NF) }"'
으로 저는 개적으는을 할 것입니다.track-all
또는track-all-branches
.
이 답변들 중 어느 것도 문제를 해결하지 못했습니다. 단, 사용자는 아무도 올바른 방향으로 가고 있지 않습니다.
한 서버/시스템에서 다른 서버로 리포지토리를 이동하는 데 문제가 있었습니다.리포지토리를 복제할 때 마스터에 대한 로컬 분기만 생성되었기 때문에 새 원격으로 푸시하면 마스터 분기만 푸시됩니다.
그래서 저는 이 두 가지 방법이 매우 유용하다고 생각했습니다.
방법 1:
git clone --mirror OLD_REPO_URL
cd new-cloned-project
mkdir .git
mv * .git
git config --local --bool core.bare false
git reset --hard HEAD
git remote add newrepo NEW_REPO_URL
git push --all newrepo
git push --tags newrepo
방법 2:.
git config --global alias.clone-branches '! git branch -a | sed -n "/\/HEAD /d; /\/master$/d; /remotes/p;" | xargs -L1 git checkout -t'
git clone OLD_REPO_URL
cd new-cloned-project
git clone-branches
git remote add newrepo NEW_REPO_URL
git push --all newrepo
git push --tags newrepo
저는 이러한 작은 PowerShell 함수를 작성하여 오리진 원격에 있는 모든 Git 분기를 확인할 수 있습니다.
Function git-GetAllRemoteBranches {
iex "git branch -r" <# get all remote branches #> `
| % { $_ -Match "origin\/(?'name'\S+)" } <# select only names of the branches #> `
| % { Out-Null; $matches['name'] } <# write does names #>
}
Function git-CheckoutAllBranches {
git-GetAllRemoteBranches `
| % { iex "git checkout $_" } <# execute ' git checkout <branch>' #>
}
더 많은 Git 함수는 내 Git 설정 저장소에서 찾을 수 있습니다.
Git 호스트(github/bitbucket/etc)에 저장된 모든 분기+refs+태그+etc의 "전체" 백업을 만들려면 다음을 실행합니다.
mkdir -p -- myapp-mirror
cd myapp-mirror
git clone --mirror https://git.myco.com/group/myapp.git .git
git config --bool core.bare false
git config --bool core.logAllRefUpdates true
git reset --hard # restore working directory
이것은 제가 다른 답변들로부터 배운 모든 것들을 종합한 것입니다.
그런 다음 이 로컬 repo 미러를 사용하여 다른 SCM 시스템/git 호스트로 전환하거나 이 미러를 백업으로 유지할 수 있습니다.의 git 는 각를 호스팅하기 에 "main"을 "main"으로 지정하면 git log -S"specialVar"
모든 분기에 모든 코드가 표시됩니다.
참고: 일상 업무에서 이 보고서를 사용하려면 다음을 실행합니다.
git config --unset remote.origin.mirror
경고: 일상 업무에서 이 기능을 사용하려고 하면 이상한 문제가 발생할 수 있습니다.가 자동 ""/" "" "" "" "" "" "" "" ""master
업이트수있다니습할데,다를 했기 때문에 업데이트될 수 있습니다. 왜냐하면, 당신이 했기 때문입니다.git clone --mirror
그런 다음 이러한 파일이 Git 준비 영역에 나타납니다.커밋이 영역에 .해당 분기에는 커밋이 없으며 저장소의 모든 파일이 준비 영역에 나타납니다.그냥 미친.
명령줄에 복사 붙여넣기:
git checkout master ; remote=origin ; for brname in `git branch -r | grep $remote | grep -v master | grep -v HEAD | awk '{gsub(/^[^\/]+\//,"",$1); print $1}'`; do git branch -D $brname ; git checkout -b $brname $remote/$brname ; done ; git checkout master
가독성을 높이려면:
git checkout master ;
remote=origin ;
for brname in `
git branch -r | grep $remote | grep -v master | grep -v HEAD
| awk '{gsub(/^[^\/]+\//,"",$1); print $1}'
`; do
git branch -D $brname ;
git checkout -b $brname $remote/$brname ;
done ;
git checkout master
다음 작업을 수행합니다.
- 마스터 체크아웃(우리가 있는 지점을 삭제할 수 있도록)
- 체크아웃할 원격 선택(있는 원격으로 변경)
- 마스터 및 HEAD를 제외한 원격의 모든 분기를 순환합니다. 로컬 분기 삭제(강제 업데이트된 분기를 체크아웃할 수 있도록) 0. 원격에서 분기 체크아웃
- 마스터를 확인합니다.
기억할 수 있는 명령 사용
저는 아틀라스의 저장소 호스팅 서비스인 비트버킷을 사용하고 있습니다.그래서 저는 그들의 문서를 따르려고 노력합니다.그리고 그것은 저에게 완벽하게 효과가 있습니다.다음과 같은 쉽고 짧은 명령을 사용하여 원격 지점을 체크아웃할 수 있습니다.
먼저 리포지토리를 복제한 다음 대상 폴더로 변경합니다.마지막으로 중요한 것은 가져오기 및 체크아웃입니다.
git clone <repo> <destination_folder>
cd <destination_folder>
git fetch && git checkout <branch>
바로 그겁니다.여기 좀 더 실제 사례가 있습니다.
git clone https://username@bitbucket.org/team/repository.git project_folder
cd project_folder
git fetch && git checkout develop
명령에 대한 자세한 내용은 설명서에서 확인할 수 있습니다.복제 명령, 가져오기 명령, 체크아웃 명령
나중에 오프라인으로 검토할 수 있도록 Udemy 과정 Elease Automation Frameworks with Python 및 Pytest에서 저장소를 복제하고 있습니다.zip을 다운받으려고 했지만, 현재 지점에서만 내려오므로 여기 제 2센트가 있습니다.
저는 Windows에서 일하고 있는데, 분명히 Linux용 Windows Subsystem에서 Ubuntu 쉘을 사용했습니다.복제 직후, 제 지점은 다음과 같습니다.
$ git clone https://github.com/BrandonBlair/elegantframeworks.git
$ git branch -a
* master
remotes/origin/HEAD -> origin/master
remotes/origin/config_recipe
remotes/origin/functionaltests
remotes/origin/master
remotes/origin/parallel
remotes/origin/parametrize
remotes/origin/parametrize_data_excel
remotes/origin/unittesting
remotes/origin/unittesting1
그러면 - 몇 번을 친 후에git checkout
벽돌 벽—결국 저에게 효과가 있었던 것은 다음과 같습니다.
$ for b in `git branch -a | cut -c18- | cut -d\ -f1`; do git checkout $b; git stash; done
이 후에, 제 지점은 다음과 같습니다.
$ git branch -a
config_recipe
functionaltests
master
parallel
parametrize
parametrize_data_excel
unittesting
* unittesting1
remotes/origin/HEAD -> origin/master
remotes/origin/config_recipe
remotes/origin/functionaltests
remotes/origin/master
remotes/origin/parallel
remotes/origin/parametrize
remotes/origin/parametrize_data_excel
remotes/origin/unittesting
remotes/origin/unittesting1
내 것은 물리적인 것이 되고, 첫 번째 것을 잘라냅니다. remotes/origin/
그런 다음 공백 구분 기호를 필터링합니다. 틀없이그, 냥는나림을 수 있습니다.grep
out 까지끝HEAD
그리고 하나로 끝납니다.cut
댓글로 남겨드릴게요.
현재 지점이 목록의 마지막 지점입니다.만약 당신이 그것이 왜 그런지 모른다면, 당신은 거기서 궁지에 몰리게 될 것입니다. 그저.git checkout
당신이 지금 원하는 것은 무엇이든.
언급URL : https://stackoverflow.com/questions/67699/how-do-i-clone-all-remote-branches
'programing' 카테고리의 다른 글
가타나와 OWIN을 간단한 단어와 용법으로 설명하는 방법은? (0) | 2023.05.21 |
---|---|
파일 또는 어셈블리 '시스템'을 로드할 수 없습니다.넷. http.형식 지정' 또는 종속 항목 중 하나입니다.시스템이 지정된 경로를 찾을 수 없습니다. (0) | 2023.05.21 |
하나의 로컬 분기를 다른 로컬 분기로 병합 (0) | 2023.05.21 |
리소스 URL 컨텍스트에 사용된 안전하지 않은 값리소스 URL 컨텍스트에 사용된 안전하지 않은 값 (0) | 2023.05.21 |
VB.NET 함수 반환 (0) | 2023.05.21 |