2016-08-03 7 views
8

これに答えてスローSOを検索していました。何の答えも出ていないようなこの古いスレッドを見つけました。誰かが知っているかもしれないことを望むこのスレッドを再トリガする!gitフィルタブランチとgitサブツリーの違いは?

gitサブツリーとgit filter-branchの違いを教えてもらえますか? 私はこのために元の質問で同じ例を使用します:

git subtree split --prefix=some_subdir -b some_branch 

git filter-branch --subdirectory-filter some_subdir some_branch 

答えて

3

はい、git subtree(contribの殻を)Stu Campbellによって「Using Git subtrees for repository separation」で説明したように、レポをスリットするために使用することができます。実際に影響を与えるのみコミットを拾っレポの歴史を書き換え

git subtree split --prefix=path/to/code -b split 
git push ~/shared/ split:master 
git rm -r path/to/code 
git commit -am "Remove split code." 

git filter-branch(ネイティブのGitコマンド)とは異なる:あなたはあなたががあなたのスプリットフォルダ内で重複したコードを削除する必要が

特定のサブディレクトリの内容

意味:filter-branchが実行されると、git rmにコードはありません。
git filter-branchgit subtree splitのようなコミットを重複しないん:それは(「フィルタアウト」)を削除する特定の条件に一致しないすべてのもの(ここではサブフォルダのパス)

+0

これはGitのサブツリーが、今のgitの公式な一部であるとして、今日不正確です –

+0

その違いは、複数の(n)個のサブフォルダを自分自身のrepoにしたい場合、git filter-branchで最初にn回クローンする必要があり、サブツリーでgm rm回する必要があるということです。 – Qiulang

関連する問題