哪个是存储源代码版本的系统的正确名称,如SVN或TFS?
我一直称它为源代码控制,但像维基百科这样的地方称它为版本控制?
为了使像这样的更复杂的网站有两个标签?
我有一个/foo/bar大型提交历史和多个分支的git repo .
我现在想要/foo/baz处于相同的回购中/foo/bar,这(我认为)意味着我需要创建一个新的回购/foo.但是,我想保留我所做的变化的历史/foo/bar.
我首先想到的是git format-patch,然后是apply,但是不保留提交消息.
跑步有什么区别
git submodule update --remote
Run Code Online (Sandbox Code Playgroud)
VS
cd <submodule directoy>
git pull
Run Code Online (Sandbox Code Playgroud)
假设子模块先前已设置为跟踪某个分支:
git submodule add -b master [URL to Git repo]
Run Code Online (Sandbox Code Playgroud) 有人请帮我理解git中的子模块.我知道他们在互联网上受到了很多抨击但是因为我认为git开发人员是聪明人,所以当前行为必须有理由 - 也许是一种解决我的问题的方法.
所以,我有一个项目和一些子模块.该项目有不同的分支,如:
我的子模块经常不会更新(可能每周一次)所以我很好,他们没有自动附加到子模块库的头部.
但是,当我查看旧分支时 - 因为我需要修复旧版软件中的错误 - 我还需要更新子模块.
为什么我需要这样做?
我希望git像svn一样工作.当我在我的主回购中投入工作时,我希望git能够按照以下思路思考:"好吧,他现在想要完成他的工作.我可以看到子模块目前处于修订版abc所以当他在将来的某个时候回到这个提交,他可能想要再次使用相同版本的子模块."
我不能看到一个案例,当你在主存储库中返回3年时,你希望子模块保持当前版本.但是,这个实施必须有理由,对吧?
我真的很想知道你是否有人知道这背后的想法,但无论如何我真的想要一个解决方案.有没有办法告诉git:"我想用这些子模块提交这项工作.如果我在某个时候回到这种状态,我希望子模块也能在正确的版本中检出."
澄清的例子
我的主存储库是一个需要使用SSL的应用程序,我找到了一个我作为子模块添加的SSL库(libSSL).
2010年10月31日,我在我的主存储库(2fd4e1)中创建了一个提交,而子模块指向了libSSL版本3(c67a2d).
时间过去了,libSSl更新到版本34,我调整我的代码,生活很好.
在2013年5月14日,我创建了一个新的提交(28fced)和子模块指向最新版本的libSSL(849ee1).
但是,如果我查看2fd4e1,即使原始提交是使用c67a2d创建的,我的子模块也将保持在849ee1.Git知道我使用c67a2d进行了原始提交,但我没有看到你怎么可能想要另一个子模块而不是创建原始提交的子模块.
似乎父代repo中的git repo不包含在父代的提交中,除非它被设置为子模块.是否可以覆盖此行为并将嵌套的git repo视为任何其他目录?我不想通过子模块依赖外部依赖,但想使用git来管理项目中的这些依赖项.
我希望将Git作为我雇主(250人)公司的主要来源控制.在继续讨论之前,我想回答以下问题.
Git是否有任何特定的最大文件大小限制可以处理?如果是这样,它是什么?
Git推荐的最大存储库大小是多少?这有助于我确定我应该在存储库中设置的内务处理.
这可能吗?想象一下,我有父母和孩子的项目.两者都是git存储库.Child是Parent的子模块.
我是否可以对Parent内部的Child版本进行编辑并提交和推送它们就像常规存储库一样?
或者我需要在某个地方单独克隆Child,我对其进行了更改?
谢谢.
当我将Git子模块添加到这样的Git存储库时,
git submodule add ssh://server/proj1/ proj1
git submodule init
git submodule update
Run Code Online (Sandbox Code Playgroud)
添加的子模块将处于分离的HEAD模式.我不知道那是什么,但我知道子模块将链接到目标存储库的特定修订版.
我不知道它是如何工作的,无论如何它看起来像是一个代理分支.我通过切换到master分支解决了这个问题.
cd proj1
git checkout master
Run Code Online (Sandbox Code Playgroud)
这将切换当前分支实际主HEAD,但这不会更新链接.因此,如果再次克隆整个存储库,它仍将链接到旧版本.
如果我想让它始终与最新版本(HEAD)相关联,我该怎么办?
我想将现有项目(托管在GitHub上)作为我项目的一部分(放入子目录),同时保持历史和更新该项目的能力.我发现可以有三种方法:
(1)变体可能是GitHub的优选变体,因为它们可能共享源.但从逻辑上讲,我的项目不是现有项目的分支.而现有的只是一个模块.此外,我不确定将现有代码移动到子目录中是否可能不会出现问题.我可能更喜欢(2)变体,因为只有一个回购.(3)需要与几个回购合作,但逻辑上是最接近我的情况.
我对此进行了相当多的研究,但我并不确定.在这种情况下你会推荐什么?先感谢您!
该.gitmodule文件仅指定模块存储库URL.怎么git submodule知道要下载哪个版本?它似乎总是检查出最新版本.那么,开发人员如何确保主项目和子模块之间的兼容性?