git clone帮助页面有这样的说法--mirror:
设置远程存储库的镜像.这意味着
--bare.
但是没有详细说明--mirror克隆与克隆的不同之处--bare.
我有一个裸存储库,用作我项目的中央存储.所有开发人员都git clone <repo>愿意与之分享.当他们进行克隆时,他们会检查主分支(除非他们这样做git clone -n)因为repo.git/HEAD包含ref: refs/heads/master,使其成为活动分支.
问题是,如何正确更改活动分支?我可以简单地直接破解repo.git/HEAD文件,但这看起来很讨厌,而且,哈哈.
我尝试git checkout <otherbranch>在repo .git目录中做,但是因为我不在工作树中而失败了.
我试过git update-ref HEAD refs/heads/otherbranch但是刚刚更新的refs/heads/master与refs/heads/otherbranch相同(好吧,我在虚拟存储库中做了那个,而不是我的生产!)
我试过git update-ref --no-deref HEAD refs/heads/otherbranch,这几乎奏效了.它更新了HEAD文件,但它将其设置为指向的提交的SHA1 refs/heads/otherbranch.
我正在使用git版本进行测试1.7.0.2.msysgit.0.
我猜测没有办法做到这一点git push,因为允许所有和各种更改你的默认分支似乎有点不安全(!),但肯定有一个更好的方法在repo .git目录中执行它比直接黑客HEAD文件.
将单个远程分支作为本地分支进行跟踪非常简单.
$ git checkout --track -b ${branch_name} origin/${branch_name}
Run Code Online (Sandbox Code Playgroud)
将所有本地分支推送到远程,根据需要创建新的远程分支也很容易.
$ git push --all origin
Run Code Online (Sandbox Code Playgroud)
我想反过来.如果我在一个源上有X个远程分支:
$ git branch -r
branch1
branch2
branch3
.
.
.
Run Code Online (Sandbox Code Playgroud)
我是否可以为所有远程分支创建本地跟踪分支,而无需手动创建每个分支?说出类似的话:
$ git checkout --track -b --all origin
Run Code Online (Sandbox Code Playgroud)
我用google搜索和RTM,但到目前为止已经上传了.
有人可以解释一个"跟踪分支",因为它适用于git?
这是git-scm.com的定义:
Git中的"跟踪分支"是连接到远程分支的本地分支.当您按下并拉动该分支时,它会自动推送并拉到与其连接的远程分支.
如果您始终从同一个上游分支拉入新分支,并且您不想明确使用"git pull",请使用此选项.
不幸的是,对于git和来自SVN的新手来说,这个定义对我来说绝对没有意义.
我正在阅读" Git的实用指南 "(顺便说一句好书),他们似乎建议跟踪分支是一件好事,并且在创建第一个遥控器(原点,在这种情况下)后,你应该将您的主分支设置为跟踪分支,但遗憾的是,它不包括为什么跟踪分支是一件好事,或者通过将主分支设置为原始存储库的跟踪分支而获得的好处.
有人可以赐教(英文)吗?
我正在寻找安装一个git服务器来与我的团队共享项目.我不想在服务器上为每个需要git访问权限的开发人员创建具有SSH访问权限的用户帐户.似乎有两个并发的解决方案可以解决这个问题:gitosis和gitolite.
我找不到两种解决方案之间的任何比较.它们之间的主要区别是什么?还有其他类似的解决方案?
如何将Git遥控器的HEAD引用设置为指向除"master"之外的其他内容?
我的项目有一个不使用"主"分支的策略(所有分支都有有意义的名称).此外,规范主存储库只能通过ssh://访问,没有shell访问权限(如GitHub或Unfuddle).
我的问题是远程存储库仍然有一个HEAD引用refs/heads/master,但我需要它指向一个不同的分支.这导致两个问题:
克隆回购时,有这个,
警告:远程HEAD是指不存在的ref,无法结帐.
这令人困惑和不方便.
基于Web的代码浏览器依赖于HEAD作为浏览树的基础.我需要HEAD指向一个有效的分支,然后.
我很难理解git-fetch的细微差别.我知道做一个fetch,将远程refs提取到本地跟踪分支.
我有几个问题:
是否有可能本地跟踪分支不存在?如果是,那么它会自动创建吗?
如果我执行fetch并指定非跟踪分支作为目标,会发生什么?
git-fetch的手册页指定:
git-fetch <options> <repository> <refspec>
Run Code Online (Sandbox Code Playgroud)我如何使用refspec从远程主站获取内容到其远程跟踪分支?我相信如果我现在的HEAD在主人身上并且我跑了,这可能是可能的
git fetch origin master
但是,我可以使用<+?src:dest>refspec来实现同样的目的吗?我认为这将有助于我更好地理解这些概念.
还有一个问题:
我的.git/config文件有以下行用于获取(仅显示相关行):
fetch = +refs/heads/*:refs/remotes/origin/*
Run Code Online (Sandbox Code Playgroud)
有人可以解释这条线的确切含义吗?
该命令git branch -a列出了一堆不在存储库上的分支,而不是本地分支.怎么能删除这些?
* develop
master
remotes/origin/cloner
Run Code Online (Sandbox Code Playgroud)
例如,remotes/origin/cloner曾经存在于repo中,但它已被删除,我希望它在输入时不会出现git branch -a.
我在几台机器上开发.我想为每个开发机器上的每个项目都有一个存储库,我想让它们保持同步而不使用我可以推送的远程存储库.(目前我买不起专用机器).
我认为git bundle是适合这项工作的工具.当我在机器A上完成工作时,我只是简单地捆绑我的仓库,并在机器B上解开捆绑.这让我有了这样的问题:
是否可以在包中嵌入有关标签和分支的信息?特别是,我如何捆绑标签对象?
编辑:只是一个注释 - 我希望尽可能自动化这个工作流程.我不想将捆绑视为远程.而不是那样,我想将捆绑包复制到我的存储库中 - 即添加提交和标记,快进现有分支并在分支不存在时添加新分支.
对不起我的无知 - 但是获得Gitosis或Gitolite会有什么好处.
我有一台Synology NAS服务器在运行,但我不能只在NAS上的任何文件夹上创建一个"裸"吗?
问候
有没有办法在git中显示每个分支的最新提交?
我在git中有一个代码库,我已经设置了一段时间.它有几个分支用于不同的功能.我需要进入并更新/解决一些代码然而我选择将它们命名为太一般,现在我无法分辨我最后一个工作,甚至哪个具有我的功能.
理想情况下,我希望在每个分支中看到最后一次提交,以便概述我上次遗留的内容.有命令这样做吗?我只需要看看我上次工作的地方.我想避免切换到每个分支并查看其日志.
git ×11
branch ×2
gitolite ×2
gitosis ×2
bundle ×1
git-branch ×1
git-clone ×1
git-fetch ×1
git-remote ×1