Microsoft现在在其Team Foundation Service上支持Git存储库.我在Team Foundation Service上有一个帐户,我想将现有的Git存储库推送到那里的项目.
每当我尝试进行搜索时,我会不断发现TFS-GIT或GIT-TF等内容.我很确定我不想要那些,因为我认为这些更改为代码存储库的Team Foundation Server模型,而这不是我想要的.
具体来说,我有一个现有的Git存储库,我想推送到TFService.
安装msysgit时,安装程序会显示与系统路径相关的3个选项:
永远不要改变Windows环境.使用此选项,您必须使用"bash"shell来使用git.
将git\bin目录添加到PATH环境变量,但不覆盖一些内置的Windows工具.stackoverflow-ian Gabe Moothart 在评论中告诉我,这个选项会让一些git操作失败!这些操作是什么?我应该担心吗?
与2相同但覆盖一些默认系统工具.这些工具是什么?窗户的哪些部分依赖于它们?这会伤到实践吗?
我想到了另一个问题,与系统PATH无关.
如果我的项目目录中有符号链接和硬链接怎么办?git知道如何处理这些吗?或者,它是否会遭受无限递归,如果说,目录结构是这样的,某些文件夹实际上是其父亲之一的符号链接?
Git项目中包含第二个项目,其内容正在独立工作.
子模块不能用于较小的子模块,因为当用户尝试克隆或下载"父"时,甚至必须包含子项目.
不能使用子树合并,因为正在积极开发子项目,并且子树合并使得将这些更新合并回原始项目非常困难.
我被告知这个解决方案在SVN世界中被称为"供应商分支",并且它在Git中是如此简单,以至于甚至不需要寻址.网上有很多半生不熟的教程.
尽管如此,我似乎无法让它发挥作用.
有人可以(非常好吗?)解释我如何创建一个结构,一个项目存在于另一个项目中,并且可以从同一个工作目录开发和更新.理想情况下[或者更确切地说:如果不支持则非常重要]当客户端尝试下载"父"项目时,应该自动给他最新版本的子项目.
请不要向我解释我应该如何使用子模块或子树合并甚至SVN:Externals.这个线程是以下SO线程的产物,如果在那里错过了某些东西,请把它贴在那里.这个主题试图了解如何供应商分支机构,以及更长,更清晰,更笨拙的解释,我收到的解释会更快乐.
解决问题:通过子模块显示外部代码依赖性:感谢VonC!
当前问题:在两个文件夹中有一个没有重复内容的子模块
当前问题的临时解决方案:将文件夹的名称更改为bin-github,因为作为子模块的文件夹的名称是bin.这意味着我需要在我的家中复制内容.
我的HOME文件夹依赖于〜/ bin.我的文件位于主页的存储库Masi,而位于Github 的repo bin的〜/ bin .我家的相关文件夹结构:
~
|-- [drwxr-xr-x] bin
| -- fileA
` -- folderA
...
Run Code Online (Sandbox Code Playgroud)
我想知道如何在Masi上显示make~/bin是Git的一个子模块.
你怎么能〜/ bin中的〜/ bin是我的Git的一个子模块?
#3回复VonC的评论:
我的.gitmodules
[submodule "bin"]
path = bin
url = git://github.com/masi/bin.git
Run Code Online (Sandbox Code Playgroud)
我觉得我不需要再添加子模块了,因为我已经在我的.gitmodules中了.
我跑
Sam master $ git submodule update
Sam master $ git submodule foreach git pull
Sam master $ ls bin
Run Code Online (Sandbox Code Playgroud)
#2回复VonC的回答:
我将.gitmodules更改为以下内容,以便在我的家中没有它的副本.
[submodule "bin"]
path = bin
url = git://github.com/masi/bin.git
Run Code Online (Sandbox Code Playgroud)
这似乎是一个不同的情况,因为我不能像上面那样拉动子模块bin文件夹.
我现在在一个新克隆的git-repo上得到以下内容 …