0

これがgitフォルダーです。

folder1 / xxx / a / b / c

folder2 / yyy / a / b / c

以前は、SVNを使用してfolder1/xxxfolder2/yyyからマージできました。

Gitで同じことをすることは可能ですか?

4

1 に答える 1

1

最も簡単な解決策は、両方のディレクトリをサブモジュール/サブツリーとして設定することです (それらにはすでにいくつかの個別の履歴/svn リポジトリがありますよね?)。次に、folder1 リポジトリに、folder2 リポジトリを指すリモートを追加するだけで、他のリモートと同じように変更をマージするだけです。

# go to folder1 repository
cd /path/to/folder1repo
# or `cd folder1` if you are familiar with inline submodule editing caveats
# add a remote pointing to folder2 repo
git remote add folder2 /path/to/repo/folder2
# fetch it
git fetch folder2
# merge folder2 into folder1
git merge folder2/master

唯一の注意点は、実際にはサブモジュールがあり、それらのフォルダーをマージするたびにスーパープロジェクトにコミットする必要があることです (たとえば、folder1 が変更され、スーパープロジェクトが別のコミットを指す必要があるため):

cd /path/to/superproject
git add folder1
git commit -m "Merged folder2 submodule into folder1"

サブモジュールの代わりに、両方の forlders のリポジトリのサブツリー マージを使用できます。セットアップはもう少し複雑ですが、プルしてそのようなすべてのサブツリーを更新するだけです :)

ここに素晴らしいサブツリーのチュートリアルがあります: http://nuclearsquid.com/writings/subtree-merging-and-you/

ところで。まったく異なるプロジェクトへのリモートを作成し、単純なマージを使用してそのコードを自分のコードとマージできます:) gitの使用シナリオは無限です:)

于 2012-07-20T08:51:44.340 に答える