On Tue, Jul 11, 2023 at 10:47 PM Alex Henrie <alexhenrie24@xxxxxxxxx> wrote: > > On Tue, Jul 11, 2023 at 12:33 PM Phillip Wood <phillip.wood123@xxxxxxxxx> wrote: > > > On 08/07/2023 19:56, Alex Henrie wrote: > > > On Fri, Jul 7, 2023 at 2:49 AM Phillip Wood <phillip.wood123@xxxxxxxxx> wrote: > > >>> + "before pushing again, or use 'git push --force' to delete the remote\n" > > >>> + "changes and replace them with your own.\n" > > >> > > >> I think it would be good to give a bit more context here as to when > > >> force pushing is a good idea. For example something like > > >> > > >> If you have rebased the branch since you last integrated remote > > >> changes then you can use > > >> 'git push --force-with-lease=<branch-ref> --force-if-includes' to > > >> safely replace the remote branch. > > >> > > >> If you have deleted and then recreated the branch since you last > > >> integrated remote changes then you can use 'git push +<branch>' to > > >> replace the remote. Note that if anyone else has pushed work to > > >> this branch it will be deleted. > > >> > > >> It makes the advice longer but the user get a specific suggestion for > > >> their current situation rather than a generic suggestion to delete the > > >> remote changes without discussing the implications. In this case we know > > >> that it was the current branch that was rejected and so should fill in > > >> the branch name in the advice as well. > > > > > > Even if we could fill in <branch-ref> automatically, it's too much to > > > ask the user to type out --force-with-lease=<branch-ref> > > > --force-if-includes. > > > > Can't they just copy and paste the command from the advice message? Even > > if the user does not copy and paste it is not that hard to type it out > > with the benefit of the shell's tab completion. You're basically saying > > this combination of options is unusable in practice because it is too > > much effort to type them. We could look to see if we can make it less > > unwieldy by changing push to allow --force-if-includes=ref imply > > --force-with-lease for instance. > > Yes, `git push --force-with-lease=<branch-ref> --force-if-includes` is > cryptic and unwieldy, and even asking users to copy and paste a > command is a bit much. If that's what's presented as the alternative > to integration via `git pull`, it could make users who want to > overwrite the remote branch think that force-pushing isn't what they > want because what they want is conceptually very simple, so they > expect it to have a simple user interface. > > It's possible that improvements will be made to this user interface in > the future, but that's definitely not something that I'm going to > tackle. I just want Git to give decent advice about what is available > right now. If we can't agree on what specific command to recommend, > maybe we can at least agree to tone down these messages to not sound > so prescriptive. Just changing "Use 'git pull' to integrate..." to > "You can use 'git pull' to integrate...' would be a big improvement. Whoops, I accidentally quoted my own proposed text as if it were the current text. The current text is in fact "Integrate the remote changes..." which is stronger still. -Alex