diff --git a/plugins/README.markdown b/plugins/README.markdown
index 0aec4773bdcc3acb3df365ee0e94f210faf1f85b..2dd4e98877ee5f3f2b2410ebc2db3d17c96f3b9d 100644
--- a/plugins/README.markdown
+++ b/plugins/README.markdown
@@ -13,6 +13,7 @@
 * __fry__ – Starts [fry](https://github.com/terlar/fry), a simple Ruby version manager for fish.
 * __gem__ – Ruby gem integration.
 * __gi__ – [gitignore.io](http://gitignore.io) CLI for fish.
+* __git-flow__ – [git-flow](https://github.com/nvie/gitflow) Completion support for git-flow.
 * __jump__ – A port of [Jeroen Janssens’ “jump” utility](http://jeroenjanssens.com/2013/08/16/quickly-navigate-your-filesystem-from-the-command-line.html).
 * __local-config__ – Support per-user, per-host and per-platform custom config files.
 * __localhost__ – Opens `http://localhost:3000` (and other ports) in the default browser.
diff --git a/plugins/git-flow/README.md b/plugins/git-flow/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..0f567f2cced10441bd9ccff18ee7340860f1ac89
--- /dev/null
+++ b/plugins/git-flow/README.md
@@ -0,0 +1,18 @@
+# git-flow
+
+Completion support for git-flow.Fork from [bobthecow/git-flow-completion](https://github.com/bobthecow/git-flow-completion/blob/master/git.fish)
+
+The contained completion routines provide support for completing:
+
+- git-flow init and version
+
+- feature, hotfix and release branches
+
+- remote feature, hotfix and release branch names
+
+# The Fine Print
+
+Copyright (c) 2011 [Justin Hileman](http://justinhileman.com)
+
+Distributed under the [MIT License](http://creativecommons.org/licenses/MIT/)
+
diff --git a/plugins/git-flow/git-flow.load b/plugins/git-flow/git-flow.load
new file mode 100644
index 0000000000000000000000000000000000000000..c847096db22f4140d229252def9c94eaf22a431b
--- /dev/null
+++ b/plugins/git-flow/git-flow.load
@@ -0,0 +1,185 @@
+#!fish
+#
+# git-flow-completion
+# ===================
+#
+# Fish completion support for [git-flow](http://github.com/nvie/gitflow)
+#
+# The contained completion routines provide support for completing:
+#
+#  * git-flow init and version
+#  * feature, hotfix and release branches
+#  * remote feature, hotfix and release branch names
+#
+#
+#
+# The Fine Print
+# --------------
+#
+# Copyright (c) 2012 [Justin Hileman](http://justinhileman.com)
+#
+# Distributed under the [MIT License](http://creativecommons.org/licenses/MIT/)
+
+
+for prefix in /usr /usr/local
+  if test -f $prefix/share/fish/completions/git.fish
+    . $prefix/share/fish/completions/git.fish
+    break
+  end
+end
+
+if not functions -q __fish_git_branches
+  echo \nError: git completion not found >&2
+  exit
+end
+
+## Support functions
+
+function __fish_git_flow_using_command
+  set cmd (commandline -opc)
+  set subcommands 'flow' $argv
+  if [ (count $cmd) = (math (count $subcommands) + 1) ]
+    for i in (seq (count $subcommands))
+      if not test $subcommands[$i] = $cmd[(math $i + 1)]
+        return 1
+      end
+    end
+    return 0
+  end
+  return 1
+end
+
+function __fish_git_flow_prefix
+  git config "gitflow.prefix.$argv[1]" 2> /dev/null; or echo "$argv[1]/"
+end
+
+function __fish_git_flow_branches
+  set prefix (__fish_git_flow_prefix $argv[1])
+  __fish_git_branches | grep "^$prefix" | sed "s,^$prefix,," | sort
+end
+
+function __fish_git_flow_remote_branches
+  set prefix (__fish_git_flow_prefix $argv[1])
+  set origin (git config gitflow.origin 2> /dev/null; or echo "origin")
+  git branch -r 2> /dev/null | sed "s/^ *//g" | grep "^$origin/$prefix" | sed "s,^$origin/$prefix,," | sort
+end
+
+function __fish_git_flow_untracked_branches
+  set branches (__fish_git_flow_branches $argv[1])
+  for branch in (__fish_git_flow_remote_branches $argv[1])
+    if not contains $branch $branches
+      echo $branch
+    end
+  end
+end
+
+function __fish_git_flow_unpublished_branches
+  set branches (__fish_git_flow_remote_branches $argv[1])
+  for branch in (__fish_git_flow_branches $argv[1])
+    if not contains $branch $branches
+      echo $branch
+    end
+  end
+end
+
+
+## git-flow
+
+complete -f -c git -n '__fish_git_needs_command' -a flow -d 'Manage a git-flow enabled repository'
+complete -f -c git -n '__fish_git_flow_using_command' -a version -d 'Show version information'
+
+
+
+## git-flow init
+
+complete -f -c git -n '__fish_git_flow_using_command' -a init    -d 'Initialize a new git repo with support for the branching model'
+complete -f -c git -n '__fish_git_flow_using_command init' -s f  -d 'Force reinitialization'
+complete -f -c git -n '__fish_git_flow_using_command init' -s d  -d 'Use default branch names'
+
+
+
+## git-flow feature
+
+complete -f -c git -n '__fish_git_flow_using_command' -a feature      -d 'Manage feature branches'
+complete -f -c git -n '__fish_git_flow_using_command feature' -a list -d 'List feature branches'
+complete -f -c git -n '__fish_git_flow_using_command feature' -s v    -d 'Verbose output'
+
+complete -f -c git -n '__fish_git_flow_using_command feature' -a start    -d 'Start a new feature branch'
+complete -f -c git -n '__fish_git_flow_using_command feature start' -s F  -d 'Fetch from origin first'
+
+complete -f -c git -n '__fish_git_flow_using_command feature' -a finish   -d 'Finish a feature branch'
+complete -f -c git -n '__fish_git_flow_using_command feature finish' -s F -d 'Fetch from origin first'
+complete -f -c git -n '__fish_git_flow_using_command feature finish' -s r -d 'Rebase instead of merging'
+complete -f -c git -n '__fish_git_flow_using_command feature finish' -a '(__fish_git_flow_branches feature)' -d 'Feature branch'
+
+complete -f -c git -n '__fish_git_flow_using_command feature' -a publish  -d 'Publish a feature branch to remote'
+complete -f -c git -n '__fish_git_flow_using_command feature publish' -a '(__fish_git_flow_unpublished_branches feature)' -d 'Feature branch'
+
+complete -f -c git -n '__fish_git_flow_using_command feature' -a track    -d 'Checkout remote feature branch'
+complete -f -c git -n '__fish_git_flow_using_command feature track' -a '(__fish_git_flow_untracked_branches feature)' -d 'Feature branch'
+
+complete -f -c git -n '__fish_git_flow_using_command feature' -a diff     -d 'Show all changes'
+
+complete -f -c git -n '__fish_git_flow_using_command feature' -a rebase   -d 'Rebase against integration branch'
+complete -f -c git -n '__fish_git_flow_using_command feature rebase' -s i -d 'Do an interactive rebase'
+
+complete -f -c git -n '__fish_git_flow_using_command feature' -a checkout -d 'Checkout local feature branch'
+complete -f -c git -n '__fish_git_flow_using_command feature checkout' -a '(__fish_git_flow_branches feature)' -d 'Feature branch'
+
+complete -f -c git -n '__fish_git_flow_using_command feature' -a pull     -d 'Pull changes from remote'
+complete -f -c git -n '__fish_git_flow_using_command feature pull' -a '(__fish_git_remotes)' -d 'Remote'
+
+
+
+## git-flow release
+
+complete -f -c git -n '__fish_git_flow_using_command' -a release      -d 'Manage release branches'
+complete -f -c git -n '__fish_git_flow_using_command release' -a list -d 'List release branches'
+complete -f -c git -n '__fish_git_flow_using_command release' -s v    -d 'Verbose output'
+
+complete -f -c git -n '__fish_git_flow_using_command release' -a start -d 'Start a new release branch'
+complete -f -c git -n '__fish_git_flow_using_command release start' -s F  -d 'Fetch from origin first'
+
+complete -f -c git -n '__fish_git_flow_using_command release' -a finish   -d 'Finish a release branch'
+complete -f -c git -n '__fish_git_flow_using_command release finish' -s F -d 'Fetch from origin first'
+complete -f -c git -n '__fish_git_flow_using_command release finish' -s s -d 'Sign the release tag cryptographically'
+complete -f -c git -n '__fish_git_flow_using_command release finish' -s u -d 'Use the given GPG-key for the digital signature (implies -s)'
+complete -f -c git -n '__fish_git_flow_using_command release finish' -s m -d 'Use the given tag message'
+complete -f -c git -n '__fish_git_flow_using_command release finish' -s p -d 'Push to $ORIGIN after performing finish'
+complete -f -c git -n '__fish_git_flow_using_command release finish' -a '(__fish_git_flow_branches release)' -d 'Release branch'
+
+complete -f -c git -n '__fish_git_flow_using_command release' -a publish  -d 'Publish a release branch to remote'
+complete -f -c git -n '__fish_git_flow_using_command release publish' -a '(__fish_git_flow_unpublished_branches release)' -d 'Release branch'
+
+complete -f -c git -n '__fish_git_flow_using_command release' -a track    -d 'Checkout remote release branch'
+complete -f -c git -n '__fish_git_flow_using_command release track' -a '(__fish_git_flow_untracked_branches release)' -d 'Release branch'
+
+
+
+## git-flow hotfix
+
+complete -f -c git -n '__fish_git_flow_using_command' -a hotfix      -d 'Manage hotfix branches'
+complete -f -c git -n '__fish_git_flow_using_command hotfix' -a list -d 'List hotfix branches'
+complete -f -c git -n '__fish_git_flow_using_command hotfix' -s v    -d 'Verbose output'
+
+complete -f -c git -n '__fish_git_flow_using_command hotfix' -a start -d 'Start a new hotfix branch'
+complete -f -c git -n '__fish_git_flow_using_command hotfix start' -s F  -d 'Fetch from origin first'
+
+complete -f -c git -n '__fish_git_flow_using_command hotfix' -a finish   -d 'Finish a hotfix branch'
+complete -f -c git -n '__fish_git_flow_using_command hotfix finish' -s F -d 'Fetch from origin first'
+complete -f -c git -n '__fish_git_flow_using_command hotfix finish' -s s -d 'Sign the hotfix tag cryptographically'
+complete -f -c git -n '__fish_git_flow_using_command hotfix finish' -s u -d 'Use the given GPG-key for the digital signature (implies -s)'
+complete -f -c git -n '__fish_git_flow_using_command hotfix finish' -s m -d 'Use the given tag message'
+complete -f -c git -n '__fish_git_flow_using_command hotfix finish' -s p -d 'Push to $ORIGIN after performing finish'
+complete -f -c git -n '__fish_git_flow_using_command hotfix finish' -a '(__fish_git_flow_branches hotfix)' -d 'Hotfix branch'
+
+
+
+## git-flow support
+
+complete -f -c git -n '__fish_git_flow_using_command' -a support      -d 'Manage support branches'
+complete -f -c git -n '__fish_git_flow_using_command support' -a list -d 'List support branches'
+complete -f -c git -n '__fish_git_flow_using_command support' -s v    -d 'Verbose output'
+
+complete -f -c git -n '__fish_git_flow_using_command support' -a start -d 'Start a new support branch'
+complete -f -c git -n '__fish_git_flow_using_command support start' -s F  -d 'Fetch from origin first'