2016-10-05 16 views
1

私はgitプロジェクトを貼り付けたものと信じています B.私のプロジェクトAのフォルダにあります。テストと変更の後、私はgitプロジェクトBを削除し、 。しかし、すべてのコミット履歴は私のプロジェクトにまだ表示されています。Gitは2番目のリポジトリと履歴を削除します

  • 元のプロジェクトのものを除いてすべてを削除するにはどうしたらいいですか?

観察:

  • 私はGitのブランチ-avを行うと、私は良いですが、プロジェクトAからブランチを参照してください。私は、すべての枝を表示すると、私は両方のプロジェクトのコミットを参照してください

  • - 私はGitのリモート操作を行うと、私は良いですが、原点を(原点私はプロジェクトBを削除)

  • 参照してください。

  • プロジェクトAからプロジェクトBに、またはその逆のコミットはマージされていません。 (私は両方のプロジェクトはお互いに交差しないことをsourcetreeで見ることができます。.gitフォルダで

  • を、私はA.

を投影する属さないログおよびREF DANSにSHAを見ることができますフォルダパスの

例:

C:\ gitRepo \プロジェクト私は

コメント...私はこのような状態になってしまうために、正確に行っているのか分かりませんAB \

C:\ gitRepo \ ProjectAB \ PROJECTA-1 ...

C:\ gitRepo \ ProjectAB \ PROJECTA-2 ...

C:\ gitRepo \ ProjectAB \ ProjectBの-1 ...

C:\ gitRepo \ ProjectAB \ ProjectBの-2 ...

答えて

0

あなたがGitのレポにB-貼り付けをコピーするときは、nested git repoを作成しました。
つまり、Bが新しいコミットを持つたびに、Aは新しいB SHA1をgitlinkspecial entry in A index)として記録しました。

Bを削除すると、その削除をAに追加してコミットします(gitlink Bの削除を記録するため)。

しかしAの履歴には、BがA履歴で変更されたすべてのインスタンスが残っています(BのgitlinkはBが新しいコミットを行うたびに変更されるため)。

は完全にあなたが

何かのように(歴史を書き換えること)git filter-branchが必要になり、歴史からBを削除するには:OP Kadgikoの場合、after discussion

git filter-branch --force --index-filter \ 
    'git rm --cached --ignore-unmatch PATH-TO-B' \ 
    --prune-empty -- --all 

、それが表示されますその:

  • レポBをコピーしたA(混合.gitコンテンツをもたらす)
  • 変化が(そうなしクローニング可能)遠隔Aに転送されているように見える超えます。

結論は:

さてさて、新しいプロジェクトを作成し、そこからスタートします、これは比較的新しいプロジェクトであり、我々は最後の数百のコミットを失った場合、それは多くの問題ではありません。

+0

パラメータPATH-TO-B、元のパスまたはコピーされたフォルダパスのですか? – Kadgiko

+0

レポAフォルダBです – VonC

+0

私は現在、プロジェクトB用に複数のフォルダを持っています.AとBは同じルートを持っています。だから根本は何かのようになるでしょう(formmatingのための編集された答えを見てください)。プロジェクトBは、C:\ GitRepo \ ProjectA \ ProjectBのようなものを持つためにAに完全にネストされていません。 – Kadgiko

関連する問題