Someone used git push --force
but I can't tell who did it from the logs. Is there a way to identify the culprit?
The --force option for git push allows you to override this rule: the commit history on the remote will be forcefully overwritten with your own local history. This is a rather dangerous process, because it's very easy to overwrite (and thereby lose) commits from your colleagues.
Viewing a repository's push logsNavigate to a repository. In the upper-right corner of the repository's page, click . In the upper-right corner of the page, click Security. In the left sidebar, click Push Log.
To force a push to only one branch, use a + in front of the refspec to push (e.g git push origin +master to force a push to the master branch).
Update Nov. 2018: if you are pushing to a centralized Git repository hosting service like GitHub, then you would be able to see who has forced push your branch. But only because GitHub has chosen to surface that event in its GUI.
See more at "Find committer of a force push on GitHub".
Original answer 2013:
As I mention in "Distributed Version Control Systems and the Enterprise - a Good mix?", there is no authorization or authentication with Git alone.
You need an authorization layer like Gitolite in order to keep track of who does what. (Gitolite comes with its own audit trail mechanism).
But if your repo is accessible through file (or local) protocol, then you cannot know who forced pushed.
(from motivationalgenerator.com, and wikipedia)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With