我的主分支和开发分支在GitHub上被远程跟踪。如何克隆这两个分支?
当前回答
执行远程存储库的裸克隆,将内容保存到.git目录
git clone --bare remote-repo-url.git localdirname/.git
(使用gitclone--bare或gitinit--bare创建的裸git存储库是一个存储存储库,它没有工作目录,您无法在其中创建或修改文件。)
将目录更改为本地目录
cd localdirname
使您的git存储库可修改
git config --bool core.bare false
还原工作目录
git reset --hard
列出所有分支机构
git branch -al
其他回答
如果您有许多远程分支要同时获取,请执行以下操作:
git pull --all
现在,您可以根据需要签出任何分支,而无需访问远程存储库。
注意:这不会创建任何未签出分支的工作副本,这就是问题所在。对此,请参见
大鱼的回答戴夫的回答
#!/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
这些代码将把所有远程分支代码拉到本地存储库。
如何为远程源匹配模式上的每个分支创建本地分支。
#!/bin/sh
git fetch --all
git for-each-ref --format='%(refname:short)' refs/remotes/origin/pattern |\
sed 's@\(origin/\)\(.*\)@\2\t\1\2@' |\
xargs -n 2 git branch --track
获取所有远程引用(分支/标记),然后创建本地引用。应该可以在大多数系统上快速运行,而无需查看索引或依靠抨击。
独立存储库
如果要查找包含所有远程分支和提交日志的自包含克隆或备份,请使用:
git clone http://user@repo.url
git pull --all
gitbranch-a的接受答案仅显示远程分支。如果您尝试签出分支,除非您仍然具有对源服务器的网络访问权限,否则将无法签出。
信贷:加布·科普利(Gabe Kopley)建议使用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
如果您的回购具有嵌套分支,则此命令还将考虑这一点:
for i in $(git branch -a |grep 'remotes' |grep -v 'HEAD ->');do \
basename ${i##\./} | xargs -I {} git checkout -b {} --track origin/{}; done
上述命令将将本地分支签入本地git存储库,其名称与remote/orging/<branchname>相同,并将其设置为--如果您再次重新获得对原始存储库服务器的网络访问并以通常方式执行git pull命令,则跟踪远程/orging服务器上远程分支的更改。
好吧,当你克隆你的回购时,你有所有的分支。。。
如果你只是做git分支,它们是隐藏的。。。
所以,如果您想查看所有分支的名称,只需添加--all标志,如下所示:
gitbranch—all或gitbranch-a
如果你只是到分行结账,你就能得到你所需要的一切。
但是,如果你克隆后,其他人创建了分支,该怎么办?
在这种情况下,只需执行以下操作:
git获取
并再次检查所有分支。。。
如果您想同时取件和结账,可以执行以下操作:
git获取和git签出您的branch_name
还为您创建了下图,以简化我所说的内容:
推荐文章
- 如何设置一个git项目使用外部回购子模块?
- Git同时在两个分支上工作
- 如何在Visual Studio中删除未推送的外向提交?
- Git在两个不同的文件之间的差异
- 我如何使用vimdiff来解决git合并冲突?
- 如何将更改提交到另一个预先存在的分支
- 为什么使用'git rm'来删除文件而不是'rm'?
- 我如何安装imagemagick与自制?
- 致命:git-write-tree:错误构建树
- Git克隆远程存储库的特定版本
- git隐藏的意图用例是什么?
- 从远程Git存储库检索特定的提交
- 如何配置git bash命令行补全?
- 我如何迫使git拉覆盖每一个拉上的一切?
- 撤销“git add <dir>”?