This is an old revision of the document!
Overview
The good and the bad of git subtree.
Links
Synopsis
NAME
git-subtree - Merge subtrees together and split repository into subtrees
SYNOPSIS
git subtree add -P <prefix> <commit>
git subtree add -P <prefix> <repository> <ref>
git subtree pull -P <prefix> <repository> <ref>
git subtree push -P <prefix> <repository> <ref>
git subtree merge -P <prefix> <commit>
git subtree split -P <prefix> [OPTIONS] [<commit>]
Example
Start a new branch
$ git checkout -b subtree
Start a subtree, and examine it
$ git subtree add \ --prefix .vim/bundle/tpope-vim-surround \ https://bitbucket.org/vim-plugins-mirror/vim-surround.git \ master \ --squash git fetch https://bitbucket.org/vim-plugins-mirror/vim-surround.git master warning: no common commits remote: Counting objects: 338, done. remote: Compressing objects: 100% (133/133), done. remote: Total 338 (delta 101), reused 338 (delta 101) Receiving objects: 100% (338/338), 71.46 KiB | 46.00 KiB/s, done. Resolving deltas: 100% (101/101), done. From https://bitbucket.org/vim-plugins-mirror/vim-surround * branch master -> FETCH_HEAD Added dir '.vim/bundle/tpope-vim-surround' $
$ tree .vim
.vim
└── bundle
└── tpope-vim-surround
├── doc
│ └── surround.txt
├── plugin
│ └── surround.vim
└── README.markdown
4 directories, 3 files
$
$ git log --oneline cc770c1 (HEAD -> subtree) Merge commit 'bd61f717bcc5d8569846d875952d6aefab987dd1' as '.vim/bundle/tpope-vim-surround' bd61f71 Squashed '.vim/bundle/tpope-vim-surround/' content from commit 02199ea ... snip ... $
To manually update subtree
$ git subtree pull \ --prefix .vim/bundle/tpope-vim-surround \ https://bitbucket.org/vim-plugins-mirror/vim-surround.git \ master \ --squash $