我需要将完整的repo转移到新的非联网机器,最好是作为单个文件实体.git的捆绑允许git fetch
,git pull
操作风格在sneakernet环境,但似乎假设你已经在目标计算机上回购的工作版本.
什么是正确的调用:
在初始化新的本地存储库后,存在一个description
文件.
它用于什么以及如何格式化?或者它只是一个本地帮助文件.
这个线程访问git的`description'文件建议一种风格,但没有手册页或其他参考,为什么它应该是它的方式.
有极少数的Q&A的上的git grafts
对replace
.搜索[git] + grafts + replace只发现了两个与5. what-are-git-info-grafts-for和git-what-a-a-graftcommit-or-a-graft-id相关的两个.git.wiki.kernel.org:GraftPoint上还有一个注释
被移植现在完全取代由replace
和filter-branch
,或者他们仍然需要一些特殊的情况(和向后兼容)?
一般来说,它们如何不同(例如哪些在回购之间运输),它们通常是如何相同的?我已经看到Linus似乎并不关心目前在关于提交代数的讨论(最大父母回到任何根种类)的问题"移植已经不可靠了."
编辑:找到更多信息.
搜索www.kernel.org/pub/software/scm/git/docs graft
仅找到3个结果:
稍微宽泛的搜索发现RelNotes/1.6.5.txt包含:
- refs/replace/hierarchy被设计为可用作"移植"机制的替代,其附加优势是它可以跨存储库传输.
不幸的是,gitrepository-layout(5)还没有更新refs/replace/repository布局信息(和注释),也没有任何信息/移植的弃用说明.
这更接近支持我的想法,但我欢迎任何确认或澄清.
该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 …
我的项目有许多测试PC,100%的网络外.我们使用USB驱动器也可以从这些PC传输文件.在这些PC的测试期间发生了一些开发.我们传输更新文件的拉链,并在zip文件的名称中编码"版本信息".
我的问题是如何最好地使用Git来管理项目的办公室PC和测试PC之间的sneakernet文件传输(或repos,或什么?).对于笔记本电脑用户而言,这种"用例"通常不会出现在"网外"并且在某个角落咖啡馆中开发,后来又重新上网.
有没有人在这种情况下有经验?
另请参阅git bundle create --all answer以传输完整的repo
我正在使用msysgit(1.7.9),我正在寻找正确的git ls-files
命令调用,以显示当前级别的(跟踪的)文件和目录,无论是从索引还是当前工作目录,如果这是更轻松.
基本上它会给出一个类似于你在Github上看到的目录列表.来自Windows,我不太熟悉正确的方法(?).
有许多git命令,例如git clone --depth 10 <repo>
,需要给出修订[ git help revisions
] 的数量.
提交和修订之间有什么区别(在git中,而不是说svn)?
或者在尝试计算修订/提交时它是否只显示复数形式,例如,必须通过走向提交及其父母的DAG(有向无环图)或其他一些仔细区分来计算修订?
Git-Gui有选项设置(在编辑>>选项下).每个选项设置的某处是否有描述?
我知道Git-Gui 手册页和Git-config 手册页命令行有Man页面,但我找不到任何将选项对话框复选框绑定到潜在命令行选项的内容.(控制问题的反转;-)
我在Git 1.7.3.1.msysgit.0和Git-Gui 0.3.GITGUI上有比Nathanj的nathanj.github.com/gitguide/creating.html"Windows上的Git指南" 更多的选项
我有一个大型(ish)项目[90个文件650kb代码],我现在在Git中管理.我有一些独立的测试工具用于尝试/测试新的低级别计算位,这些位稍后合并到主代码及其分支中(目前通过复制粘贴!).
管理测试线束的推荐最佳实践是什么?
它们应该在一个单独的存储库中,还是应该在主仓库中创建一个空分支来启动它,或者只是创建一个"Test Harness"分支并覆盖旧代码?
希望的好处是主分支中的测试代码将与测试的代码明显"相同".
我在Windows(msysgit)上,我是在公司中使用Git的'探险家'.
Git做了merge
魔术,然后让用户解决真正的冲突,这应该是应有的.我正在寻找基本git合并的方式和原因以及它如何使用暂存区域的低级描述.
即使考虑到它是"比喻"而不是重述Git历史的事实(顺便提一下你可以在Git Wiki上找到一些细节),有一点仍然存在:解释临时区域是IMVHO的不良做法在将更改拆分为多个提交和/或与dity树进行匹配的方面,即未更改某些更改.临时区域的主要优势(除了是隐含待添加区域的其他SCM的显式版本)正在处理CONFLICTED MERGE,我认为应该如何解释它.
该git merge
手册页识别阶段合并的1/2/3元素,但显然不会进入理由和目的的细节.
民间可以就任何关于git如何以及为什么设法达到其他人没有的结果的文章提出建议(除了在Wincent博客中详细介绍的Linus V Bram ),即所谓的琐碎部分?
大多数网络文章都假设合并"刚刚发生",我没有找到解释问题的任何东西(例如需要小提交,共同提交的价值等).