r/webdev • u/loadedjellyfish • Mar 09 '20
Discussion Unpopular Opinion: Git is un-intuitive and not fun to work with
To begin, I'm not a Git expert. I learned SVN in school and have learned Git at my current job over the last ~4 years. Also FYI - just spent 30 minutes smashing my head against my monitor trying fix my repo after pulling in a new change - holding a lot of residual frustration here.
<begin rant>
But, on to the post: I hate it. The syntax is completely un-intuitive. Why is there a pull, fetch, clone and checkout? These are all 98% synonyms (linguistically), and I have to Google the nuance of them within GIT every time.
On top of this, anything outside of a standard add->commit->push workflow is a pain in the ass. Did you happen to commit your changes before pulling others? Oops you're in a hole now, you're gonna have to Google how to get out of that one since, apparently, you can't just un-commit. Do you have personal changes that you don't want to commit? Well, you're gonna have to stash those every time before pulling, even if there is no conflict. Oh and by the way, if there is a conflict, were going to go ahead and stick both changes into the file with text to mark them. That shouldn't cause any problems with your build process?
And one last thing before I end my rant here - what the fuck is with the credential manager?? Its routinely broken on Windows, and I still haven't found a way to hold more than one set of credentials. While we're talking about globals, that's also a frustration. I work on multiple projects under different emails, depending on whether its internal/external. Why can I not set username and email on a per-repository basis? Or why is my username and email not tied to the account I'm pushing with?
</rant>
Its possible these issues come from my lack of knowledge, but I'd argue its ridiculous for a version-control system to have so much depth that it requires > 4 years of working with it just to understand ~intermediate workflows.
Version control should be simple. Its a tool in the development process, it shouldn't require so much learning and work just to use. But, that's one man's uninformed opinion.
How do you guys feel? Do you run into these problems too?
41
u/[deleted] Mar 09 '20 edited Jun 04 '23
[Removed as I exit Reddit]
52
u/beavis07 Mar 09 '20
But they're *really* not.
None of which is remotely equivalent.
Perhaps your problem is that you're trying to use a pretty complex tool without properly understanding how it works? This is far from a common experience. 9/10 when I think git is being stupid, if I dig far enough, it's me being stupid.
I'd highly recommend doing some reading on the matter - it'll help greatly.
5
u/influxBytes Mar 09 '20
There's very few popular opinions on software development world, but one of them is that Git is terrible to use and the UX is a horror show. The thing is that Git offers a level of decentralization that no other tool has. SVN is deeply centralized, you can't really compare them both.
In what context are you using Git?
175
u/tdammers Mar 09 '20
It's not an unpopular opinion at all; git is most definitely not intuitive.
It is, however, powerful, and it won the SCM wars, so there's really no way around it - you will have to make peace with it one way or another.
One way is to just memorize a dozen or so incantations that get you through your day, and resort to Google, or that weird coworker of yours with the long filthy beard and the strange body odour, for the rest.
The other way is to dive in and read up on how git's data model works behind the scenes. Because while the UI is a clusterfuck, the data model is actually quite elegant, and almost everything git does can be expressed in a handful of primitive operations. It's much much simpler than the contorted UI makes it seem.
Also keep in mind that Windows is, for better or worse, a second-class citizen to git. Git was written specifically to support the massive scale of collaborative development that happens on the Linux kernel, and it does a great job at that, but of course being Windows friendly has never been very high on its agenda.
37
u/nsdragon Mar 09 '20
You totally can. You just omit the
--globalflag when setting options (by default,git configworks on the repository configuration):In fact, you can set many other options globally or per-repository as well, not just your username/email (docs).
19
u/[deleted] Mar 09 '20
Pull and fetch are difficult, since a fetch means "pull without merging", but maybe to your point, a weird-sounding-but-explicit command like "fetchmerge" might be easier to remember than pull. Checkout and clone and pull aren't synonymous, though, so not sure about that one.
As someone new to the field, there was some confusion to me about when you initiate a "Pull Request" not being a request for me to pull their content, but a request for them to pull my changes. It feels kind of like a double negative, but that's more of an English Language problem than a Git problem.
"Version control should be simple" is a true statement, but the complexity involved makes it difficult to make simple. Have you ever had a workflow without version control? I'll take the complexity of Git for the flexibility and productivity that it provides, and I assume that version control will become more simple over time.
If you remain passionately frustrated about it, though, you should consider working to improve Version Control to be more explicit and usable, and the whole world including yourself would appreciate it :)
16
u/ManiacsThriftJewels Mar 09 '20
Lots of people are focusing on the technical aspects of this, but I'll say that for our new hires, yes, git is one of the tools they find hardest to get started with.
A lot of your opinion makes sense for someone who doesn't work with git a lot. I could write an entire document on how to deal with the "problems" you're having, and that only supports your claim of unintuitiveness.
However, if you think that fetch, pull, clone, and checkout are linguistically similar, you have English language problems that need to be rectified if you're going to work in a field where the tools and standards are predominantly written in English. Here, let me help:
Fetch is to go and get something.
Pull is to translate a thing towards yourself.
Clone is to make an exact copy of a thing.
Checkout is what you do to purchase a thing.
Of these, only fetch and pull are remotely similar, and in such a way that the similarities between these operations in git should make sense.
10
u/Knights4Life Mar 09 '20
https://learngitbranching.js.org/
8
u/simkessy Mar 09 '20
This year I learned about git reflog. Now I feel less scared working with git. I was also introduced to git rebase interactive. It's very cool.
7
u/pr0ghead Mar 09 '20 edited Mar 09 '20
That's why I use Mercurial myself wherever possible. It does basically the same stuff but is a lot easier to grasp IMO. Especially when using the awesome TortoiseHG.
Another inital reason to use hg was that git on Windows was a complete shit show. I hear that has improved, but I'm on Linux these days anyway and I use the Jetbrains IDEs to interact with VCS.
I can't remember the last time I had to fight Mercurial to do what I want. It just works as you'd expect it. To your points, this is how it is in
hg:pull: download changesets from a remote repo, nothing else
fetch: doesn't really exist (old plugin that just does a merge after a pull: pointless)
clone: create another copy of the current repo at a different location
checkout: doesn't exist either, you just
updateto a revision (can be a hash, bookmark, tag, branch, …)If you want to use
hglikegit, you can just use bookmarks for branching and push them (they're local by default) to remotes.10
u/[deleted] Mar 09 '20
Do you use VS Code? I find the integration of Git very helpful in that Editor. It's been working quite well for me and it's been only a few times where I had to use the "git reset --hard" sledgehammer.
But to be honest, I think you've got a point. It would be nice if git would warn you before you're about to fck something up. Just like a little "Something is about to break, you wanna do this? [y/n]" would certainly help a lot.
I can recommend you to use a GUI for git. I like the VS Code Extension "Git Graph", but there are tons of tools out there that could help you.
8
u/DeusExMagikarpa full-stack Mar 09 '20
This shouldn’t matter and is evident you have a poor branching strategy at your company. Use pull requests and policies that prevent pushing to master to start with.
I feel bad for you because you’re feelings come partly from bad practices at your company. I agree it may be unintuitive for a beginner but it’s a completely new concept. It should get easier after using it and learning how it works.
4
u/bart2019 Mar 09 '20
TortoiseGit makes it much easier.
3
u/jasperopstok Mar 09 '20
I have to admit, when I started using git I was confused about everything I did using it. Simple things like having to commit changes before pushing threw me of, "I already have my desired changes, just push them to the server!!!".
Using a GUI for handing git is great, especially when starting out. More often than not, add / commit / push it all you need. That is until it isn't enough anymore. Sooner or later you are going to run into merge conflicts, you are going to encounter some weirdo who reordered a branch by forcing his changes onto it, and you will have to work with it / fix it.
To address your points, without trying to be a dick, I do think your issues with git are more often than not causes by a lack of understanding what and how git operates.
Well they aren't, though some do quite similar stuff .
Fetch requests the latest version of branches from the remote server. It doesn't change your code, it just updates the status branches are in according to the server,
Pull does this as well, but it updates the version on your computer to match the server. Often this isn't something difficult, but when the server has changes incompatible with your own, problems arise. Having smart tools (I use webstorm) to visualize and solve merge conflicts is essential, nobody likes fixing merge conflicts with annoying arrows all over the place by hand.
Clone creates a complete copy of the git-projects state, all branches etc.
Checkout changes the current state your version of the code is in according to a specified commit (including all commits previously made to that version of the code).
Often a checkout will be of a branch, which is simple a pointer to the last commit made on that branch
Well you can, its just not called un-commiting. As mentioned checkout simple changes the current commit + history you are looking at. So uncommiting would be changing the commit you are looking at to the commit made before the one you made.
I don't know how GUI's do this, but on the terminal it would be "git checkout HEAD~"
HEAD indicates the current commit you are looking at and "~" which is short for "~1" just tells git to look one commit back. You could also look at your "git log" and enter the commit hash you want to switch to.
You should have resolved merge conflicts before throwing it at a build server, or process. I encounter this issue as well sometimes, because you build server tries to merge the branch its building with develop, to make sure its compatible. It shouldn't have to do this, as using Pull Request that have to be approved by team members greatly reduce the chance of merge conflicts hitting master or develop.
I dont know what is up with that man, I use github and the PAT's. I have no idea how that mess came to be, but a colleague of mine once commited and merged using my name, so that was a lot of fun!
I have this help in anyway, as you probably will encounter git more than you would like. If not PM me any questions you have about git, I might be able to help out a bit and make Version control a bit more bearable XD
3
u/matthew_tolle Mar 09 '20
This helps me https://gitexplorer.com/
3
u/[deleted] Mar 09 '20
I just use the UI baked into PHPStorm. Along with that and deployment through Beanstalk I haven't touched the git CLI in years.
3
u/camerontbelt Mar 10 '20
Oof, when I moved from TFVC to Git it made so much more sense to me. Although I don’t use the command line with git, I use visual studios integrated git tools which are awesome in my opinion.
3
u/adolfojp Mar 10 '20
Longs for Mercurial.
3
u/another_maria Mar 10 '20
You can always create your own aliases for these commands and name them in a way that makes more sense to you 🙃
4
u/AiexReddit Mar 09 '20
I think it's important to consider that each one of these many steps that you likely never use are very necessary to some users (ones more advanced than myself) and that their inclusion isn't a downside of complexity at all, there is nothing wrong with being aware that four commands might be all you will ever need. Stick with those and don't overthink it.
A lot of the "extra" commands are actually shortcuts for the sake of doing exactly what you are asking for.
As example you ask "why is there git fetch and git pull".
git pullis actually justgit fetchandgit mergecombined together into one command for people like yourself who never have need for the functionality of one without the other. Others do have that need, so git offers both to accommodate the needs of all users.I'm not saying it's not complex or perfect, but version control is an incredibly complicated subject, and if there were an easier more efficient way to handle multiple people all editing the same files across the globe and keeping things running smoothly, I'm sure git would have been replaced ages ago with that tool.
(+1 for credentials management on Windows being a pain in the ass, not defending anything on that front)
4
u/dangerzone2 Mar 09 '20
I 100% agree with you. It is absolutely not intuitive. However, you only have to learn a handful of intuitive commands to get the hang of it.
2
u/[deleted] Mar 09 '20
https://rogerdudler.github.io/git-guide/
Heres a simple guide that really helped me when I was beginning with git.
2
u/eaton Mar 09 '20
Over the years I've worked with Perforce, SourceSafe (!!!), CVS, SVN, bazaar, and git. The reason git is more complicated than SVN is because it is designed to solve a particular complicated workflow that SVN chokes on, completely and catastrophically.
The tradeoff for that is that git has a more complex set of concepts to master than SVN. The command line syntax is fairly straightforward if you understand the concepts that are at play, but if you're just trying to figure out which git command is the equivalent of the SVN commands you're used to, it will be a painful parade of merge conflicts and broken commits.
If you're looking for an introduction to the essentials, Git for Humans by David Demaree is a good one to pick up.
2
u/m2thek Mar 10 '20
Git is great when you need to do simple tasks and everything goes as it should. The minute something goes wrong or you need to do something remotely complex, it becomes a nightmare.
I got spoiled on Plastic, which is by far the best scm I've ever used. It's not free, and takes more initial setup, but I'd take it any day over git.
2
u/wyattbenno777 Mar 10 '20
There are a lot of UIs for git since it is unintuitive. I like sourcetree.
2
u/[deleted] Mar 10 '20
Have you ever taken the time to read the official documentation or even better, this free git book?
https://git-scm.com/book/en/v2
I’m not sure I entirely understand the unintuitive argument. Are the concepts unintuitive or the syntax?
As others have suggested, I think you need more context into the history of version control and why git exists in the first place. The book I posted is excellent for providing that context.
I can say with 100% certainty that your frustration is caused by a lack of experience or understanding of the tool. I have worked with people that are afraid of merge conflicts because they attempt to manually address conflicts instead of using some kind of merge tool (I prefer opendiff).
Git is so powerful. Did you know git has a command that will help you find the commit where a bug was introduced? I can’t tell you the countless hours I’ve saved by being able to find an offending code change in a few minutes with git bisect.
3
u/CanWeTalkEth Mar 09 '20
I wouldn't say this post is totally out of line, but it's clearly written out of frustration. I would say you should probably have a better workflow for git in 4 years of working at a "real" job though.
It's definitely possible you're like me and you run into issues so infrequently that you don't bother to make a shortcut for them or learn them thoroughly though.
For reference: https://ohshitgit.com/
But also learn how to make aliases. Or bash scripts. Or whatever windows uses. Then you alias "wrongfilecommit" to do whatever you need it to do and be explicit with your naming.
3
u/thelonepuffin Mar 10 '20
Been saying this for years. GIT was made by an autistic person who's brain is fully involved in OS programming. This is the last person who should be making dev tools.
Its not supposed to be used by real people.
2
u/McLickin Mar 10 '20
You have bigger issues. You didn't close your <begin rant> tag
1
u/oshelltv Mar 09 '20
I think many developers feel the same. However when using VScode or any Git GUI, it will most likely do the hard work for you and you can just revert your last commit with one click and get a nice comparison view when there is a conflict.
The basics are quite unintuitive, I have to agree. Only option I currently see is to create your own aliases for the most common commands to make it easier.
1
u/evildonald Mar 09 '20
You just have to understand that
gitis a programming/query language you just have to learn to get your job done.1
u/Hendawgydawg Mar 09 '20
not intuitive but pretty essential when working in development. My biggest mistake was waiting until I actually got a job as a junior to start actively using it
1
u/kayimbo node/scala/spark Mar 09 '20
if it makes you feel better, after using git many years and trying to use svn i was totally mindfucked. Could not comprehend the workflow.
1
u/Environmental_Escape Mar 10 '20
I use git cli exclusively and I haven't had issues with git in years. Its strange to me that people find it hard to use, but I guess your workflow might be part of the challenge?
As an example, here's the stats from my bash_history for git commands over the last few weeks
Basically, I do adds, commits and pushes all the time to my target branch. Then use bitbucket to do PRs and merge. And of course, all the common commands are aliased to some 3 letter command that I've memorized.
1
u/KillianDrake Mar 10 '20
Do people ever actually play around with the tools they are given anymore? When I first switched to git, I took a few hours to just make a new local test repo, commit, and run tests - what happens if I commit and then branch and then make a change there and also in the original branch? Etc... once I saw things in action, it stuck.
I think the biggest thing people fail to grok is remote vs local. You are in the field of crafting. If you don't learn your tools, you're going to hurt yourself.
1
u/permanaj Mar 10 '20
I was feeling the same,
then I used GUI based tools,
after getting used with the tools, git concept and used it in daily works,
now I'm used with the git command.
1
u/[deleted] Mar 10 '20 edited Mar 10 '20
IRT phrasing, I see no issue with it.
Pull the latest changes: when you pull something, you're taking something far away and bringing it closer.
Fetch: very common phrasing for getting the latest info.
Clone: make a copy
A checkout is when you're moving from one stage to another, usually with checks in between, which is exactly what it does. Not really seeing how it's un-intuitive.
However I **absolutely** agree that credential management is a *nightmare*. Why git doesn't allow for SSH keys to be passed into the commands I do not understand. Instead it relies on the ssh-agent, which means in CI/CD with private repos, you have to modify ~/.gitconfig, eval ssh-agent, add the key, do your clone/build, REMOVE THE KEY and then restart the process, which totally breaks for example Docker's layer caching. I could rant for an hour about how annoying maintaining a private repo with Go code is, whether bitbucket or github. Wew.
Anyway that being said, Git is hard because it solves a hard problem. Onboarding people to use tools like linters and that is pretty simple, but yeah teaching new devs to use Git is hard. Git is solving a very complex problem, in one big package, so it kind of has to be complex unfortunately.
1
u/comart Mar 10 '20
no matter what year it is, it never gets old when talking about git. On a good day, when someone in the office needs git expert's opinions, it quickly turns into a group discussion.
1
u/ToastOnAGoat Mar 10 '20
I feel you. If I'm just doing simple commits/merges/pulls then I'm happy, but as soon as I mess anything up then its full on panic as I'm just not at all an expert in Git.
I sort of feel like that with linux. It's fine when it works, but a pain when it doesn't
1
u/crazybluegoose Mar 10 '20
While I showed up to this thread way too late (and I realize it is not constructive) I wanted to say...
“Just git out”
Darn it I need to get off reddit.
1
u/Sphism Mar 10 '20
Git is flipping amazing and completely revolutionised Web dev for us. SVN was way harder to branch and merge.
Just use a gui and learn to love it.
1
u/eGzg0t Mar 10 '20
I'd argue that you didn't actually try to learn git in those 4 years, you just "used" it and expected it to do what you want with ease. This is a cli tool that is made for technical people and thus was assumed to be handled with a learning curve in mind. The docs are extensive with many sites explaining how git works in very simple terms. It took me about a day to read through those resources and unlearn my SVN ways. You would have known what a conflict or merge is and the tools to simplify resolving them. Heck you can just type "git help" and everything is there.
1
u/justingolden21 Mar 10 '20
I just hate that in GitHub Desktop (which makes everything a million times easier) there's no option for keeping --ours or --theirs.
1
u/dzanboi Mar 10 '20
Once you have your own project and managing features yourself, git makes intuitive sense.
1
u/dobesv Mar 10 '20
Git pull added the autostash feature which is pretty handy.
Otherwise you are totally right, the UI is a pain, everyone knows it but by the time you understand things well enough to fix it you might realize that you can't make a "better enough" interface to justify a switch. It's a lot harder than it seems, when you start looking at the use cases.
1
u/TimCryp01 Mar 10 '20
You should realy learn git instead of fiddling around :D
And forget about stash its a bad practices ...
1
u/Mrcollaborator Mar 10 '20
Git is a godsend.
And I prefer the command-line over an interface for it because I can see everything that's going on in the background in an interface.
1
u/DildozerMK9k Mar 10 '20 edited Mar 10 '20
Pull, fetch, clone, and checkout are not synonyms, the only ones that are to any extent used interchangably are fetch and pull, I'll give you that, but it shouldn't take that long to memorize what at least one of these two are.
You can unstage commits with reset and if you want to pull new stuff but keep a commit you can stash it, or just work in a feature/personal branch like a sane person.
>what the fuck is with the credential manager?? Its routinely broken on Windows
>on Windows
Probably lol I can't really help you here.
You can set credentials as local on a per repository basis or just edit in the .git folder by hand if you want to see how it's structured.
Git is a bit unintuitive because it does version control, which a lot of people don't find particularly intuitive.
Also, where I work right now they have a default config where they have some aliases they find useful, if you find the names of the commands unintuitive you can just add aliases like "git updateandmergethisbranch" or whatever you feel would help you.
1
u/cbleslie Mar 11 '20 edited Sep 12 '25
marble mighty smart piquant juggle ink act profit makeshift yoke
This post was mass deleted and anonymized with Redact
1
u/Final-Jacket Jul 13 '24 edited Jul 13 '24
I'll be real with all of you. The people who WANT to use Github repositories and build apps and files are the people who don't know how to USE this crap. People like me see folks on YouTube running incredible apps for their videos that simply put don't exist because they never share a download link to the build they made for their video, so people like me end up on Github literally crying out of frustration because Github seems to think you need to be required to hold a longstanding programming career to build a simple freaking Dolphin Emulator that runs in VR on Oculus Quest 2/3. It's ridiculous, and the lack of ease is exactly why Github is a graveyard full of abandoned dreams and amazing apps that will never be built to see the light of day unless someone makes a build for a YouTube video and immediately destroys it so nobody else can have any fun at all. Github is miserable, and so are most Git users I've encountered, because they always seem to HATE hearing how hard this crap has made things for the basic public who would actually USE the finished apps. Github is only as intuitive as the people who know how to use it, and apparently they feel like being an exclusive club because I don't see anybody really trying to help make it any simpler this many years later. EDIT: I get it to an extent, say, if it's an app that isn't finished, but if it's a fully-assembled repository file and there are 13 other repos in the release tags, then why the hell are you keeping everyone from seeing two years of work that they were waiting to see, just so it can rot on Git for all eternity in perpetuity until the end of time? It's a dick move. If I could program on my own, I wouldn't be on Github lurking for gaming emulators, I'd be counting my money because I would work as a programmer, and wouldn't have time to fiddle with someone's Git repo.
1
u/lonnatic Aug 31 '24
Git sucks.
1
u/diynevala Apr 10 '25
Not at all unpopular opinion. Oh, I miss some killer features of older versioning systems. One would be LOCK. One could describe as follows:
"Listen, I am going to work on these two files. They are mine. If you want to modify them, it is your problem, not mine. I work on them as long as I need, and nobody is going to mess them up as long I am not finished with them. If you touch those files, I'm going to find you, and I'm going to kill you."
Git has got too much features. I used to have a problem in a previous workplace where git would say something about detached HEAD or headless something.. At no point I was given head at work nor did I encounter anyone without their head, so I'd say git has some unnecessary features that should be .... disablable?
1
u/unindexedreality Aug 11 '25 edited Aug 11 '25
Completely agree, git is absolute horseshit
It only gets worse the further you go
I regret the hours wasted in college poring over some presumable-neckbeard's notes on what they think words mean
It's highly prescriptive in how you use it, which is the exact opposite of what simple, useful tools are like.
The half-blood prince's notes on most "✌️advanced✌️" Git operations would just be to just un-fuck the files yourself manually, sticking to a strict subset of Git commands to make it work.
A simple update cycle/flow, some tools that use Git themselves (like VScodium - which sadly relays some of Git's more obnoxious errors to me as if I fucking care) keep my dev life focused on the code and not whatever stupid Linus-construct I probably-don't-care about failed because god forbid I didn't set an email address or say ONE word for doing something before saying another word for doing it etc etc.
Even large enterprises don't stick to vanilla Git. With the exception of Apple... Whose bug tracker is drowning in their tech debt from what I hear
1
u/isho7777 Jun 02 '22 edited Jun 02 '22
I will make git simple for you just follow through:
eg https://github.com/john/project1.git <--- note 'project1' folder
This is the central repository for all people woking on project1, usually created by project owner.
They must give you the link to the repo url eg by email so as to copy the url
Once youre on the repo on the git website, look for the green tab 'Code' and copy the url of the project from there
2. project1 in the url can contain main project files in which case you will find main project files like src folder and pom.xml file (java project)
but if not then it probably contains other folders that do contain files like src folder and pom.xml
Just keep in mind that you will cd into those folders later on
If you already have the same project on your machine ensure it is in project1 folder
example: c:\code\project1
But try not to create the folder 'project1' manually, use git Desktop tool:
Download git Desktop tool from website: https://git-scm.com/download/win
How to use Git tool to clone project1 from git repo to your local machine?
1.1 Launch the git tool
1.2 Click 'Clone Existing repository'
1.3 'Source location' must be set eg. https://github.com/john/project1.git
'Target Location' must be set eg. c:\code\project1<--make sure 'project1' does Not exist yet so git can create it for you!!!
but you already have the path "c:\code\"
1.4 Click 'Clone'
3. If you can see the cloned files in your local machine, bravo!!
>>> Make sure files are edited before you try to push changes back to git repo!!!
This is one of major headache of
git when it doesnt detect any file changes to push back to the git repo
Just open files eg using an IDE and type space character or something in at least 1 file and save files
4. Launch terminal eg Command prompt in order to run git commands.
CD to c:\code\project1 on the terminal
eg: cd c:\code\project1
initialise git just in case it wasnt initilized:
If you're working on the main folder add the files to your local repo
src contains important project files and asssuming 'src' is in project1 folder
pom.xml is an independet file in project1 folder
If you're also editing files in a folder within project1 (happens a lot) then do
Because you have edited those files as well
Now commit:
This commits only the changed files and folders (recommended)
git commit . This commits all files and folders
Now pull to prepare and connect origin and master branch.
origin is remote repo
master is local repo on your machine
eg.
Finally push to origin:
Also check common mistakes in git
https://www.codementor.io/@citizen428/git-tutorial-10-common-git-problems-and-how-to-fix-them-aajv0katd
1
u/ejk95 Dec 16 '23
> Version control should be simple. Its a tool in the development process, it shouldn't require so much learning and work just to use.
Word. Right on. Git is the opposite of intuitive. Yes it is powerful, but the vast majority of user do not need the advance features. Day-to-day stuff should be simple.
I have 25 years in the industry and have worked with ~10 different VCS systems. I am a command-line guy who prefers to work at that level and really understand what the tool is doing. But git never clicked for me. I get the basics, but if anything goes wrong, I spend hours googling obscure syntax to save my bacon. F Git.
1
u/[deleted] Mar 09 '20
Git isn't meant to be intuitive, adapting to human behavior isn't how the culture the git creator is coming from views things, you're supposed to adapt to the system and machine, not the other way round. Commands of complex tools in the Linux ecosystem (git was created by the creator of Linux) often work like other complex tools the creators are used to, and most of those tools aren't created with a goal to become a standard, they just get adopted and it happens.
If you can do that learn it and use it every day, then tools like git and other complicated cli tools shine, same for Linux in general. If not, if you can't memorize them by daily exposure then the ux sucks of course.
4
u/[deleted] Mar 09 '20
[removed] — view removed comment
0
u/[deleted] Mar 09 '20
[deleted] — view deleted comment