Hi Junio, To submit changes from master branch to Perforce, new commits should be based on a remote branch p4/master: (1) E'---F' master / A---B---C---D p4/master Commits from A to D map to Perforce changelists. These commits include additional metadata in commit message which most important is changelist number. On submit git-p4 prepares changelists for commits E'-F' and submits these to Perforce repository. After this operation it syncs back remote branch p4/master. This is the common part for both bare and non-bare repository. (2) E'---F' master / A---B---C---D---E---F p4/master In non-bare repository git rebase is performed and it results in following state: (3) A---B---C---D---E---F p4/master, master In bare repository this operation cannot be performed, so it remains in state (2). With special care state (2) can be transformed to state (3) with manual update of refs/heads/master with refs/remotes/p4/master. I understand that implementing rebase for bare repository is unsafe and it wouldn't be appreciated. Therefore we have to resort to such a barbarity and git-p4 submit shouldn't attempt to perform a rebase operation itself. Especially because it performs other operations before and we end up in the intermediate state (2) anyway. Is this explanation satisfactory? If yes, I'll include it in patch description. Kind regards, -- Amadeusz Żołnowski