2009-07-17 9 views
14

私は2つのコードベース、コードベース1、コードベース2を持っています。類似のコンテンツを持つ2つのGitリポジトリをマージできますが、祖先を共有することはできませんか?

私は両方のリポジトリ(ディレクトリ)に...コマンド...

git init 
git add . 
git commit -m "Initial Commit" 

を実行します。

コードベース1とコードベース2のコードには違いがあります。

すでに約0.1%の違いがあるため、私はそれらを分岐できません。ファイル名は同じですが、コードに若干の編集があります。

2つのリポジトリの違いをマージする方法はありますか?

編集:例えば

は、のは、私は次のことを持っているとしましょう。これは私が始めているものです。コードベース1と2の間に若干の違いがあります。

[oldest code case] 
code-base-1/ 
code-base-1/.git [git stuff with already created repo] 
code-base-1/file1 
code-base-1/file2 

code-base-2/ 
code-base-2/.git [git stuff with already created repo] 
code-base-2/file1 
code-base-2/file2 

理想的には、コードベース2は少し新しくなったので削除できました。

どのようにこれらのコードベースをマージすると、最終的にマージされたファイルが1つ出てくるのですか?

答えて

7
cd code-base-1 
git fetch ../code-base-2 master:code-base-2 
git merge code-base-2 

かもしれないが、事実から来る問題もの(異なるSHA-1の最初のノードを持つ)は、2つの異なるリポジトリであり、かつない1つのレポクローン化し、次いで変性。
これは、おそらく 'git fetch'で十分でないことを意味します。

あなたは、単に質問「Merging in changes from outside a git repository」で提案されているようにWinMergeのように、CB1にCB2(コードベース-2)の内容をマージする(それをGitは外部にある)外部ツールを使用することができます。

他のオプションは、フェッチ完了するために、いくつかの移植技術を用いて次のようになります。質問「Can two identically structured git repos be merged when they have never had any common history?

$ cd project1 
$ git config remote.project2.url /path/to/project2 
$ git config remote.project2.fetch 'refs/heads/*:refs/project2/*' 
$ git fetch project 

を参照してくださいプラスのProject1へのProject2のコミットをリンクするグラフトファイル(.git/info/grafts)を変更します。

-2

説明したように、最初のリポジトリを作成します。 2番目のフォルダで

は内容の「.git」と呼ばれるファイル作成:あなたは今のgit diffを実行可能な第2のリポジトリに

gitdir: <path-to-first-repository>/.git 

を、Gitはあなたにマージするコミット/などを追加します変更。

+0

もう少し具体的である可能性があります。たとえば、次のようなものがあるとします。これは私が始めているものです。コードベース1と2の間には若干の違いがあります。 [最古のコードケース] コードベース-1/ コードベース-1 /git [既に作成されたリポジトリを持つgit stuff] code-base-1/file1 code-base-1/file2 code-base-2/ コードベース2/.git [git stuff with already repo] code-base-2/file1 code-base-2/file2 理想的には、少し新しいコードベース-2を削除できました。 これらのコードベースをどのようにマージしますか?だから私は結局、マージされたファイルを持ってきてくれます。 –

+0

コメントは正しくフォーマットされていません。上記を参照してください。 –

4

試行:

+0

これは同じプロジェクトの2つのバージョンに参加します(それぞれのプロジェクトには共通の裁定がありません)。 –

関連する問題