4

次のようなレポがいくつかあります。

サイト 1:

  • ライブラリ:

サイト 2:

  • ライブラリ:

ライブラリ:

ご覧のとおり、lib は両方のサイトで共有されています。今私が使用するとき

[master] git fetch lib

何も起こりません。その後、私は使用します:

[master] git merge --squash -s subtree --no-commit lib

次に、サイトに属する大量のファイルの削除を開始します。

これを試してみると: 共有ライブラリ リモートからライブラリ サブプロジェクトを更新し ます http://www.codeproject.com/Articles/562950/GitplusSubtreeplusMergeplus-e2-80-93TheplusQuickpl

[master] git checkout lib
Checking out files: 100% (4521/4521), done.
Switched to branch 'lib'
[lib] git pull
Already up-to-date.

次に、マスターにチェックアウトして、次のコマンドを実行します。

git merge --squash -s subtree --no-commit lib

これにより、サイトから大量のファイルがすべて削除され、そのようないくつかのファイルが lib のサブフォルダーに残されます。これにより、lib が正しいバージョンに更新されないのはなぜですか? ファイルをサイトに残しますか?

リセット後、プロジェクトを元に戻します

git reset --hard origin/master

lib を更新するにはどうすればよいですか?

リモートブランチのセットアップがあります。

$ git remote -v
lib     https://github.com/***/lib.git (fetch)
lib     https://github.com/***/lib.git (push)
4

1 に答える 1

5

サブツリーをアプリ ( git remote add subtree_name git@github.com:user/subtree_proj.git)に既に設定していることを考慮すると、次のことを行う必要があります。

1- サブツリーの分割

git subtree split -P lib -b new_branch_to_splitここで、libはサブツリー プロジェクトへのパスで、 にはコードnew_branch_to_splitのみが含まれ、リポジトリlibにプッシュされますlib

2- サブツリーのプッシュ

git push subtree_name new_branch_to_split:original_subtree_branch(i.e. master)

また

git push subtree_name new_branch_to_split:master

3-一時ブランチを常に削除する

git branch -D new_branch_to_split

4-サブツリープロジェクトを使用している他のプロジェクトの変更をプルします

git subtree pull -P lib subtree_name original_subtree_branch(i.e. master)

于 2013-09-06T18:51:38.693 に答える