Thread (5 messages) 5 messages, 4 authors, 2018-06-10

Re: Why is there no force pull?

flat view

From: Ævar Arnfjörð Bjarmason <hidden>
Date: 2018-06-09 20:31:02

On Sat, Jun 09 2018, Elijah Newren wrote:
On Sat, Jun 9, 2018 at 12:01 PM, Christoph Böhmwalder
[off-list ref] wrote:
quoted
Hi,

Since this is a use case that actually comes up quite often in
day-to-day use, especially among git beginners, I was wondering: is
there a specific reason why a command like "fetch changes from remote,
overwriting everything in my current working directory including all
commits I've made" doesn't exist? Now, I'm quite aware that something
like

    $ git fetch origin/branch
    $ git reset --hard origin/branch

will do the trick just fine, but (like I mentioned, especially for
beginners) this kind of seems like a crook. Why not have a single
command for accomplishing this? Afterall we do have a `--force` flag on
`git push`, which practically does the same thing in reverse.

Just reaching out to get some input on this, as it seems like a quite
curious inconsistency to me.
Upon reading the subject and before reading the body, I assumed you
were going to ask for a 'git pull --force' that would throw away
*uncommitted* changes (i.e. do a 'git reset --hard HEAD' before the
rest of the pull).  But then you asked for both uncommitted and
committed changes to be thrown away.  That difference isn't something
you have to consider with a push.

That might be a reason such an option would be confusing, or it might
just be a warning to document the option carefully.  Anyway, thought
I'd mention it.
More generally, "git pull"'s params are passed to "git fetch", and then
we either "git merge" or "git rebase".

This proposed behavior doesn't fit into that at all.

But it would if we added a third mode, similar to how we added "rebase",
where we'd dispatch to "reset" instead, so:

    git pull --reset --hard

Meaning (in the general case):

    git fetch &&
    git reset --hard @{u}
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help