1

我使用以下方法添加了子树:

git subtree add -P WLContainerControllers https://github.com/an0/WLContainerControllers.git master

结果提交是:

commit bb77fe3c8244a42454b23285f174798116a5eaf8
Merge: 6686d73 755c342
Author: Ling Wang <xxx@gmail.com>
Date:   Tue Jun 25 17:20:29 2013 -0500

    Add 'WLContainerControllers/' from commit '755c342622fc6470e034f1b27e764329d7b8a01c'

    git-subtree-dir: WLContainerControllers
    git-subtree-mainline: 6686d73b438fc22514b36cdf76adf7ea9c35b558
    git-subtree-split: 755c342622fc6470e034f1b27e764329d7b8a01c

然后在一些上游更新之后,我使用以下方法进行了子树拉取:

git subtree pull -P WLContainerControllers https://github.com/an0/WLContainerControllers.git master --squash

输出:

From https://github.com/an0/WLContainerControllers
 * branch            master     -> FETCH_HEAD
Removing WLPageViewController/main.m
Removing WLPageViewController/en.lproj/InfoPlist.strings
Removing WLPageViewController/damping.m
Removing WLPageViewController/WLPageViewController.m
Removing WLPageViewController/WLPageViewController.h
Removing WLPageViewController/WLPageViewController-Prefix.pch
Removing WLPageViewController/WLPageViewController-Info.plist
Removing WLPageViewController/PageViewController.xib
Removing WLPageViewController/PageViewController.m
Removing WLPageViewController/PageViewController.h
Removing WLPageViewController/ModelController.m
Removing WLPageViewController/ModelController.h
Removing WLPageViewController/Default@2x.png
Removing WLPageViewController/Default.png
Removing WLPageViewController/Default-568h@2x.png
Removing WLPageViewController/DataViewController.xib
Removing WLPageViewController/DataViewController.m
Removing WLPageViewController/DataViewController.h
Removing WLPageViewController/AppDelegate.m
Removing WLPageViewController/AppDelegate.h
Removing WLPageViewController.xcodeproj/project.pbxproj
Removing WLContainerControllers/WLContainerControllers/README.md
Removing WLContainerControllers/WLContainerControllers/LICENSE
Removing WLContainerControllers/WLContainerControllers.xcodeproj/xcuserdata/an0.xcuserdatad/xcschemes/xcschememanagement.plist
Removing WLContainerControllers/WLContainerControllers.xcodeproj/xcuserdata/an0.xcuserdatad/xcschemes/WLContainerControllers.xcscheme
Removing WLContainerControllers/WLContainerControllers.xcodeproj/project.xcworkspace/xcuserdata/an0.xcuserdatad/WorkspaceState.xcuserstate
Removing WLContainerControllers/WLContainerControllers.xcodeproj/project.xcworkspace/contents.xcworkspacedata
Removing WLContainerControllers/WLContainerControllers.xcodeproj/project.pbxproj
Removing WLContainerControllers/WLContainerControllers.xcodeproj/an0.perspectivev3
Removing WLContainerControllers/WLContainerControllers.xcodeproj/an0.pbxuser
Removing WLContainerControllers/WLContainerControllers.xcodeproj/an0.mode1v3
Removing .gittrees
Merge made by the 'recursive' strategy.
 .gittrees                                                                                                   |    4 -
 WLContainerControllers/WLContainerControllers/AppDelegate.h => AppDelegate.h                                |    0
 WLContainerControllers/WLContainerControllers/AppDelegate.m => AppDelegate.m                                |    0
 WLContainerControllers/WLContainerControllers/Default-568h@2x.png => Default-568h@2x.png                    |  Bin
 WLContainerControllers/WLContainerControllers/WLContainerController.h => WLContainerController.h            |    0
 WLContainerControllers/WLContainerControllers/WLContainerController.m => WLContainerController.m            |    0
 .../WLContainerControllers/WLContainerControllers-Info.plist => WLContainerControllers-Info.plist           |    0
 WLContainerControllers/WLContainerControllers.xcodeproj/an0.mode1v3                                         | 1403 ---------------------------------
 WLContainerControllers/WLContainerControllers.xcodeproj/an0.pbxuser                                         |  542 -------------
 WLContainerControllers/WLContainerControllers.xcodeproj/an0.perspectivev3                                   | 1530 ------------------------------------
 WLContainerControllers/WLContainerControllers.xcodeproj/project.pbxproj                                     |  308 --------
 WLContainerControllers/WLContainerControllers.xcodeproj/project.xcworkspace/contents.xcworkspacedata        |    7 -
 .../project.xcworkspace/xcuserdata/an0.xcuserdatad/WorkspaceState.xcuserstate                               | 2264 ------------------------------------------------------
 .../WLContainerControllers.xcodeproj/xcuserdata/an0.xcuserdatad/xcschemes/WLContainerControllers.xcscheme   |   76 --
 .../WLContainerControllers.xcodeproj/xcuserdata/an0.xcuserdatad/xcschemes/xcschememanagement.plist          |   22 -
 WLContainerControllers/WLContainerControllers/LICENSE                                                       |   27 -
 WLContainerControllers/WLContainerControllers/README.md                                                     |    4 -
 .../WLContainerControllers/WLContainerControllers_Prefix.pch => WLContainerControllers_Prefix.pch           |    0
 .../WLContainerControllers/WLMultiContentContainerController.h => WLMultiContentContainerController.h       |    0
 .../WLContainerControllers/WLMultiContentContainerController.m => WLMultiContentContainerController.m       |    0
 WLPageViewController.xcodeproj/project.pbxproj                                                              |  372 ---------
 WLPageViewController/AppDelegate.h                                                                          |   15 -
 WLPageViewController/AppDelegate.m                                                                          |   52 --
 WLPageViewController/DataViewController.h                                                                   |   14 -
 WLPageViewController/DataViewController.m                                                                   |   37 -
 WLPageViewController/DataViewController.xib                                                                 |  236 ------
 WLPageViewController/Default-568h@2x.png                                                                    |  Bin 18594 -> 0 bytes
 WLPageViewController/Default.png                                                                            |  Bin 6540 -> 0 bytes
 WLPageViewController/Default@2x.png                                                                         |  Bin 16107 -> 0 bytes
 WLPageViewController/ModelController.h                                                                      |   17 -
 WLPageViewController/ModelController.m                                                                      |   89 ---
 WLPageViewController/PageViewController.h                                                                   |   16 -
 WLPageViewController/PageViewController.m                                                                   |   68 --
 WLPageViewController/PageViewController.xib                                                                 |  133 ----
 WLPageViewController/WLPageViewController-Info.plist                                                        |   45 --
 WLPageViewController/WLPageViewController-Prefix.pch                                                        |   29 -
 WLPageViewController/WLPageViewController.h                                                                 |   48 --
 WLPageViewController/WLPageViewController.m                                                                 | 1098 --------------------------
 WLPageViewController/damping.m                                                                              |   53 --
 WLPageViewController/en.lproj/InfoPlist.strings                                                             |    2 -
 WLPageViewController/main.m                                                                                 |   18 -
 WLContainerControllers/WLContainerControllers/main.m => main.m                                              |    0
 42 files changed, 8529 deletions(-)
 delete mode 100644 .gittrees
 rename WLContainerControllers/WLContainerControllers/AppDelegate.h => AppDelegate.h (100%)
 rename WLContainerControllers/WLContainerControllers/AppDelegate.m => AppDelegate.m (100%)
 rename WLContainerControllers/WLContainerControllers/Default-568h@2x.png => Default-568h@2x.png (100%)
 rename WLContainerControllers/WLContainerControllers/WLContainerController.h => WLContainerController.h (100%)
 rename WLContainerControllers/WLContainerControllers/WLContainerController.m => WLContainerController.m (100%)
 rename WLContainerControllers/WLContainerControllers/WLContainerControllers-Info.plist => WLContainerControllers-Info.plist (100%)
 delete mode 100644 WLContainerControllers/WLContainerControllers.xcodeproj/an0.mode1v3
 delete mode 100644 WLContainerControllers/WLContainerControllers.xcodeproj/an0.pbxuser
 delete mode 100644 WLContainerControllers/WLContainerControllers.xcodeproj/an0.perspectivev3
 delete mode 100755 WLContainerControllers/WLContainerControllers.xcodeproj/project.pbxproj
 delete mode 100644 WLContainerControllers/WLContainerControllers.xcodeproj/project.xcworkspace/contents.xcworkspacedata
 delete mode 100644 WLContainerControllers/WLContainerControllers.xcodeproj/project.xcworkspace/xcuserdata/an0.xcuserdatad/WorkspaceState.xcuserstate
 delete mode 100644 WLContainerControllers/WLContainerControllers.xcodeproj/xcuserdata/an0.xcuserdatad/xcschemes/WLContainerControllers.xcscheme
 delete mode 100644 WLContainerControllers/WLContainerControllers.xcodeproj/xcuserdata/an0.xcuserdatad/xcschemes/xcschememanagement.plist
 delete mode 100644 WLContainerControllers/WLContainerControllers/LICENSE
 delete mode 100644 WLContainerControllers/WLContainerControllers/README.md
 rename WLContainerControllers/WLContainerControllers/WLContainerControllers_Prefix.pch => WLContainerControllers_Prefix.pch (100%)
 rename WLContainerControllers/WLContainerControllers/WLMultiContentContainerController.h => WLMultiContentContainerController.h (100%)
 rename WLContainerControllers/WLContainerControllers/WLMultiContentContainerController.m => WLMultiContentContainerController.m (100%)
 delete mode 100644 WLPageViewController.xcodeproj/project.pbxproj
 delete mode 100644 WLPageViewController/AppDelegate.h
 delete mode 100644 WLPageViewController/AppDelegate.m
 delete mode 100644 WLPageViewController/DataViewController.h
 delete mode 100644 WLPageViewController/DataViewController.m
 delete mode 100644 WLPageViewController/DataViewController.xib
 delete mode 100644 WLPageViewController/Default-568h@2x.png
 delete mode 100644 WLPageViewController/Default.png
 delete mode 100644 WLPageViewController/Default@2x.png
 delete mode 100644 WLPageViewController/ModelController.h
 delete mode 100644 WLPageViewController/ModelController.m
 delete mode 100644 WLPageViewController/PageViewController.h
 delete mode 100644 WLPageViewController/PageViewController.m
 delete mode 100644 WLPageViewController/PageViewController.xib
 delete mode 100644 WLPageViewController/WLPageViewController-Info.plist
 delete mode 100644 WLPageViewController/WLPageViewController-Prefix.pch
 delete mode 100644 WLPageViewController/WLPageViewController.h
 delete mode 100644 WLPageViewController/WLPageViewController.m
 delete mode 100644 WLPageViewController/damping.m
 delete mode 100644 WLPageViewController/en.lproj/InfoPlist.strings
 delete mode 100644 WLPageViewController/main.m
 rename WLContainerControllers/WLContainerControllers/main.m => main.m (100%)

