我有一个master
和一个development
分支,都被推送到GitHub。我已经clone
d,pull
和fetch
编辑,但我仍然无法获得除master
分支以外的任何内容。
我确信我错过了一些明显的东西,但我已经阅读了手册,而且我一点也不开心。
答案 0 :(得分:4280)
$ 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 &
答案 1 :(得分:774)
如果您想要一次获取许多远程分支,请执行以下操作:
$ git pull --all
现在您可以根据需要签出任何分支,而无需访问远程存储库。
答案 2 :(得分:392)
这个Bash脚本帮助了我:
#!/bin/bash
for branch in $(git branch --all | grep '^\s*remotes' | egrep --invert-match '(:?HEAD|master)$'); do
git branch --track "${branch##*/}" "$branch"
done
它将为除master之外的所有远程分支创建跟踪分支(您可能从原始克隆命令获得)。我想你可能还需要做一个
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
像往常一样:在我们知道复制rm -rf Universe之前在您的设置中进行测试单行的积分转到用户cfi
答案 3 :(得分:315)
使用--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: How do I clone a repository with all remotely tracked branches?
答案 4 :(得分:209)
您可以轻松切换到分支,而无需使用花哨的“git checkout -b somebranch 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手册页:
如果< branch>找不到,但确实存在跟踪分支 只有一个具有匹配名称的远程(称为< remote>),视为 相当于
$ git checkout -b <branch> --track <remote>/<branch>
答案 5 :(得分:90)
关于,
使用$ git checkout -b experimental origin / experimental
$ git checkout -t origin/experimental
或者更详细但更容易记住
$ git checkout --track origin/experimental
在跟踪远程存储库方面,可能会更好。
答案 6 :(得分:78)
您正在执行的提取应该获取所有远程分支,但不会为它们创建本地分支。如果你使用gitk,你应该看到远程分支被描述为“remotes / 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分支相同的点。请注意,它将获取所有分支,但只将您所在的分支拉到树的顶部。
答案 7 :(得分:57)
当您执行“git clone git:// location”时,将获取所有分支和标记。
为了在特定的远程分支上工作,假设它是原始远程分支:
git checkout -b branch origin/branchname
答案 8 :(得分:50)
使用别名。虽然没有任何本机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
答案 9 :(得分:45)
git clone
下载所有远程远程分支,但仍将其视为“远程”,即使这些文件位于新存储库中。这有一个例外,即克隆过程从名为“master”的远程分支创建一个名为“master”的本地分支。默认情况下,git branch
仅显示本地分支,这就是您只看到“master”的原因。
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
创建本地分支后,您可以使用git branch
查看(请记住,您不需要-a
查看本地分支)。
答案 10 :(得分:44)
这不是太复杂,非常简单,直截了当的步骤如下;
git fetch origin
这会将所有远程分支带到您的本地。
git branch -a
这将显示所有远程分支。
git checkout --track origin/<branch you want to checkout>
通过以下命令验证您是否在所需的分支中;
git branch
输出会是这样的;
*your current branch
some branch2
some branch3
注意表示当前分支的*符号。
答案 11 :(得分:44)
迟到总比没有好,但这是最好的方法:
mkdir repo
cd repo
git clone --bare path/to/repo.git .git
git config --unset core.bare
git reset --hard
此时,您拥有远程仓库的完整副本及其所有分支(使用git branch
验证)。如果你的远程仓库有自己的遥控器,你可以使用--mirror
而不是--bare
。
答案 12 :(得分:38)
这样做:
$ 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'取出所有东西,甚至是分支,你只需要签出它们,然后就会创建你的本地分支。
答案 13 :(得分:23)
你只需要使用&#34; git clone&#34;得到所有分支。
git clone <your_http_url>
即使您只看到master分支,也可以使用&#34; git branch -a&#34;看到所有分支。
git branch -a
你可以切换到你已经拥有的任何分支。
git checkout <your_branch_name>
不要担心,在你&#34; git clone&#34;之后,你不需要连接远程仓库,&#34; git branch -a&#34;和&#34; git checkout&#34;关闭wifi时可以成功运行。所以事实证明,当你执行git clone&#34;时,它已经从远程仓库复制了所有分支。在那之后,你不需要远程回购,你的本地已经拥有所有分支机构&#39;码。
答案 14 :(得分:20)
git clone
应该复制整个存储库。尝试克隆它,然后运行git branch -a
。它应列出所有分支。如果那时你想切换到分支“foo”而不是“master”,请使用git checkout foo
。
答案 15 :(得分:19)
使用我的工具git_remote_branch(您需要在计算机上安装Ruby)。它专门用于使远程分支操作变得容易。
每次代表您进行操作时,它会在控制台上以红色打印。随着时间的推移,他们终于坚持到你的大脑: - )
如果您不希望grb代表您运行命令,只需使用'explain'功能即可。这些命令将打印到您的控制台,而不是为您执行。
最后,所有命令都有别名,以便记忆更容易。
请注意,这是alpha software; - )
这是运行grb help时的帮助:
git_remote_branch version 0.2.6 Usage: grb create branch_name [origin_server] grb publish branch_name [origin_server] grb rename branch_name [origin_server] grb delete branch_name [origin_server] grb track branch_name [origin_server] Notes: - If origin_server is not specified, the name 'origin' is assumed (git's default) - The rename functionality renames the current branch The explain meta-command: you can also prepend any command with the keyword 'explain'. Instead of executing the command, git_remote_branch will simply output the list of commands you need to run to accomplish that goal. Example: grb explain create grb explain create my_branch github All commands also have aliases: create: create, new delete: delete, destroy, kill, remove, rm publish: publish, remotize rename: rename, rn, mv, move track: track, follow, grab, fetch
答案 16 :(得分:16)
我在这里看到的所有答案都是有效的,但有一种更清晰的方法来克隆存储库并立即拉出所有分支。
克隆存储库时,实际下载了分支的所有信息,但隐藏了分支。使用命令
$ 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中的本地存储库仍为空,现在只有一个隐藏的.git文件夹,您可以从终端看到“ls -alt”命令。
通过将git配置的布尔值“裸”切换为false,将此存储库从空(裸)存储库切换到常规存储库:
$ git config --bool core.bare false
抓取当前文件夹中的所有内容并在本地计算机上创建所有分支,从而使其成为正常的回购。
$ git reset --hard
所以现在你可以输入命令“git branch”,你可以看到所有的分支都被下载了。
这是您可以快速克隆包含所有分支的git存储库的方法,但这并不是您希望以这种方式为每个项目执行的操作。
答案 17 :(得分:12)
好的,当你克隆你的回购时,那里有你所有的分支......
如果你只是做git branch
,它们就会被隐藏......
因此,如果您希望查看所有分支名称,只需添加--all
这样的标记:
git branch --all
或git branch -a
如果你只是结帐到分行,你得到了所需的一切。
但是如果你克隆后由其他人创建分支怎么样?
在这种情况下,只需:
git fetch
再次检查所有分支......
如果您想同时获取和结帐,可以执行以下操作:
git fetch && git checkout your_branch_name
还创建了下面的图片,以简化我所说的内容:
答案 18 :(得分:12)
看一下这个问题的答案,我注意到它可以缩短它:
for branch in `git branch -r | grep -v 'HEAD\|master'`; do
git branch --track ${branch##*/} $branch;
done
但要注意,如果其中一个远程分支被命名为例如admin_master它不会被下载!
感谢bigfish的原创理念
答案 19 :(得分:11)
#!/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
这些代码会将所有远程分支代码拉到本地仓库。
答案 20 :(得分:10)
复制粘贴到命令行:
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
<小时/> 这将:
答案 21 :(得分:8)
我写了这个小的 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函数
答案 22 :(得分:8)
我需要完全一样。这是我的Ruby脚本。
#!/usr/bin/env ruby
local = []
remote = {}
# Prepare
%x[git reset --hard HEAD]
%x[git checkout master] # Makes sure that * is on master.
%x[git branch -a].each_line do |line|
line.strip!
if /origin\//.match(line)
remote[line.gsub(/origin\//, '')] = line
else
local << line
end
end
# Update
remote.each_pair do |loc, rem|
next if local.include?(loc)
%x[git checkout --track -b #{loc} #{rem}]
end
%x[git fetch]
答案 23 :(得分:7)
通常Git(未指定时)从一个或多个其他存储库中获取所有分支和/或标记(参考:git ls-refs
)以及完成其历史记录所需的对象。换句话说,它获取已经下载的对象可以访问的对象。请参阅:What does git fetch
really do?
有时您可能有分支/标记与当前分支/标记没有直接关联,因此git pull --all
/ git fetch --all
在这种情况下无效,但您可以按以下方式列出:
git ls-remote -h -t origin
并通过知道引用名称手动获取它们。
所以要全部获取,请尝试:
git fetch origin --depth=10000 $(git ls-remote -h -t origin)
如果您使存储库变浅,--depth=10000
参数可能会有所帮助。
然后再次检查所有分支:
git branch -avv
如果上面没有帮助,你需要手动将缺失的分支添加到被跟踪的列表中(因为它们以某种方式丢失):
$ git remote -v show origin
...
Remote branches:
master tracked
由git remote set-branches
赞成:
git remote set-branches --add origin missing_branch
因此在获取后可能会显示在remotes/origin
下:
$ git remote -v show origin
...
Remote branches:
missing_branch new (next fetch will store in remotes/origin)
$ git fetch
From github.com:Foo/Bar
* [new branch] missing_branch -> origin/missing_branch
如果您仍然无法获得除主分支以外的任何内容,请检查以下内容:
git remote -v
),例如
git config branch.master.remote
为origin
。origin
是否通过以下网址指向了正确的网址:git remote show origin
(请参阅此post)。答案 24 :(得分:6)
这些答案都没有削减,除非用户没人在正确的轨道上。
我将回购从一个服务器/系统移动到另一个服务器/系统时遇到了问题。当我克隆了repo时,它只为master创建了一个本地分支,所以当我推送到新的远程时,只推出了master分支。
所以我发现这两种方法非常有用。希望他们帮助别人。
方法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
答案 25 :(得分:6)
我使用的是Atlassian的Repository Hosting Service Bitbucket。所以我试着关注他们的文档。这对我来说非常有效。使用以下简单和简短命令,您可以检出远程分支。
首先克隆您的存储库,然后切换到目标文件夹。最后但并非最不重要的是获取和结帐:
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
您可以在文档中找到有关命令的详细信息: Clone Command,Fetch Command,Checkout Command
答案 26 :(得分:6)
截至2017年初,答案https://msdn.microsoft.com/en-us/library/6c3yckfw(v=vs.85).aspx有效:
git fetch <origin-name> <branch-name>
为您带来了分支。虽然这不会立即拉出所有分支,但您可以单独执行此分支。
答案 27 :(得分:5)
这是另一个简短的单线命令 为所有远程分支创建本地分支:
(git branch -r | sed -n '/->/!s#^ origin/##p' && echo master) | xargs -L1 git checkout
如果已经创建了跟踪本地分支,它也可以正常工作。
您可以在第一个git clone
之后或之后的任何时间调用它。
如果您不需要在克隆后签出master
分支,请使用
git branch -r | sed -n '/->/!s#^ origin/##p'| xargs -L1 git checkout
答案 28 :(得分:5)
(a is None) ^ (b is None)
适用于此。
git clone --mirror
答案 29 :(得分:2)
我要在这里加2美分,因为我在这里试图找出如何拉下我在本地删除的远程分支。 Origin不是我的,我不想经历重新克隆一切的麻烦
这对我有用:
假设您需要在本地重新创建分支:
git checkout -b recreated-branch-name
git branch -a (to list remote branches)
git rebase remotes/remote-origin/recreated-branch-name
所以,如果我从gituser / master分到sjp然后将其分支到sjp / mynewbranch,它将如下所示:
$ git checkout -b mynewbranch
$ git branch -a
master
remotes/sjp/master
remotes/sjp/mynewbranch
$ git fetch (habit to always do before)
$ git rebase remotes/sjp/mynewbranch
答案 30 :(得分:2)
此解决方案对我有用,可以将存储库“复制”到另一个存储库:
git merge path/to/source.git --mirror
cd source.git
git remote remove origin
git remote add origin path/to/target.git
git push origin --all
git push origin --tags
在目标存储库上,我可以看到与原始存储库相同的分支和标签。
答案 31 :(得分:2)
更新:
已接受的git branch -a
答案仅显示远程分支。除非您可以通过网络访问原始服务器,否则将无法访问分支机构。
尝试checkout
分支将失败或使您处于“分离的HEAD”状态。
如果您要查找“ 自包含的克隆/备份 包含所有远程分支和提交日志的”,请使用:
git clone http://user@repo.url ; git pull --all
信用::Gabe Kopley's用于建议git pull --all
部分。
NB:
如果您再无权访问 remote/origin branches
服务器, remote/origin
中将不会反映任何更新。它们的修订仅从您执行初始git clone http://user@repo.url ; git pull --all
命令的日期和时间开始反映。
此外,git pull --all
不会为您结帐或创建本地分支。为此,请使用下面的命令之一或手动运行git checkout remote/origin/<branchname>
(即使您不再具有对 remote/origin
服务器的网络访问权限)。使用git branch -a
来显示保存在clone
存储库中的远程分支。
---
更新结束
原始答案:
这应该可以解决问题:
$ 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
如果您的仓库中有嵌套的分支,那么此命令将考虑到这一点:
for i in $(git branch -a |grep 'remotes' |grep -v 'HEAD ->');do \
basename ${i##\./} | xargs -I {} git checkout -b {} --track origin/{}; done
上面的命令会将checkout
的本地分支添加到本地存储库中,其名称与 remote/origin/<branchname>
相同,并将其设置为--track
。对您的 local 存储库执行remote/origin
命令的 git pull
服务器。
答案 32 :(得分:2)
这是使用awk的答案。如果在新的仓库中使用该方法,就足够了。
git branch -r | awk -F/ '{ system("git checkout " $NF) }'
现有分支将仅被检出或声明为已经存在,但是可以添加过滤器以避免冲突。
还可以对其进行修改,以使其调用显式的git checkout -b <branch> -t <remote>/<branch>
命令。
或者,我们可以改为指定远程分支。这是基于murphytalk的answer。
git branch -r | awk '{ system("git checkout -t " $NF) }'
它在冲突时引发致命错误消息,但我认为它们无害。
两个命令都可以别名。
使用nobody的answer作为参考,我们可以使用以下命令来创建别名:
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
。
答案 33 :(得分:2)
此变体将克隆一个远程回购,其中所有分支都可以在本地使用,而不必逐个签出每个分支。不需要花哨的脚本。
使用与您要克隆的存储库相同的名称制作一个文件夹,然后将其插入cd:
mkdir somerepo
cd somerepo
现在执行这些命令,但使用实际的回购用户名/回购名
git clone --bare git@github.com:someuser/somerepo.git .git
git config --bool core.bare false
git reset --hard
git branch
Voiala!你在那里有所有分支!
答案 34 :(得分:1)
gitCloneAllBranches() { # clone all git branches at once easily and cd in
# clone as "bare repo"
git clone --mirror $1
# rename without .git extension
with_extension=$(basename $1)
without_extension=$(echo $with_extension | sed 's/.git//')
mv $with_extension $without_extension
cd $without_extension
# change from "bare repository" to not
git config --bool core.bare false
# check if still bare repository if so
if [[ $(git rev-parse --is-bare-repository) == false ]]; then
echo "ready to go"
else
echo "WARNING: STILL BARE GIT REPOSITORY"
fi
# EXAMPLES:
# gitCloneAllBranches https://github.com/something/something.git
}
答案 35 :(得分:0)
$ mkdir -p -- newproject_folder
$ cd newproject_folder
$ git clone --mirror https://github.com/USER_NAME/RepositoryName.git .git
$ git config --bool core.bare false
$ git reset --hard
答案 36 :(得分:0)
我在 1 个月前成功的总结:
mkdir -p -- myapp-mirror
cd myapp-mirror
git clone --mirror https://git.myco.com/mygroup/myapp.git .git
git config --bool core.bare false
git config --bool core.logAllRefUpdates true
git reset --hard
基于几个答案。
答案 37 :(得分:0)
对远程仓库进行裸克隆,将内容保存到 .git 目录
git clone --bare remote-repo-url.git localdirname/.git
(使用 git clone --bare 或 git init --bare 创建的裸 git 存储库是存储存储库,它没有工作目录,您不能在那里创建或修改文件。)
将目录更改为本地目录
cd localdirname
使您的 git 存储库可修改
git config --bool core.bare false
恢复您的工作目录
git reset --hard
列出您的所有分支机构
git branch -al
答案 38 :(得分:0)
这是一个跨平台的 PowerShell 7 函数,它是根据先前的答案改编而成的。
function Invoke-GitCloneAll($url) {
$repo = $url.Split('/')[-1].Replace('.git', '')
$repo_d = Join-Path $pwd $repo
if (Test-Path $repo_d) {
Write-Error "fatal: destination path '$repo_d' already exists and is not an empty directory." -ErrorAction Continue
} else {
Write-Host "`nCloning all branches of $repo..."
git -c fetch.prune=false clone $url -q --progress &&
git -c fetch.prune=false --git-dir="$(Join-Path $repo_d '.git')" --work-tree="$repo_d" pull --all
Write-Host "" #newline
}
}
注意: -c fetch.prune=false
使它包括通常会被排除的陈旧分支,如果您对此不感兴趣,请将其删除。
您可以通过从功能中删除&&
来使用PowerShell 5.1(Windows 10中的默认设置),但是即使上一条命令失败,它也会尝试运行git pull
。因此,我强烈建议您仅使用跨平台的PowerShell,因为它总是困扰您尝试。
答案 39 :(得分:0)
对于使用vscode的开发人员来说,更好的替代解决方案是使用Git Shadow Extension。这个vscode扩展名允许克隆存储库内容和目录,可以按分支名称或提交哈希对其进行过滤。这样,分支或提交可用作新项目的样板/模板。
答案 40 :(得分:0)
参加派对有点晚了,但我觉得这样做很有意思:
mkdir YourRepo
cd YourRepo
git init --bare .git # create a bare repo
git remote add origin REMOTE_URL # add a remote
git fetch origin refs/heads/*:refs/heads/* # fetch heads
git fetch origin refs/tags/*:refs/tags/* # fetch tags
git init # reinit work tree
git checkout master # checkout a branch
如果这样做不受欢迎,我很想知道。但是,到目前为止,这对我有用。
答案 41 :(得分:0)
这是一个bash脚本,用于将git项目的所有分支和标记作为快照提取到单独的文件夹中。
https://gist.github.com/hfossli/7562257
也许不是直接问到的,但有些人可能会来这里寻找这个解决方案。
答案 42 :(得分:-1)
用于从Git项目下载所有分支的脚本
sudo git clone https://github.com/marceloviana/allBranches.git && sudo cp -rfv allBranches/allBranches.sh /usr/bin/allBranches && sudo chmod +x /usr/bin/allBranches && sudo rm -rf allBranches
准备好了!现在只需调用命令(allBranches),并告诉Git项目目录您要下载所有分支
使用
示例1:
~$ allBranches /var/www/myproject1/
示例2:
~$ allBranches /var/www/myproject2/
示例3(如果已经在项目目录中):
~$ allBranches ./
或
~$ allBranches .
查看结果:
git branch
存储库allBranches GitHub: https://github.com/marceloviana/allBranches
答案 43 :(得分:-2)
如果您使用BitBucket,则
您可以使用导入存储库,这将导入所有git历史记录(所有分支和提交)