問題タブ [git-subtree]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
git - 作業コピーにサブツリーが含まれていることを確認する方法は?
次の作業コピー構造があると仮定しましょう:
と
ここで、次の方法でサブプロジェクトを追加したとしgit subtree
ます。
そのような
と
このプロジェクトにしばらく取り組んでいないと仮定すると、サブプロジェクトのルートを特定するにはどうすればよいでしょうか? たとえば、「サブツリー化」した場所と正しいリモートを特定するにはどうすればよいでしょうか。または、「サブツリー化」したことをどのように識別しますか?
git - git サブツリーの変更をアップストリーム リポジトリにプッシュすると失敗する
プロジェクトに組み込む前に、git のサブツリーが機能することを確認しようとしています。サブツリーの変更をアップストリーム リポジトリにプッシュするときに問題が発生しました。
セットアップは、2 つのリポジトリと がsub
ありmain
、これにはリポジトリが としてmain
含まれています。sub
subtree
次に、次のことを行います。
- 最初のコミットで両方のリポジトリを初期化します。
sub
リポジトリを直接更新します (つまり、外部main
)。sub
リポジトリ内からリポジトリを更新しますmain
。sub
(を使用して) への変更をgit subtree split
別のブランチに分割し、それをチェックアウトします。- アップストリームをリポジトリにプッシュしようとし
sub
ます。当然、このプッシュは拒否されます。これは、への直接の更新が失われるためsub
です。 - リポジトリから新しい変更をプルし
sub
ます。 - アップストリームをリポジトリにプッシュしようとし
sub
ます。今回は、動作するはずですが、動作しません。
この問題をカプセル化するスクリプトを作成しました。subtree
モジュールを有効にしてgitバージョン1.8.2.1を使用しています。スクリプトは次のとおりです。
出力は次のとおりです。
以降git pull
のコマンド ( のsplit-branch
ブランチからmain
) は、「既に最新です」と言うだけです。
私が本当に混乱しているのは、私が知る限り、次の出力git push
で示されているように、コマンドは実際にはアップストリーム リポジトリに早送りコミットを与える必要があるということです。git log
これが私の質問です(最後に):
- このプッシュが拒否されるのはなぜですか?
- 私はそれについて何ができますか?(
--force
オプションを使用することが答えである場合、破壊的なことをしていないことをどのように確認できますか?) subtree
この問題を回避するためにモジュールを使用するより良い方法はありますか? (注: サブモジュールを使用する気はありません。)
git - サブツリーをプッシュするための増え続ける時間を短縮するにはどうすればよいですか?
Git サブツリーを使用して、いくつかのサブプロジェクトをメイン プロジェクトに「リンク」しています (「svn:externals」から来ています)。数週間使用しましたが、サブツリーのリモートに変更をプッシュする時間がコミットごとに増加します。
サブツリーを「クリーンアップ」して、変更をプッシュする時間を短縮する方法はありますか?
git - サブディレクトリからサブツリーをマージできますか?
いくつかのファイルを含む 2 つの git リポジトリを想定してみましょう。
ここで、 ProjectBfoo
のディレクトリをProjectAに含めたいと思います。
私が理解している限り、git subtree add
それprefix
は受信リポジトリにあるはずのパスです。
私はで終わるだろう
foo
このレイアウトを取得するためだけに取得したいことをどうにかして指定できますか?
git - ルートの git サブツリーを一覧表示するにはどうすればよいですか?
たとえば、git remote --verbose
git を実行すると、プロジェクトにあるすべてのリモートが表示され、git branch
すべてのブランチが表示され、現在のブランチが通知されますが、破壊的なコマンドなしですべてのサブツリーを一覧表示するにはどうすればよいでしょうか? git subtree
使用例を示しますが、何もリストしません。サブツリーには、、、、、のみがadd
あります。pull
push
split
merge
git - ブランチからの git サブツリーの追加
を使用してプロジェクトにレポ (牛と呼ばれる) を追加しようとしていgit subtree add
ます。stable
特に、ブランチ(ブランチではない)を追加したいと思いmaster
ます。私は試した:
しかし、これはエラーを返しました
私も試しました:
と:
ハッシュは、stable
ブランチの最新のコミットのものでした。私がオンラインで見た使用例はすべてmaster
コミットに使用されていますsubtree add
が、マスター以外のブランチで使用することは可能ですか?
git - Git: サードパーティ ライブラリのサブディレクトリのみを複製/サブツリー/フィルタ
svn:externals " http://svn.3rdapp.com/project/subdir/subdir/lib/mydir/subdir "
SVN を使用すると、開発者はサードパーティ ライブラリのサブディレクトリを独自のリポジトリのサブディレクトリに含めることができます。
おそらく編集可能なサブツリーとして、サードパーティのライブラリのサブディレクトリのみをプロジェクトに含めたいと思います。新しいアップストリームの変更は私の編集とマージされます。
特にhttps://github.com/openid/php-openid/tree/master/Authは、他のディレクトリからのファイルや履歴なしで Vendor/Auth に含まれています。