19

次のシナリオを想定します。

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

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

私の問題をより具体的にするために。私は git-svn ツールでそれをクローンするために使用している svn リポジトリを持っています。また、-T/-b/-t オプションは使用できませんが、マージしたいと考えています。

4

3 に答える 3

6

はい、技術的にはこれを達成できますが、それは間違いを修正するのに遅すぎるという理由だけではありません. 時間をさかのぼって、これを正しい方法で行う必要があります。

  1. project-with-feature-bフォルダーを git リポジトリの外に移動します。

    $ mv project-with-feature-b ..
    
  2. さかのぼって、ディレクトリgit logを作成する前の最後のコミットのコミット ID を見つけます。ディレクトリproject-with-feature-bの「内部」でコミットを行っていない場合は、この手順をスキップできます。project-with-feature-b

  3. feature-bそのコミット ID に基づいて呼び出される新しいブランチを作成します。手順 2 をスキップした場合は省略します<commit-id-from-step-2>

    $ git branch feature-b <commit-id-from-step-2>
    $ git checkout feature-b
    
  4. ブランチで、フォルダーをバックアップにfeature-b置き換えますprojectproject-with-feauture-b

    $ rm -rf project
    $ mv ../project-with-feature-b project
    $ git add project
    $ git commit -m "Add feature-b"
    
  5. feature-bmaster ブランチに戻り、ブランチを masterにマージします

    $ git merge --no-ff feature-b
    

将来的には、作業を開始する前に上記のようにブランチを使用する必要があります。ツールがどのように機能すると考えるかではなく、ツールを正しく使用することを学びます。

于 2012-04-10T15:47:04.950 に答える
3

Detach subdirectory into separate Git repository を見てください。両方のディレクトリの履歴を分割すると、ブランチ、マージ、または必要なことを何でも行うことができます。

于 2012-04-10T15:56:07.613 に答える