在另一个git仓库中维护一个Git仓库

Gur*_*ngh 18 git github

我有一个包含AngularJS Web应用程序的git repo.

它有一个名为的子文件夹build,它由gulp任务创建.我正在部署到Azure,因此它直接连接到我的bitbucket目录.

我想将build文件夹作为一个单独的git仓库,从中部署Azure应用程序.我如何在git中实现这一点?

Cod*_*ard 33

你有几个选择,如:

  • 子模块
  • 子树

Submodules 允许外部存储库嵌入源树的专用子目录中,始终指向特定的提交.


git submodule

到目前为止,将您的大项目分解为子项目.
现在使用以下命令将每个子项目添加到主项目:

git submodule add <url>
Run Code Online (Sandbox Code Playgroud)

项目添加到您的仓库后,您必须初始化并更新它.

git submodule init
git submodule update
Run Code Online (Sandbox Code Playgroud)

由于Git的1.8.2新的选项--remote加入

git submodule update --remote --merge
Run Code Online (Sandbox Code Playgroud)

fetch来自每个子模块上游的最新变化merge them in,以及子模块check out的最新版本.

正如文档描述的那样:

--remote

此选项仅对update命令有效.不使用超级项目记录的SHA-1来更新子模块,而是使用子模块的远程跟踪分支的状态.

这相当于在每个子模块中运行git pull.


但是,如何在C中的bug修复场景中推送提交,这会影响与父层共享的代码?

再次:使用子模块将您的代码作为其内容的一部分放在主项目中.将其本地放在文件夹中或将其作为子模块的一部分之间的区别在于,在子模块中,内容被管理(提交)到不同的独立存储库.


这是子模块的示意图 - 项目在另一个项目中,其中每个项目都是一个独立的项目.

在此输入图像描述


git subtree

Git子树允许您将任何存储库作为另一个存储库的子目录插入

非常相似,submodule但主要区别在于管理代码的位置.在子模块中,内容放在一个单独的仓库中,并在那里进行管理,允许您将其克隆到许多其他仓库.

subtree 将内容作为根项目的一部分进行管理,而不是在单独的项目中进行管理.

而不是写下如何设置和理解如何使用它,你可以简单地阅读这篇优秀的文章,这将解释一切.

https://developer.atlassian.com/blog/2015/05/the-power-of-git-subtree/


FZE*_*FZE 10

您可以使用git子模块或子树来执行此操作,出于这种原因我使用子模块.

https://git-scm.com/docs/git-submodule

例如:

/mainrepository
/mainrepository/subrepository

cd /mainrepository/subrepository;
git init .
cd ../
git submodule add ./subrepository

then open seperate remote repository in bit bucket then 
cd into ./subrepository
git remote add origin https://bitbucket.com/path/to/subrepository.git
Run Code Online (Sandbox Code Playgroud)

基本上就是这一切.

我没有关于我知道的子树的详细信息,它比子模块更先进.但如果您的需求基本上与子模块匹配,则很容易维护.