我已经开始玩Git并遇到过"上游"和"下游"这两个词.我之前见过这些,但从未完全理解它们.这些术语在SCM(软件配置管理工具)和源代码的上下文中意味着什么?
git submodule add -b工作怎么样?
添加具有特定分支的子模块后,新的克隆存储库(之后git submodule update --init)将处于特定提交,而不是分支本身(git status在子模块上显示"当前不在任何分支上").
我无法找到任何信息.gitmodules或.git/config关于子模块的分支或任何具体的承诺,那么,如何Git的数字出来?
此外,是否可以指定标签而不是分支?
我正在使用1.6.5.2版.
使用git子模块和子树之间有什么概念上的区别?
每种情况的典型情况是什么?
我们正在将我们(巨大的)项目转移到git,我们正在考虑使用子模块.我们的计划是在超级项目中有三个不同的头:发布,稳定,最新.项目负责人将处理释放和稳定的分支机构.他们将根据需要移动子模块.
问题是"最新"头.我们希望超级项目"最新"头部跟踪所有子模块的主分支(自动).如果能够显示子模块的所有提交历史,那也很棒.
我看过gitslave,但它不是我们想要的.有什么建议?
在git中是否可以在git仓库中拥有指向特定文件的"链接"?就像git子模块对文件夹所做的那样,但我的问题是关于特定文件,而不是完整目录:
my-project/
class1.java
class2.java
logback.xml (link to a particular file, say https://github.com/theHilikus/JRoboCom/blob/master/jrobocom-core/src/main/resources/logback.xml)
Run Code Online (Sandbox Code Playgroud)
可以看出,在这种情况下,拥有一个完整的子模块文件夹是没有意义的,它只是一个文件.
我很好,链接被锁定到一个特定的提交,但如果它在它自己的项目的生命周期中发生变化,它会更好
需要注意的是,这与文件系统的符号链接无关; 我在谈论对另一个项目,repo,branch或任何东西中的文件的引用.如果文件的内容是重复的而不是文件系统符号链接,那就没问题
许多供应商的Objective-C库(例如facebook-ios-sdk)指示您将其repo的文件/目录的某个子集复制到Xcode项目中.这样做的一个问题是你不知道你有什么版本的供应商代码.另一个原因是,如果您对供应商代码进行更改,则通过Git提交更改并不容易.
作为一个解决方案,我想将每个供应商库添加为我项目的repo的Git子模块,并带有一些额外的设置(例如,在.gitmodules文件中).这样,如果另一个人克隆我的项目git submodule update --init,他们的repo和子模块将具有与我相同的状态,因为他们将使用我设置的相同默认设置:
如何为Git子模块设置上述设置?
有很多网页在那里暗示让svn外部看起来像git子模块的hackish方法.我已经读过一些关于差异的说法,但这似乎不是很基础:
Git子模块链接到另一个项目的存储库中的特定提交,而svn:externals总是获取最新的修订.
为什么这种差异会使它们根本不相容?我们可以假设没有合理的默认值,例如大多数svn:externals指向永不移动的标签吗?
我知道如何迁移具有以下结构的 SVN 存储库
SVN Repo1
+ trunk
+ branches
+ tags
Run Code Online (Sandbox Code Playgroud)
我可以使用以下命令
git svn clone svn://hostname/Repo1/ --prefix=svn/ --no-metadata --authors-file "authors-transform.txt" --stdlayout c:\mytempdir
Run Code Online (Sandbox Code Playgroud)
请参阅https://learn.microsoft.com/en-us/azure/devops/repos/git/perform-migration-from-svn-to-git和/sf/answers/278047241/。
但是当我的 SVN 存储库具有以下结构时
SVN Repo2
+ Project1
+ trunk
+ branches
+ tags
+ Project2
+ trunk
+ Project1 <-- external to ^/Project1/trunk
+ branches
+ tags
+ Project3
+ trunk
+ Project1 <-- external to ^/Project1/trunk
+ branches
+ tags
Run Code Online (Sandbox Code Playgroud)
我不知道如何将其转换为 git。
我应该将每个项目迁移到 吗Repo2?在这种情况下,svn 外部会丢失。或者有什么办法可以让这个洞迁移Repo2吗?
备注:SVN 客户端用户只是签出Project2 …
我想git克隆一个svn存储库,除了svn的根文件夹中的一个文件夹.
我该怎么做?
git svn clone svnrepo/dir/sb-dir/如果我只sb-dir需要,我可以做,但我需要dir除design文件夹之外的所有文件夹(和文件)
我们有一组MSVS解决方案(解决方案"A","B","C",......),它们在程序集中共享基本功能,称为"Common.dll".
有3-5个活跃的解决方案(正在开发中),而其他解决方案是被动的,几乎不会被重建.
Common.dll总是在开发中.如何保存我的解决方案代码有多种选择,您会建议什么以及为什么?
一个).将common.dll源代码放到每个解决方案中.优点:它将帮助主动解决方案与common.dll并排增长,而被动解决方案将可编译.缺点:在活动解决方案之间同步活动的common.dll代码很困难
B).将common.dll二进制代码放到每个解决方案中.优点:所有项目都可以编译,而common.dll代码将集中.缺点:很难与common.dll并行增加活动解决方案
C).引用每个项目到最后的common.dll二进制文件看起来像B.但如果common.dll会增长并改变它的接口(有些人可能会说接口应该始终保持不变),它会带来被动解决方案的问题
d).?
先感谢您!
我想将 SVN 存储库导入 GitHub Enterprise 存储库
与此相关的问题有很多,其中大多数都可以通过 Git 子模块或 Git 子树来解决。
就我而言,我有两个存储库:
该模块存储库具有以下架构:
foolib/
moduleA/
...
moduleB/
...
...
Run Code Online (Sandbox Code Playgroud)
对于该项目,只有很少的模块foolib被用作svn:externals. 例如,这个主项目仅使用moduleAfrom foolib.
正如这个问题中提到的,一种可能的解决方案是使用稀疏结帐。我猜 Git 子树也能做到这一点。不幸的是它没有解决主要问题。
如果我的项目很小,只要我从 得到一些东西foolib,即使使用 space-checkout,我也会检索到整个历史记录foolib(例如2 GB)。SVN 不存在这个问题,因为svn:externals属性只获取它需要的内容,而不是整个历史记录。
我可以想象做一些愚蠢的事情,例如使用中列出的提交动态重新创建本地稀疏存储库git log --follow foolib/moduleA。但我认为这不是一个好的解决方案。
在 Git 中获得类似行为而无需获取foolib我只需要几个模块的所有内容的整个历史记录的正确工作流程是什么?
我已经分叉了MapBox-ios-sdk并对其进行了一些更改.更新版的sdk就在这里,我将更改合并到了fork中.MapBox-ios-sdk还包含SMCalloutView,它是MapBox-ios-sdk中的子模块.然而,官方sdk的版本使用了更新的,更新的SMCalloutView,它不在我的分支中.
我如何让它更新
我用这里的说明更新了我的sdk .但是,这不会更新SMCalloutView.我也尝试过git submodule update --recursiveMapBox-ios-sdk的级别,没有任何反应.事实证明,这是因为SMCallOutView处于"无分支"状态.为什么它在"没有分支"?如何将所有子模块置于"无分支"状态之外?如果它处于"无分支",那么我永远不会知道需要更新的子模块(或甚至更多嵌套)的子模块或子模块.
git ×11
svn ×4
git-svn ×3
git-subtree ×2
.net ×1
clone ×1
definition ×1
git-track ×1
github ×1
terminology ×1
versioning ×1
windows ×1