supposed that you, the user, works with a local repository named
``python`` that has an upstream remote repo named ``origin``. Your
local repo has two branches ``v1`` and ``v2``. Usually the currently
-checked out branch is ``v2``.
+checked out branch is ``v2``. That is, it's assumed you did something
+like::
+
+ $ git clone -b v1 http://git.python.org/python.git
+ $ cd python
+ $ git fetch origin v2:v2
+ $ git checkout -b v2
Commit editing and caveats
It is possible to recover from forced push but it's PITA for the
entire team. Please avoid it.
-To see what commits have not been published yet see the head of the
-remote branch::
+To see what commits have not been published yet compare the head of the
+branch with its upstream remote branch::
$ git log origin/v2..
$ git branch -avv
+To compare the status of local branches with remote repo::
+
+ $ git remote show origin
+
Read `how to recover from upstream rebase
<https://git-scm.com/docs/git-rebase#_recovering_from_upstream_rebase>`_.
It is in ``git help rebase``.
On the other hand don't be too afraid about commit editing. You can
-safely edit commits that hasn't been pushed yet. You can even push
-commits to your own (backup) repo, edit them later and force-push
-edited commits to replace what has already been pushed.
+safely edit, remove, reorder, combine and split commits that hasn't
+been pushed yet. You can even push commits to your own (backup) repo,
+edit them later and force-push edited commits to replace what has
+already been pushed. Not a problem until commits are in a public
+repository.
References