diff options
| author | Cameron McEfee <cameron@github.com> | 2011-05-27 16:25:16 -0700 |
|---|---|---|
| committer | Cameron McEfee <cameron@github.com> | 2011-05-27 16:26:19 -0700 |
| commit | 75e24fdca4e70e751332c491a4b60a712e12c9e0 (patch) | |
| tree | ce505c13238ac1243de1026f85f26f848cd16d26 /_posts/2008-03-04-split-a-subpath-to-a-new-repo.md | |
| parent | 379694ab364801b5d06c2070c43fa50594c4bf65 (diff) | |
Reorder files to alphabetize. Update titles to be more conducive to quick scans.
The posts have been re-dated to not only alphabetize them within their categories, but also to make them easier to find with their directory. Files marked 2008 are active post files. Files marked 2009 are outdated or are redirects to newer files. Files have been renamed to match their title for easier updating.
Diffstat (limited to '_posts/2008-03-04-split-a-subpath-to-a-new-repo.md')
| -rw-r--r-- | _posts/2008-03-04-split-a-subpath-to-a-new-repo.md | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/_posts/2008-03-04-split-a-subpath-to-a-new-repo.md b/_posts/2008-03-04-split-a-subpath-to-a-new-repo.md new file mode 100644 index 0000000..608c994 --- /dev/null +++ b/_posts/2008-03-04-split-a-subpath-to-a-new-repo.md @@ -0,0 +1,29 @@ +--- +layout: default +title: Split a subpath into a new repo +description: How to generate a new repo from a subpath, retaining history. +categories: advanced +--- + +<p class="intro">From time to time you may find that you want to make a new repo from a subpath of an existing repo. Perhaps you're moving some code out into a library or just want to have a common submodule across projects. Thanks to git, it's easy to do this without losing the history of that subpath in the process.</p> + +The Good Stuff +-------------- + +Splitting a subpath into a repo is a fairly straightforward process, even if the command is hard to remember. For this example, we split <code>lib/</code> out of the "GitHub gem":http://github.com/defunkt/github-gem repo, removing empty commits but retaining the path's history. + +<pre class="terminal">[tekkub@tekBook: ~/tmp] $ git clone git://github.com/defunkt/github-gem.git +Initialized empty Git repository in /Users/tekkub/tmp/github-gem/.git/ +remote: Counting objects: 1301, done. +remote: Compressing objects: 100% (769/769), done. +remote: Total 1301 (delta 724), reused 910 (delta 522) +Receiving objects: 100% (1301/1301), 164.39 KiB | 274 KiB/s, done. +Resolving deltas: 100% (724/724), done. + +[tekkub@tekBook: ~/tmp] $ cd github-gem/ + +[tekkub@tekBook: ~/tmp/github-gem master] $ git filter-branch --prune-empty --subdirectory-filter lib master +Rewrite 48dc599c80e20527ed902928085e7861e6b3cbe6 (89/89) +Ref 'refs/heads/master' was rewritten</pre> + +Now we have a re-written master branch that contains the files that were in <code>lib/</code>. We can simply add a remote to the new repo and push, or do whatever we want with the repo. |