它弄乱了谁的目录。

相关日志如下:

commit 0eaebf9a4842e53a19d0ffbddf1dadee69ef4e11
Merge: 3093049 1efe88d
Author: Ling Wang <xxx@gmail.com>
Date:   Tue Jun 25 18:02:27 2013 -0500

    Merge commit '1efe88dd79cb6fd550fceaaa10d4b22dc44fb9df'

commit 1efe88dd79cb6fd550fceaaa10d4b22dc44fb9df
Author: Ling Wang <xxx@gmail.com>
Date:   Tue Jun 25 18:02:27 2013 -0500

    Squashed 'WLContainerControllers/' changes from 755c342..2f2ca9a

    2f2ca9a Update project after moving LICENSE and README.md.
    d052945 Move LICENSE and README.md to top folder.

    git-subtree-dir: WLContainerControllers
    git-subtree-split: 2f2ca9ac87a7eebcac590ffba32577dc93c4963f

我正在使用通过 OS X 10.8.4 上的自制软件安装的 git 1.8.3.1。

我对 git subtree 的使用有什么问题?如何正确使用它?谢谢。

4

1 回答 1

1

我相信这是由于 git-subtree 的一些错误。更具体地说,在查看完之后的完整日志后git subtree add,我发现我的提交历史是一团糟——超级树(顶级目录)的提交日志没有任何痕迹。所以我手动清理它,并使用从 github 签出的最后一个 git 重新完成它。一切似乎都很好。git subtree pull我在更改上游后尝试了一个,它也运行良好。

git-subtree 是否仍然太前沿而无法在实际项目中使用?

于 2013-06-26T15:08:36.970 回答