This has bothered me ever since I was using git for the first time: what do you mean I have to 'add' and 'commit' and then 'push'? I just want to save my stuff, this is SO many steps.

These criticisms of git always seems so shallow to me.

'add' tells git to start tracking some file(s)

'commit' tells git to save the currently tracked files

'push' says "upload my changes to some other location." Git isn't dropbox magically 'rsync'ing the directory to some server.

'pull' says "download any changes from some other location." Same deal as push.

That should satisfy the majority of git casuals that get frustrated with it. You should learn the tools of your trade, and version control (specifically git) is one of the tools of the software trade. If you work adjacent to software why is it so hard to learn a little about git?

I hate the word mansplaining but this comment could go into the dictionary as an example.

The point was that this bothered me when I used git for the very first time (what is it like 15 years ago at this point) and indeed did not understand it yet. Hope your comment made you feel better about yourself at least.

> The point was that this bothered me when I used git for the very first time

and that is fine. From your original comment, you "just" wanted to save things and got confused why you had to `add`, `commit` and `push`. Its just that you didn't know that git isn't a word processor that gives you a way to save your work - you've done that already when you saved the file with your editor.

When I came to git, I was also confused why commit and push are different steps - so much work, I thought. Until one day it finally hit - wait, this lets me keep "saving" my work locally until I'm ready to upload it - which is when I push.

> I was also confused why commit and push are different steps

I think most people think about file access in the word processor terms, like you mentioned. You "edit," "save," "upload," and "download." Actions like that.

Then they have to use git for the first time and the terms/actions are really foreign. It's likely made worse if they have experience with auto-syncing file software, since that software does the whole remote management process for them.

You don't have to do add as a separate step unless you're adding it to the repo for the first time. You can (and I do) just `git commit file1 dir2` or whatever. I don't conceptually think commit+push should be combined; committing a version is separate from pushing it to a remote.

TIL! Thanks

You can also just do `git commit -a` to commit all modified files.

When I was getting started with programming I often forgot to do one of those steps and often ended up losing my work because I was working from a library computer or something.

When I got more experience I finally understood why it is like that, and it makes sense now, but its still a lot of steps for someone learning to remember.

Thanks, that’s exactly what I meant! It only makes sense now because we know exactly how it works, it makes no sense to a first-time user.

I feel like other commenters are being obtuse on purpose and avoid the point? Or did I just not word it correctly

> I feel like other commenters are being obtuse on purpose and avoid the point?

nah, people are just built differently. Not everyone gets frustrated with "learning to remember", and then some do. Both are valid. The people who seem to be obtuse to you are in the first group, myself included. I didn't instantly catch the fact that instead of `svn commit` I have to now do `git add`, `git commit` and `git push`. But, and this is the key difference, when I forgot I just checked my bash history to recall the sequence. It doesn't bother me because I know either of two things will happen:

A. Over months and years, you then understand how things work and its second nature.

OR B. The tool was just a one-off and you won't use it after some time, so it doesn't matter you won't recall the steps.

Its the same with any professional tool, really - even outside software (think carpentry, for example).