2012-04-10 3 views
11

間マージは、次のシナリオを仮定しますGitは2つのフォルダではなく、枝

私はprojectという名前のディレクトリを持っているgitのプロジェクトを持っています。このdirの中で私はいくつかのコミットを作った。 次に、cp -rでこのディレクトリをproject-with-feature-bというディレクトリに複製しました。つまり、手動でブランチを作成しました。

今、2つのブランチのように2つのフォルダをマージしたいのですが、gitを使用する方法はありますか?

私の問題の詳細です。私はそれを複製するためにgit-svnツールで使用しているsvnリポジトリを持っています。そして私は-T/-b/-tオプションを使うことはできませんが、私はマージをしたいと思います。

+0

'project'と' project-with-feature-b'でgitリポジトリを初期化し、 'project'で' git pull-project-with-feature-b'を実行できますか? –

+0

この回避策の問題は、マージを改善するために 'project-with-feature-b'のストーリーを使用しないことです。 –

+0

'git pull --rebase project-with-feature-b'を試しましたか? 2つのプロジェクトの結合履歴を保存する必要があります。 –

答えて

4

はい、あなたは間違いを修正するには遅すぎるわけではないので、技術的にこれを達成できます。あなたが時間内に戻って、この正しい方法を実行する必要があります。git logを通じて戻る

$ mv project-with-feature-b .. 
  • をし、最後のコミットIDを見つける:

    1. あなたのgitリポジトリの外にあなたのproject-with-feature-bフォルダを移動し

      project-with-feature-bディレクトリを作成する前にコミットしてください。 project-with-feature-bディレクトリ内に「コミット」していない場合は、この手順をスキップできます。

    2. コミットIDに基づいてfeature-bという新しいブランチを作成します。手順2をスキップした場合は、feature-bブランチで<commit-id-from-step-2>

      $ git branch feature-b <commit-id-from-step-2> 
      $ git checkout feature-b 
      
    3. を省略し、バックmasterブランチに戻り、にあなたのfeature-bブランチをマージproject-with-feauture-b

      $ rm -rf project 
      $ mv ../project-with-feature-b project 
      $ git add project 
      $ git commit -m "Add feature-b" 
      
    4. のバックアップとprojectフォルダを置き換えますマスター

      $ git merge --no-ff feature-b 
      

    将来的には、のようなブランチを使用して、の作業を開始する必要があります。 と思っているのではなく、ツールを正しく使用する方法を学びます。が機能するはずです。

  • +2

    これの問題は、 "フィーチャーb"の履歴が失われていることです。 – KurzedMetal

    1

    この質問は非常に古いです、私は最近加わりました。

    私はubuntuを使用しており、merdを使用してマージ問題を解決しています。

    だから私はマイナーな変更を持つ可能性があります同じアプリの2つのフォルダがある場合。

    私は、これは、両方のフォルダを開きます、 メルドはフォルダの両方を比較するために時間がかかるだろう、端末

    meld ./app_branch_master ./app_branch_dev 
    

    でこれを行います。 左側には何があり、右側には何があるかが表示されます。 そこから小さなコードを移動することもできます。

    これは私がそれを行う方法です。

    関連する問題