Re: Question: is there a possibility of getting a warning before a git push -f
- From
D. Ben Knoble <ben.knoble@gmail.com>
- Date
- Jun 11, 2025, 23:18 UTC
- Message-ID
- <CALnO6CA-SvasocZ_tbN2_-DiGCO55W6gyXDjJZqRo5Y3D4JRmg@mail.gmail.com>
- In-Reply-To
- <PN0PR01MB95880EAA98466C9AB049BA44B86BA@PN0PR01MB9588.INDPRD01.PROD.OUTLOOK.COM>
> Le 9 juin 2025 à 12:47, Aditya Garg <gargaditya08@live.com> a écrit : > > One thing I sometimes encounter is that I sometimes git push -f and moments later I realise I did it at the wrong time, result being a disaster.
2 effective habits I like: - Check what I’m pushing first. - Only force when absolutely needed, and even then default to a “strict” version (force-with-lease *and* force-if-includes; I use an alias “pf” and some config to make it easy, since I do force-push regularly in a rebase-heavy workflow).
Expanding a bit:
I have a “git-div” script that will show me the graph in the way I like between HEAD and @{push}, or @{upstream} if those are the same revision [it accepts arbitrary revisions though]. It was mostly inspired by mjd’s git-vee, and uses lots of annotations (cherry-mark, left-right, boundary) to give a quick HUD.
https://github.com/benknoble/Dotfiles/blob/master/links/bin/git-div
(“graph” is an alias for git-log with the graph and oneline options)
I also use(d to) use show-branch a lot, and I have aliases sbu = show-branch HEAD @{upstream} and sbup = sbu @{push} that I still use sometimes.
As I recently told some colleagues, I consider regularly reviewing where in the commit graph I am equally as important as checking git-status.
The second bullet is probably self-explanatory, but the basic idea is to give myself the most protection I can, and only weaken it as necessary. In fact, I almost never need to remove any of those “strict” flags to force-push except when I’m intentionally force-pushing from a detached HEAD (https://lore.kernel.org/git/CALnO6CCk0SgwObQRnpd5Pt_DvCKF8dBmyVHivU6Nr_O-GusGLA@mail.gmail.com/).
> I was wondering if a little [y/N] warning could be possible before the risky command gets executed. I saw the code for push superficially and I don't think it's implemented. I think it would be a nice feature though.