我有一个名为'skeleton'的本地Git存储库,用于存储项目框架.它有一些分支,用于不同类型的项目:
casey@agave [~/Projects/skeleton] git branch
* master
rails
c
c++
Run Code Online (Sandbox Code Playgroud)
如果我想查看一个新项目的主分支,我可以做
casey@agave [~/Projects] git clone skeleton new
Initialized empty Git repository in /Users/casey/Projects/new/.git/
Run Code Online (Sandbox Code Playgroud)
一切都是我想要的.具体来说,新的主分支指向骨架主分支,我可以推拉以移动对基本项目设置的更改.
但是,如果我想要克隆另一个分支,那么什么不起作用.我无法得到它,所以我只拉动我想要的rails分支,例如分支,然后新的存储库有一个master分支,rails默认情况下推送到骨架存储库的分支并从中拉出.
这有什么好办法吗?或者,也许这不是Git想要我构建事物的方式,我当然对此持开放态度.也许我应该有多个存储库,Ruby on Rails骨架存储库跟踪主骨架存储库?任何克隆Ruby on Rails骨架存储库的单个项目.
我想跟踪一个使用git的项目.我不想克隆完整的存储库和完整的历史记录,我只想要最新版本,我希望能够从远程项目更新到新版本.
我尝试过使用git clone,但这会创建整个存储库的副本(文件大小很大),并且跟踪更改会使磁盘空间更大(100mb的文件现在占用超过2gb).
我不打算提交补丁,我不需要历史记录.我只想要像颠覆这样的最新版本.
这可能在git中吗?
有没有办法只从远程Git仓库检索一个特定的提交而不在我的PC上克隆它?远程仓库的结构与我的结构完全相同,因此不会有任何冲突,但我不知道如何做到这一点,我不想克隆那个庞大的存储库.
我是git的新手,有什么办法吗?
该git clone --depth命令选项说
--depth <depth>
Create a shallow clone with a history truncated to the specified number of revisions.
A shallow repository has a number of limitations
(you cannot clone or fetch from it, nor push from nor into it),
but is adequate if you are only interested in the recent history of a large project with a long history,
and would want to send in fixes as patches.
Run Code Online (Sandbox Code Playgroud)
为什么浅克隆有这种限制?为什么它只是一个补丁工作流程?
对于某些项目工作流程,我需要将最新的提交从单个分支传递给编码器,然后让它们能够push(快进)开发到主服务器.这部分是为了安全,知识产权保护和回购规模,部分是为了减少大回购会给天真编码员带来的困惑.是否有允许这样的git工作流程?
更新:根据Karl Bielefeldt的回答,git checkout --orphan …
我对github的互联网速度从来都不快,并且它以50kb/s的速度挥之不去(我的互联网速度是20mbit,这不是很快,但仍比这快得多).根据我的估计,存储库是多gb,因此需要很长时间.
git是否支持使用多线程下载对象,这样我可以最大化我的网速?
(对于tl; dr,请参阅下面的#questions)
我有多个git存储库浅克隆.我使用的是浅克隆,因为它与脏克隆相比要小得多.每个人都克隆着做git clone --single-branch --depth 1 <git-repo-url> <dir-name>.
这工作正常,但我没有看到如何更新它.
当我用标签克隆时,更新没有意义,因为标签是冻结的时间点(据我所知).在这种情况下,如果我想更新,这意味着我想要通过另一个标签克隆,所以我只是rm -rf <dir-name>再次克隆.
当我克隆了主分支的HEAD然后想要更新它时,事情变得更加复杂.
我试过git pull --depth 1但是虽然我不想把任何东西推到远程存储库,它抱怨它不知道我是谁.
我试过了git fetch --depth 1,但是虽然它似乎更新了一些东西,但我检查它是不是最新的(远程存储库上的某些文件的内容与我克隆上的文件不同).
在/sf/answers/1435601401/之后,我试过git fetch --depth 1; git reset --hard origin/master,但有两件事:第一,我不明白为什么git reset需要,第二,尽管文件似乎是最新的,但仍有一些旧文件,以及git clean -df不会删除这些文件.
让克隆创建git clone --single-branch --depth 1 <git-repo-url> <dir-name>.如何更新它以达到相同的效果rm -rf <dir-name>; git clone --single-branch --depth 1 <git-repo-url> <dir-name>?或者是rm -rf <dir-name>再次克隆唯一的方法?
我通常使用下面的命令project.git来获取指定目标中的存档:
git archive master | tar -x -C /home/kave/site/
Run Code Online (Sandbox Code Playgroud)
我想知道是否可以直接从远程存储库归档到目标目录?
我尝试过这样的事情,没有任何乐趣:
git archive master https://kave@dndigital.git.cloudforge.com/myoproject.git | tar -x -C /home/kave/site/
Run Code Online (Sandbox Code Playgroud)
有什么建议?谢谢
有许多git命令,例如git clone --depth 10 <repo>,需要给出修订[ git help revisions] 的数量.
提交和修订之间有什么区别(在git中,而不是说svn)?
或者在尝试计算修订/提交时它是否只显示复数形式,例如,必须通过走向提交及其父母的DAG(有向无环图)或其他一些仔细区分来计算修订?
发出命令时出现以下错误git clone --bare /path/to/repo:
fatal: attempt to fetch/clone from a shallow repository
首先,什么是浅存储库,为什么不让它克隆它?