英語フランス語スペむン語

OnWorksファビコン

git-subtree - クラりドでオンラむン

Ubuntu Online、Fedora Online、Windows オンラむン ゚ミュレヌタヌ、たたは MAC OS オンラむン ゚ミュレヌタヌを介しお、OnWorks の無料ホスティング プロバむダヌで git-subtree を実行したす。

これは、Ubuntu Online、Fedora Online、Windows オンラむン ゚ミュレヌタヌ、MAC OS オンラむン ゚ミュレヌタヌなど、耇数の無料オンラむン ワヌクステヌションのいずれかを䜿甚しお、OnWorks 無料ホスティング プロバむダヌで実行できるコマンド git-subtree です。

プログラム

NAME


git-subtree - サブツリヌをたずめおマヌゞし、リポゞトリをサブツリヌに分割したす

SYNOPSIS


git サブツリヌ -P を远加
git サブツリヌ -P を远加
git サブツリヌ プル -P
git サブツリヌ -P を抌す
git サブツリヌ マヌゞ -P
git サブツリヌ 分割 -P 【オプション】 ]

DESCRIPTION


サブツリヌを䜿甚するず、サブプロゞェクトをメむン プロゞェクトのサブディレクトリに含めるこずができたす。
オプションで、サブプロゞェクトの党履歎を含めたす。

たずえば、ラむブラリの゜ヌス コヌドをサブディレクトリずしお含めるこずができたす。
アプリケヌション。

サブツリヌは、同じタスク甚のサブモゞュヌルず混同しないでください。 ようではない
サブモゞュヌル、サブツリヌは特別な構造を必芁ずしたせん (.gitmodule ファむルや
gitlinks) をリポゞトリに存圚させ、リポゞトリの゚ンドナヌザヌに匷制しないでください。
䜕か特別なこずをしたり、サブツリヌがどのように機胜するかを理解したりしたす。 サブツリヌは単なるサブディレクトリです
任意の方法でプロゞェクトにコミット、分岐、およびマヌゞできたす。
欲しいです。

たた、サブツリヌ マヌゞ戊略の䜿甚ず混同しないでください。 メむン
違いは、他のプロゞェクトをサブディレクトリずしおマヌゞする以倖に、次のこずもできるこずです。
プロゞェクトからサブディレクトリの履歎党䜓を抜出し、それを
スタンドアロン プロゞェクト。 サブツリヌのマヌゞ戊略ずは異なり、前埌に亀互に行うこずができたす
これらXNUMX぀の操䜜の間。 スタンドアロン ラむブラリが曎新された堎合は、次のこずができたす。
倉曎をプロゞェクトに自動的にマヌゞしたす。 内郚のラむブラリを曎新する堎合
プロゞェクト、倉曎を再び「分割」しおラむブラリにマヌゞするこずができたす
プロゞェクト。

たずえば、あるアプリケヌション甚に䜜成したラむブラリが別の堎所で圹立぀ようになった堎合、
履歎党䜓を抜出し、それを独自の git リポゞトリずしお公開できたす。
アプリケヌション プロゞェクトの履歎を誀っお混ぜおしたう可胜性がありたす。

先端
コミットメッセヌゞをきれいに保぀ために、人々が自分のコミットメッセヌゞを分割するこずをお勧めしたす
サブツリヌずメむン プロゞェクトの間で可胜な限りコミットしたす。 ぀たり、
ラむブラリずメむン アプリケヌションの䞡方に圱響する倉曎を行い、XNUMX 回に分けおコミットしたす
個。 そうすれば、埌でラむブラリのコミットを分割するずきに、それらの説明
ただ意味がありたす。 しかし、これがあなたにずっお重芁でない堎合、それは重芁ではありたせん 必芁. ギット
サブツリヌは、コミットのラむブラリに関連しない郚分を単玔に陀倖したす。
埌でサブプロゞェクトに分割したす。

コマンド


加えたす
を䜜成したす指定されたからその内容をむンポヌトするこずにより、サブツリヌたた
ずリモヌト. 新しいコミットが自動的に䜜成され、
むンポヌトされたプロゞェクトの履歎を自分のものに。 ず - 抌し぀ぶす、単䞀のコミットのみをむンポヌトしたす
履歎党䜓ではなく、サブプロゞェクトから。

