diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,9 @@
 # Changelog
 
+## 0.2.4 (2019-10-05)
+- git push before publishing
+- only push up to tag
+
 ## 0.2.3 (2019-09-30)
 - push git tag
 - hlint is now a warning not an error
diff --git a/Main.hs b/Main.hs
--- a/Main.hs
+++ b/Main.hs
@@ -103,15 +103,15 @@
   let file = "dist" </> showPkgId pkgid <.> ".tar.gz"
   exists <- doesFileExist file
   unless exists $ tagDistCmd False
-  cabal_ "upload" $ ["--publish" | publish] ++ [file]
   when publish $ do
-    createFileLink (takeFileName file) (file <.> "published")
     let tag = pkgidTag pkgid
-    --tagHash <- cmd "git" ["rev-parse", tag]
-    --branch <- cmd "git" ["tag", "--show-current"]
-    --git_ "push" ["origin", tagHash ++ ":master"]
-    git_ "push" ["origin"]
+    tagHash <- cmd "git" ["rev-parse", tag]
+    branch <- cmd "git" ["branch", "--show-current"]
+    git_ "push" ["origin", tagHash ++ ":" ++ branch]
     git_ "push" ["origin", tag]
+  cabal_ "upload" $ ["--publish" | publish] ++ [file]
+  when publish $ do
+    createFileLink (takeFileName file) (file <.> "published")
 
 upHaddockCmd :: Bool -> IO ()
 upHaddockCmd publish =
diff --git a/hkgr.cabal b/hkgr.cabal
--- a/hkgr.cabal
+++ b/hkgr.cabal
@@ -1,6 +1,6 @@
 cabal-version:       2.0
 name:                hkgr
-version:             0.2.3.3
+version:             0.2.4
 synopsis:            Simple Hackage release workflow for package maintainers
 description:
             Hkgr (pronouced "Hackager") is a tool to help make new releases of
