--commit-filter <command>::
This is the filter for performing the commit.
If this filter is specified, it will be called instead of the
- `git-commit-tree` command, with arguments of the form
+ 'git-commit-tree' command, with arguments of the form
"<TREE_ID> [-p <PARENT_COMMIT_ID>]..." and the log message on
stdin. The commit id is expected on stdout.
+
You can use the 'map' convenience function in this filter, and other
convenience functions, too. For example, calling 'skip_commit "$@"'
will leave out the current commit (but not its changes! If you want
-that, use `git-rebase` instead).
+that, use 'git-rebase' instead).
--tag-name-filter <command>::
This is the filter for rewriting tag names. When passed,
-f::
--force::
- `git filter-branch` refuses to start with an existing temporary
+ 'git-filter-branch' refuses to start with an existing temporary
directory or when there are already refs starting with
'refs/original/', unless forced.
-<rev-list-options>::
+<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
+ 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.
A significantly faster version:
--------------------------------------------------------------------------
-git filter-branch --index-filter 'git update-index --remove filename' HEAD
+git filter-branch --index-filter 'git rm --cached filename' HEAD
--------------------------------------------------------------------------
Now, you will get the rewritten history saved in HEAD.
as their parents instead of the merge commit.
You can rewrite the commit log messages using `--msg-filter`. For
-example, `git-svn-id` strings in a repository created by `git-svn` can
+example, 'git-svn-id' strings in a repository created by 'git-svn' can
be removed this way:
-------------------------------------------------------
To restrict rewriting to only part of the history, specify a revision
range in addition to the new branch name. The new branch name will
-point to the top-most revision that a `git-rev-list` of this range
+point to the top-most revision that a 'git-rev-list' of this range
will print.
*NOTE* the changes introduced by the commits, and which are not reverted
by subsequent commits, will still be in the rewritten branch. If you want
to throw out _changes_ together with the commits, you should use the
-interactive mode of `git-rebase`.
+interactive mode of 'git-rebase'.
Consider this history: