2016-03-26 27 views
10

私はAngularJS Webアプリケーションに含まれるgit repoを持っています。別のgitリポジトリ内でGitリポジトリを維持する

gulpタスクによって作成されるbuildというサブフォルダがあります。 Azureにデプロイしているので、直接bitbucketディレクトリに接続しています。

私は、Azureアプリケーションがデプロイされている個別のgitリポジトリとしてビルドフォルダを作成したいと考えています。私はGitでこれをどのように達成するのですか?

+0

私はhttps://git-scm.com/book/en/v2/Git-([サブモジュール]がここで起こって過剰性能いくつかはあるが、あなたはgitのになるはずこっそり疑いを持っていますツール - サブモジュール) –

+1

[git repoを別のgitリポジトリ内に維持する]の複製が可能です。(http://stackoverflow.com/questions/4659549/maintain-git-repo-inside-another-git-repo) –

答えて

16

あなたのようないくつかのオプションがあります:

  • サブモジュール
  • サブツリーを

Submodules外国リポジトリを許可しますソースツリーの専用サブディレクトリに埋め込まれ、常に特定のコミットを指します。

git submodule


あなたがこれまでに行ったように、サブプロジェクトへのあなたの大きなプロジェクトを分割します。投影は、あなたがそれを初期化し、更新する必要があなたのレポTOT追加されると

git submodule add <url> 

を:
は今使用して、あなたの主なプロジェクトの各サブプロジェクトを追加します。

git submodule init 
git submodule update 

Git 1.8。2新しいオプション--remote

ますfetch各サブモジュールの上流から最新の変更、merge them in
git submodule update --remote --merge 

、およびcheck outサブモジュールの最新版を追加しました。 the docsとして

はそれを説明します。

--remote

このオプションは、更新コマンドに対してのみ有効です。スーパープロジェクトの記録したSHA-1を使用してサブモジュールを更新する代わりに、サブモジュールのリモート追跡ブランチのステータスを使用します。

これは、各サブモジュールでgit pullを実行するのと同じです。


しかし、どのように私は、親の層で共有コードに影響を及ぼしCでのバグ修正のシナリオにコミット押すでしょうか?再び

:サブモジュールを使用すると、その内容の一部として、メインプロジェクト内にコードを配置します。フォルダ内にローカルに有するか、またはサブモジュールの一部としてそれを有するとの差がサブモジュールにコンテンツが異なるスタンドアロン・リポジトリに(コミット)に管理されることです。


これは、各プロジェクトがスタンドアロンプ​​ロジェクトである別のプロジェクト内のsubmodule-projectの図です。

enter image description here


git subtree

Gitのサブツリーは、あなたがに非常に類似した別の1

のサブディレクトリとして任意のリポジトリを挿入することができます0が主な違いは、あなたのコードが管理されている場所です。サブモジュールでは、コンテンツは別のレポに配置され、そこで管理され、他のレポにも複製することができます。

subtreeルートプロジェクトの一環としてではなく、別のプロジェクトでコンテンツを管理しています。代わりにそれを設定すると、あなたは、単にそれをすべて説明します。この優れた記事を読むことができ、それを使用する方法を理解する方法を書き留めるの

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

+0

https://stackoverflow.com/questions/47008290/how-to-make-outer-repository-and-embedded-repository-work-as-common-standalone-に記載されているように、サブモジュールとサブツリーがない他のソリューションはありますか? r? – Mithril

5

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 

基本的にはすべてのことについてです。

私が知っているサブツリーに関する詳細な情報はありません。サブモジュールよりも高度です。しかし、あなたのニーズが基本的にサブモジュールと一致すれば、維持するのは簡単です。

+0

外側のレポが内側のレポの同じ枝を指すように......どのように私はこれを達成するのですか –

+0

メインリポジトリとサブモジュールは2つの異なるリポジトリなので、分岐はリポジトリに基づいているため、この。しかし、メインリポジトリは、サブモジュールとしてリポジトリを追加するときにサブモジュールのコミットハッシュを追跡しているので、メインリポジトリに表示されるサブモジュールのブランチを追加すると、サブモジュールの最後のコミットハッシュが変更されます。したがって、基本的にメインブランチもサブモジュールに従います。しかし、それは分岐についてではありません。それでなぜあなたはそれを必要としますか?特別なアプローチはありますか? – FZE

関連する問題