diff --git a/mercurial/commands.py b/mercurial/commands.py
index ff48eea4a926fe9745a26c2fa7e06f91b7c82c71_bWVyY3VyaWFsL2NvbW1hbmRzLnB5..e0ad11ab80529b702afc901da0c3e5f7bf57df2b_bWVyY3VyaWFsL2NvbW1hbmRzLnB5 100644
--- a/mercurial/commands.py
+++ b/mercurial/commands.py
@@ -861,7 +861,7 @@
 
     ui.status(
         _(b'changeset %s backs out changeset %s\n')
-        % (nice(repo.changelog.tip()), nice(node))
+        % (nice(newnode), nice(node))
     )
     if opts.get(b'merge') and op1 != node:
         hg.clean(repo, op1, show_stats=False)
@@ -865,9 +865,7 @@
     )
     if opts.get(b'merge') and op1 != node:
         hg.clean(repo, op1, show_stats=False)
-        ui.status(
-            _(b'merging with changeset %s\n') % nice(repo.changelog.tip())
-        )
+        ui.status(_(b'merging with changeset %s\n') % nice(newnode))
         overrides = {(b'ui', b'forcemerge'): opts.get(b'tool', b'')}
         with ui.configoverride(overrides, b'backout'):
             return hg.merge(repo[b'tip'])
diff --git a/tests/test-backout.t b/tests/test-backout.t
index ff48eea4a926fe9745a26c2fa7e06f91b7c82c71_dGVzdHMvdGVzdC1iYWNrb3V0LnQ=..e0ad11ab80529b702afc901da0c3e5f7bf57df2b_dGVzdHMvdGVzdC1iYWNrb3V0LnQ= 100644
--- a/tests/test-backout.t
+++ b/tests/test-backout.t
@@ -806,3 +806,18 @@
   $ hg backout --merge --no-commit 2
   abort: cannot specify both --no-commit and --merge
   [255]
+
+Ensure that backout out the same changeset twice performs correctly:
+
+  $ hg backout 2
+  removing 3
+  changeset 3:8f188de730d9 backs out changeset 2:cccc23d9d68f
+  $ echo 4 > 4
+  $ hg ci -A -m 4
+  adding 4
+  $ hg up 2
+  1 files updated, 0 files merged, 1 files removed, 0 files unresolved
+  $ hg backout 2
+  removing 3
+  created new head
+  changeset 3:8f188de730d9 backs out changeset 2:cccc23d9d68f