Randomize Git commit timestamps to enhance privacy
git clone https://git.8pit.net/git-shuffle.git
1.Dd $Mdocdate: October 4 2020 $ 2.Dt GIT-SHUFFLE 1 3.Os 4.Sh NAME 5.Nm git-shuffle 6.Nd randomize timestamps of git commits 7.Sh SYNOPSIS 8.Nm git-shuffle 9.Op Fl a10.Op Fl v11.Ar refspec12.Sh DESCRIPTION13The14.Xr git-commit 115utility associates timestamps with each commit.16This exposes coding hours and may be perceived as a privacy violation.17The18.Nm19utility mitigates this pitfall by randomizing timestamps associated with existing commits.20Currently, only the time is randomized while all other date information is left in tact.21.Pp22As Git timestamps are part of the commit object, doing so requires23.Nm24to rewrite the existing Git history.25Two approaches are supported for doing so:26.Bl -diag -offset indent27.It Rebasing28This is the default strategy, it rebases all commits according to the29given30.Ar refspec .31The32.Ar refspec33syntax is further described in34.Xr gitrevisions 7 .35.It Amending36Contrary to rebasing, this strategy only modifies the tip of the current branch.37Primarily intended to be used from38.Xr githooks 5 .39.El40.Pp41The options are as follows:42.Bl -tag -width Ds43.It Fl a44Amend the tip of the branch instead of rebasing.45This causes the46.Ar refspec47argument to be ignored.48.It Fl v49Activate verbose output.50For each modified commit write the commit hash to standard output.51.El52.Sh EXIT STATUS53.Ex -std git-shuffle54.Sh SEE ALSO55.Xr git-commit 1 ,56.Xr git-rebase 1 ,57.Xr githooks 558.Sh AUTHORS59.An Sören Tempel Aq Mt soeren@soeren-tempel.net60.Sh CAVEATS61The utility modifies timing information of committer and author.