Some users expect that deleting a remote-tracking branch would prevent fetch from creating it again, so be explcit about that it's not the case. Also be a little more explicit about what fully merged means. Signed-off-by: Jan Hudec <bulb@xxxxxx> --- On Sat, Nov 17, 2007 at 20:12:56 +0100, Jan Hudec wrote: > On Tue, Nov 13, 2007 at 20:58:20 +0300, osv@xxxxxxxxx wrote: > > <quote Documentation/git-branch.txt> > > Delete unneeded branch:: > > + > > ------------ > > $ git clone git://git.kernel.org/.../git.git my.git > > $ cd my.git > > $ git branch -d -r origin/todo origin/html origin/man <1> > > $ git branch -D test <2> > > ------------ > > + > > <1> Delete remote-tracking branches "todo", "html", "man" > > </quote> > > > > That's *exactly* what I did! And it *doesn't work*! Well, it does delete > > the branches, but they are automagically re-created on the next fetch, > > so "deleting" them this way is useless. > > Of course it *does* work. It *deletes* the branches. There is not a single > word about stopping fetch getting them! > > Obviously given that the example is slightly contrived, it should really > be mentioned that it does not affect fetch at all. Would this make the description obvious enough? -- Jan 'Bulb' Hudec <bulb@xxxxxx> Documentation/git-branch.txt | 21 ++++++++++++++------- 1 files changed, 14 insertions(+), 7 deletions(-) diff --git a/Documentation/git-branch.txt b/Documentation/git-branch.txt index 5ce905d..f87b696 100644 --- a/Documentation/git-branch.txt +++ b/Documentation/git-branch.txt @@ -45,17 +45,22 @@ to happen. With a `-d` or `-D` option, `<branchname>` will be deleted. You may specify more than one branch for deletion. If the branch currently -has a reflog then the reflog will also be deleted. Use -r together with -d -to delete remote-tracking branches. +has a reflog then the reflog will also be deleted. + +Use -r together with -d to delete remote-tracking branches. Note, that it +only makes sense to delete remote-tracking branches if they no longer exist +in remote repository or if gitlink:git-fetch[1] was configured not to fetch +them again. See also 'prune' subcommand of gitlink:git-remote[1] for way to +clean up all obsolete remote-tracking branches. OPTIONS ------- -d:: - Delete a branch. The branch must be fully merged. + Delete a branch. The branch must be fully merged in HEAD. -D:: - Delete a branch irrespective of its index status. + Delete a branch irrespective of its merged status. -l:: Create the branch's reflog. This activates recording of @@ -153,9 +158,11 @@ $ git branch -d -r origin/todo origin/html origin/man <1> $ git branch -D test <2> ------------ + -<1> Delete remote-tracking branches "todo", "html", "man" -<2> Delete "test" branch even if the "master" branch does not have all -commits from test branch. +<1> Delete remote-tracking branches "todo", "html", "man". Next 'fetch' or +'pull' will create them again unless you configure them not to. See +gitlink:git-fetch[1]. +<2> Delete "test" branch even if the "master" branch (or whichever branch is +currently checked out) does not have all commits from test branch. Notes -- 1.5.3.5 - To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html