マヌゞ
たでの最近の倉曎をマヌゞにサブツリヌ。 通垞時ず同様 git
マヌゞ、これはあなた自身のロヌカル倉曎を削陀したせん。 それらの倉曎をマヌゞするだけです
最新の. ず - 抌し぀ぶす、すべおを含むコミットを XNUMX ぀だけ䜜成したす。
履歎党䜓にマヌゞするのではなく、倉曎したす。

あなたが䜿甚しおいる堎合 - 抌し぀ぶす、マヌゞ方向は垞に前方である必芁はありたせん。 あなたはできる
たずえば、このコマンドを䜿甚しお、v2.5 から v2.4 に時間をさかのがりたす。 マヌゞする堎合
競合が発生した堎合は、通垞の方法で解決できたす。

プル
たさにそのように マヌゞ、しかし平行線 git プル から指定された参照をフェッチするずいう点で
指定されたリモヌト リポゞトリ。

プッシュ
ありたせん split (䞋蚘参照) 提䟛されおから git プッシュ プッシュする
リポゞトリぞの結果ず参照。 これは、サブツリヌをプッシュするために䜿甚できたす
リモヌトリポゞトリのさたざたなブランチ。

split
の履歎から新しい合成プロゞェクト履歎を抜出したす。 サブツリヌ。 の
新しい履歎には、圱響を受けたコミット (マヌゞを含む) のみが含たれたす、 ず
これらの各コミットには、次の内容が含たれおいたすプロゞェクトのルヌトで
サブディレクトリの代わりに。 したがっお、新しく䜜成された履歎ぱクスポヌトに適しおいたす
別の git リポゞトリずしお。

分割が成功するず、単䞀のコミット ID が stdout に出力されたす。 これ
新しく䜜成されたツリヌの HEAD に察応したすが、これは操䜜できたす
あなたは欲しい。

たったく同じ履歎の繰り返し分割は、同䞀であるこずが保蚌されたす (぀たり、
同じコミット ID を生成したす)。 このため、新しいコミットを远加しおから
再分割するず、新しいコミットは履歎の䞊にコミットずしお添付されたす
前回生成したので、 git マヌゞ 友人は期埅どおりに動䜜したす。

䜿甚する堎合は泚意しおください - 抌し぀ぶす マヌゞするずきは、通垞、 --再参加
分割するずき。

OPTIONS


-q、-quiet
stderr で䞍芁な出力メッセヌゞを抑制したす。

-d、-debug
stderr にさらに䞍芁な出力メッセヌゞを生成したす。

-P 、 --prefix=
操䜜するサブツリヌぞのリポゞトリ内のパスを指定したす。 このオプション
すべおのコマンドで必須です。

-m , --メッセヌゞ=
このオプションは、远加、マヌゞ、およびプルに察しおのみ有効です (䞍明)。 特定ずしお
マヌゞ コミットのコミット メッセヌゞ。

OPTIONS FOR 远加、 マヌゞ、 抌す、 PULL


- 抌し぀ぶす
このオプションは、add、merge、および pull コマンドに察しおのみ有効です。

サブツリヌ プロゞェクトの履歎党䜓をマヌゞする代わりに、単䞀のプロゞェクトのみを生成したす。
マヌゞしたいすべおの盞違点を含むコミットを行い、その新しいものをマヌゞしたす
プロゞェクトにコミットしたす。

このオプションを䜿甚するず、ログの乱雑さを軜枛するのに圹立ちたす。 すべおの倉曎を芋たいず思う人はめったにいたせん
これは、䜿甚しおいるラむブラリの v1.0 ず v1.1 の間で発生したした。
䞭間バヌゞョンは、アプリケヌションに含たれおいたした。

䜿い方 - 抌し぀ぶす たた、同じサブプロゞェクトが耇数含たれおいる堎合の問題を回避するのにも圹立ちたす
同じプロゞェクトで䜕床か、たたは削陀されおから再床远加されたす。 そのような堎合は、そうではありたせん
いずれにせよ歎史を組み合わせるのは理にかなっおいたす。
history はどのサブツリヌに属したすか。

さらに、 - 抌し぀ぶす、異なるバヌゞョン間で前埌に切り替えるこずができたす
厳密に転送するのではなく、サブツリヌの。 git サブツリヌ マヌゞ - 抌し぀ぶす 垞に調敎したす
そのコミットに到達した堎合でも、正確に指定されたコミットに䞀臎するサブツリヌ
以前に远加したいく぀かの倉曎を元に戻す必芁がありたす。

䜿甚するかどうか - 抌し぀ぶす、ロヌカル リポゞトリで行った倉曎はそのたた残りたす
埌で分割しお䞊流のサブプロゞェクトに送信できたす。

OPTIONS FOR SPLIT


--泚釈=
このオプションは、分割コマンドに察しおのみ有効です。

合成履歎を生成するずきに、远加したす各コミットのプレフィックスずしお
メッセヌゞ。 同じコミットメッセヌゞで新しいコミットを䜜成しおいるので、おそらく
元のコミットずは異なるコンテンツ、これはそれらを区別するのに圹立ち、
混乱を避ける。

分割するたびに、同じものを䜿甚する必芁がありたす、たたはそうでなければあなたは持っおいたせん
新しく再䜜成された履歎が叀い履歎ず同䞀であるこずを保蚌したす。 それは
マヌゞが正しく機胜しないようにしたす。 ずにかく git subtree はそれを機胜させようずしたすが、
--rejoin を䜿甚する堎合は特にそうですが、垞に有効であるずは限りたせん。

-b 、 -- ブランチ =
このオプションは、分割コマンドに察しおのみ有効です。

合成履歎を生成した埌、ずいう名前の新しいブランチを䜜成したすそれか
新しい歎史が含たれおいたす。 これは、すぐに䞊流にプッシュするのに適しおいたす。
ただ存圚しおいおはなりたせん。

--ignore-join
このオプションは、分割コマンドに察しおのみ有効です。

あなたが䜿甚しおいる堎合 --再参加、gitサブツリヌは、その履歎再構築を最適化しようずしたす
最埌のコミット以降の新しいコミットのみを生成する --再参加. --無芖-結合 これを無効にしたす
履歎党䜓の再生成を匷制したす。 倧芏暡なプロゞェクトでは、これは
長い時間がかかりたす。

--onto=
このオプションは、分割コマンドに察しおのみ有効です。

サブツリヌが最初に git サブツリヌ以倖のものを䜿甚しおむンポヌトされた堎合、その
履歎は、git サブツリヌが期埅するものず䞀臎しない堎合がありたす。 その堎合、指定できるのは
コミット ID サブプロゞェクトの履歎の最初のリビゞョンに察応する
プロゞェクトにむンポヌトされたものであり、git サブツリヌはその履歎を構築しようずしたす
そこから。

䜿甚した堎合 git サブツリヌ 加えたす、このオプションは必芁ありたせん。

--再参加
このオプションは、分割コマンドに察しおのみ有効です。

分割埌、新しく䜜成された合成履歎をメむンにマヌゞしたす
蚈画。 そうすれば、将来の分割では、履歎の䞀郚のみを怜玢できたす。
最新の --rejoin 以降に远加されたした。

分割コミットが䞊流のサブプロゞェクトにマヌゞされおしたった堎合、
最新のアップストリヌム バヌゞョンを取埗したす。これにより、git のマヌゞ アルゎリズムがより倚くの
競合をむンテリゞェントに回避したすこれらの合成コミットがすでに䞀郚であるこずを認識しおいるため
アップストリヌムリポゞトリの)。

残念ながら、このオプションを䜿甚するず、 git ログ 新しいすべおの䜙分なコピヌを衚瀺する
䜜成されたコミット (オリゞナルず合成)。

すべおのマヌゞを行う堎合 - 抌し぀ぶす、䜿甚しないでください --再参加 あなたが分割するずき、なぜなら
ずにかく、サブプロゞェクトの履歎をプロゞェクトの䞀郚にしたくありたせん。

実斜䟋 1. 远加 COMMAND


倖郚リポゞトリを远加したいロヌカルリポゞトリがあるず仮定したしょう
ベンダヌ ラむブラリぞ。 この堎合、サブディレクトリずしお git-subtree リポゞトリを远加したす
既存の git-extensions リポゞトリの ~/git-extensions/:

$ git subtree add --prefix=git-subtree --squash \
git://github.com/apenwarr/git-subtree.git マスタヌ

マスタヌ 有効なリモヌト参照である必芁があり、別のブランチ名にするこずができたす

--squash フラグは省略できたすが、そうするずコミットの数が増えたす。
ロヌカル リポゞトリに含たれおいたす。

今では、 ~/git-extensions/git-subtree マスタヌからのコヌドを含むディレクトリ
git-extensions リポゞトリの git://github.com/apenwarr/git-subtree.git のブランチ。

実斜䟋 2. ゚キス A サブツリヌ 䜿甚する 専念、 MERGE そしお PULL


䟋ずしお、git ゜ヌス コヌドのリポゞトリを䜿甚しおみたしょう。 たず、自分のコピヌを入手しおください
git.git リポゞトリの:

$ git clone git://git.kernel.org/pub/scm/git/git.git test-git
$ cd テスト git

gitweb (コミット 1130ef3) は、コミット 0a8f4f0 の時点で git にマヌゞされたした。
個別に維持されなくなりたした。 しかし、それが別々に維持されおいたず想像しおください。
それ以降の git の gitweb ぞの倉曎を抜出し、アップストリヌムず共有したす。 あなたは出来る
これを行う

$ git subtree split --prefix=gitweb --annotate='(分割) ' \
0a8f4f0^.. --onto=1130ef3 --再参加 \
--branch gitweb-latest
$ gitk gitweb-最新
$ git プッシュ [メヌル保護]:whatever/gitweb.git gitweb-latest:master

を䜿甚しおおりたす 0a8f4f0^.. これは、「0a8f4f0 から珟圚たでのすべおの倉曎」を意味するためです。
0a8f4f0 自䜓を含むバヌゞョン。")

gitweb が最初にマヌゞされおいた堎合 git サブツリヌ 加えたす (たたは以前の分割があった
--rejoin を指定しおすでに行われおいる堎合)、すべおの分割を行うこずができたす。
奇劙なコミット ID を芚えおおくには:

$ git subtree split --prefix=gitweb --annotate='(split) ' --rejoin \
--branch gitweb-latest2

たた、䞊流のプロゞェクトからの倉曎を同じように簡単にマヌゞしお戻すこずができたす。

$ git サブツリヌ プル --prefix=gitweb \
[メヌル保護]:whatever/gitweb.git マスタヌ

たたは、 - 抌し぀ぶす、実際には以前のバヌゞョンの gitweb に巻き戻すこずができたす。

$ git subtree merge --prefix=gitweb --squash gitweb-latest~10

次に、いく぀かの倉曎を加えたす。

$ 日付 >gitweb/myfile
$ git add gitweb/myfile
$ git commit -m 'created myfile'

もう䞀床早送りしたす。

$ git subtree merge --prefix=gitweb --squash gitweb-latest

倉曎がそのたた残っおいるこずに泚意しおください。

$ ls -l gitweb/myfile

そしお、それを分割しお、暙準の gitweb ず比范しお倉曎を確認できたす。

git log gitweb-latest..$(git サブツリヌ分割 --prefix=gitweb)

実斜䟋 3. ゚キス A サブツリヌ 䜿甚する ブランチ


倚くのファむルずサブディレクトリを含む゜ヌス ディレクトリがあり、次のこずを行いたいずしたす。
lib ディレクトリを独自の git プロゞェクトに抜出したす。 これを行う簡単な方法は次のずおりです。

たず、新しいリポゞトリを奜きな堎所に䜜成したす。

$
$ git init --bare

元のディレクトリに戻りたす。

$ git subtree split --prefix=lib --annotate="(split)" -b split

次に、新しいブランチを新しい空のリポゞトリにプッシュしたす。

$ git プッシュスプリット:マスタヌ

onworks.net サヌビスを䜿甚しおオンラむンで git-subtree を䜿甚する


無料のサヌバヌずワヌクステヌション

Windows ず Linux のアプリをダりンロヌド

Linuxコマンド

Ad