diff options
authorThomas Rast <>2008-08-07 14:16:03 (GMT)
committerJunio C Hamano <>2008-08-08 23:16:31 (GMT)
commit8afa42101d14f8944c1eb7f2e54d4f5300d2bb73 (patch)
parent6dc4627ef4eb40aeb9b328270b189ca27c061f7a (diff)
Documentation: filter-branch: document how to filter all refs
Document the '--' option that can be used to pass rev-list options (not just arguments), and give an example usage of '-- --all'. Remove reference to "the new branch name"; filter-branch takes arbitrary arguments to rev-list since dfd05e3. Signed-off-by: Thomas Rast <> Signed-off-by: Junio C Hamano <>
1 files changed, 16 insertions, 5 deletions
diff --git a/Documentation/git-filter-branch.txt b/Documentation/git-filter-branch.txt
index a518ba6..b0e710d 100644
--- a/Documentation/git-filter-branch.txt
+++ b/Documentation/git-filter-branch.txt
@@ -13,7 +13,7 @@ SYNOPSIS
[--msg-filter <command>] [--commit-filter <command>]
[--tag-name-filter <command>] [--subdirectory-filter <directory>]
[--original <namespace>] [-d <directory>] [-f | --force]
- [<rev-list options>...]
+ [--] [<rev-list options>...]
@@ -168,10 +168,10 @@ to other tags will be rewritten to point to the underlying commit.
'refs/original/', unless forced.
<rev-list options>...::
- When options are given after the new branch name, they will
- be passed to 'git-rev-list'. Only commits in the resulting
- output will be filtered, although the filtered commits can still
- reference parents which are outside of that set.
+ Arguments for 'git-rev-list'. All positive refs included by
+ these options are rewritten. You may also specify options
+ such as '--all', but you must use '--' to separate them from
+ the 'git-filter-branch' options.
@@ -196,6 +196,17 @@ git filter-branch --index-filter 'git rm --cached filename' HEAD
Now, you will get the rewritten history saved in HEAD.
+To rewrite the repository to look as if `foodir/` had been its project
+root, and discard all other history:
+git filter-branch --subdirectory-filter foodir -- --all
+Thus you can, e.g., turn a library subdirectory into a repository of
+its own. Note the `\--` that separates 'filter-branch' options from
+revision options, and the `\--all` to rewrite all branches and tags.
To set a commit (which typically is at the tip of another
history) to be the parent of the current initial commit, in
order to paste the other history behind the current history: