TE
TechEcho
Home24h TopNewestBestAskShowJobs
GitHubTwitter
Home

TechEcho

A tech news platform built with Next.js, providing global tech news and discussions.

GitHubTwitter

Home

HomeNewestBestAskShowJobs

Resources

HackerNews APIOriginal HackerNewsNext.js

© 2025 TechEcho. All rights reserved.

Ask HN: Do we need an easier Git?

75 pointsby raghavtoshniwalover 3 years ago
Git is amazing and essential for my work. However, a vast majority of developers just use the clone-commit-push workflow and can get by. I've also taught CS to younger kids and seen students struggle to internalize the mental model of Git. The learning curve is steep for early devs. Is there merit in having a VCS that has a less steep learning curve or are the benefits of knowing a universal VCS too great (even if you end up using a small subset of the features)

40 comments

lexicalityover 3 years ago
In my experience doing mentorship, a lot of people are taught git in a super rushed way and tend to have the mindset of &quot;here&#x27;s this incredibly complicated program you will never understand, please learn these magic commands and hope you never get a merge conflict&quot; which isn&#x27;t particularly useful because they&#x27;re now scared of their tools.<p>We need to teach tools like git (and some editors!) as their own thing, completely separate to programming languages. Not &quot;now we&#x27;ve written some code, let&#x27;s put it in git&quot; but &quot;here&#x27;s a tool called git, let&#x27;s show how it works with some text files&quot;<p>Honestly - you spend 20 minutes with someone teaching them that git only stores diffs and how that actually works and they leave much more confident and willing to experiment on their own.<p>A plain text TODO list is absolutely perfect for this, because a merge conflict between two steps on a numbered list is completely intuitive and resolvable. &quot;I&#x27;ve got two 4)s now!&quot; &quot;What&#x27;s the fix?&quot; &quot;I guess one needs to become 5)?&quot;<p>(The CLI and naming scheme is total garbage though - biggest hurdle for non-native English speakers IMO)
评论 #29757416 未加载
评论 #29757874 未加载
评论 #29757980 未加载
billconanover 3 years ago
I do think git isn&#x27;t user friendly. I came from perforce and also had a hard time building the mental model. Eventually I read the article about git&#x27;s internals, and finally got the idea. What&#x27;s most useful for me was the diagram of the three states (<a href="https:&#x2F;&#x2F;stackoverflow.com&#x2F;questions&#x2F;3689838&#x2F;whats-the-difference-between-head-working-tree-and-index-in-git" rel="nofollow">https:&#x2F;&#x2F;stackoverflow.com&#x2F;questions&#x2F;3689838&#x2F;whats-the-differ...</a>).<p>some of the git&#x27;s naming was also not intuitive for me, For example, calling the scratch area &quot;index&quot;. I didn&#x27;t seem to have to learn perforce, cvs or svn&#x27;s internals to use them fluently.<p>but I guess it&#x27;s a bit difficult to change the current situation. git has become the most common choice. And once the mental model has built, it&#x27;s not that difficult to use, admittedly I only use a few very common commands.<p>you know the challenge won&#x27;t be building the version control. for mass adoption, you need a github-like platform.
评论 #29756688 未加载
评论 #29756866 未加载
rotiferover 3 years ago
People might be interested in gitless [0], which purports to be &quot;a Git-compatible version control system, that is easy to learn and use&quot;. It appears to be built on top of git, using a simplified conceptual model.<p>I read about it in one of Adrian Colyer&#x27;s &quot;the morning paper&quot; blog posts from 2016, &quot;What’s wrong with Git? A conceptual design analysis&quot; [1], which summarizes the paper that critiques git and describes gitless. (The link to the paper at the beginning of the post no longer works, but a commenter suggested this [2] instead.)<p>I should point out that I&#x27;ve never used gitless, and I don&#x27;t know whether it&#x27;s still maintained, but if nothing else the critique itself is interesting.<p>[0] <a href="https:&#x2F;&#x2F;gitless.com&#x2F;" rel="nofollow">https:&#x2F;&#x2F;gitless.com&#x2F;</a><p>[1] <a href="https:&#x2F;&#x2F;blog.acolyer.org&#x2F;2016&#x2F;10&#x2F;24&#x2F;whats-wrong-with-git-a-conceptual-design-analysis&#x2F;" rel="nofollow">https:&#x2F;&#x2F;blog.acolyer.org&#x2F;2016&#x2F;10&#x2F;24&#x2F;whats-wrong-with-git-a-c...</a><p>[2] <a href="https:&#x2F;&#x2F;web.archive.org&#x2F;web&#x2F;20131230194321&#x2F;http:&#x2F;&#x2F;people.csail.mit.edu&#x2F;sperezde&#x2F;onward13.pdf" rel="nofollow">https:&#x2F;&#x2F;web.archive.org&#x2F;web&#x2F;20131230194321&#x2F;http:&#x2F;&#x2F;people.csa...</a>
CodeGlitchover 3 years ago
Having used SVN for a decade before we all moved to git, I have to say I&#x27;ve never noticed any improvement in our productivity. I.e. the limiting factor wasn&#x27;t how well you can do a merge.<p>In fact I&#x27;ve probably experienced more cock ups with git due to its increased complexity and insane naming scheme. I mean &quot;checkout&quot;... Completely inappropriate for what it does.<p>Obviously with git you can work offline then sync later on, but that&#x27;s not something you have to deal with in most organisations.
评论 #29763268 未加载
wyldfireover 3 years ago
The different flavors of processes using git are where I see significant differences in how hard it is to use. GitHub&#x2F;GHE encourages pull requests and force-pushing a candidate branch. Gerrit encourages a staged-commit via &quot;refs&#x2F;for&#x2F;$dest_branch&quot;. Projects like QEMU and the Linux kernel are much more decentralized and leverage requests to pull from dev repos and email patches (&#x27;git send-email&#x27;). All of these differences have some impact on how you use git locally and how easy or difficult it is to recover when you make a misstep.<p>Subjectively I think that - the staging area is unnecessarily confusing (mercurial did this better imo), and the overloading of &#x27;checkout&#x27; causes confusion too.
pmontraover 3 years ago
My pain points with git are the detached head states (so puzzling) and basically everything that concern submodules (very brittle.)<p>Anything about undoing commits, going back to a specific version of the code is less painful but I almost always have to google for it because that are not daily operations and I can&#x27;t reliably remember them. Maybe that would be easier if I used a GUI instead of the command line. Anyway, a simplified git with only basic functionality and dead simple error messages AND part of the standard git distribution would be very useful. After all git does a lot of things but I&#x27;m using only a core 1% of it. Even after 10+ years I reliably know only the basic clone, add, pull, push, checkout, branch, commit, merge, rebase, log, diff commands. I have to google everything else, even how to track a remote branch. It&#x27;s checkout -b but Gould I also fetch and pull it before? You got the idea.<p>And it should be about files, directories and branches, the stuff developers reason about.
axegon_over 3 years ago
No. I had to use mercurial at my old job and everyone in the company saw mercurial as an easy and efficient alternative to git - something which I could not comprehend. And truthfully after using the &quot;easier&quot; solution, I&#x27;d rather take the code, print it out on punch cards and compare them in order to create the adequate changes by taping the holes accordingly and feed the punch cards back into the computer. Now that I&#x27;m saying it and having looked at how mercurial works underneath, it&#x27;s not far off, with the exception that mercurial creates copies of all punch cards and keeps stacking them on top of each other. I&#x27;ve never hated any version control as much and I&#x27;ve had to use svn in the past. Git operates on a strict and crazy stupid model without adding unnecessary features and advertising them as &quot;flexibility&quot; or &quot;ergonomics&quot;. I&#x27;ve worked with juniors who&#x27;ve never used git in the past and in all instances it took them a day at most to figure out how it works.
评论 #29758352 未加载
评论 #29757084 未加载
kmac_over 3 years ago
Git it fine, maybe the naming could be better, but it&#x27;s just something that anyone can get used to. The real issue is crazy workflows people tend to invent instead of using something common like Gitflow. But I have to admit that I prefer Mercurial, enforced immutable history makes everything easier. Also, I root for new alternatives like Pijul.
thisisonthetestover 3 years ago
this always makes me laugh: <a href="https:&#x2F;&#x2F;youtu.be&#x2F;3mOVK0oSH2M" rel="nofollow">https:&#x2F;&#x2F;youtu.be&#x2F;3mOVK0oSH2M</a><p>edit: start at 3:00 mins in
评论 #29757308 未加载
评论 #29757113 未加载
评论 #29756849 未加载
评论 #29756807 未加载
评论 #29758127 未加载
gitgrumpover 3 years ago
Respectfully, version control is not necessarily easy, and even with other versioning tools (they already exist, and some purport to be easier than git), you still have to think about what you&#x27;re trying to do. I see this attitude a lot with new developers, and it&#x27;s troubling. Of course git is hard; what part of computing _isn&#x27;t_ hard? Git is a hell of a lot easier than, say, debugging a kernel panic, or solving a tricky race condition. If the vast majority of developers can&#x27;t get by without learning anything beyond clone-commit-push, then I truly fear for our industry, because I am thoroughly average, and I have a pretty good idea of what git is up to when I run commands.<p>Git might not have the best interface, and you could argue for different models, but some of this stuff just takes time and effort to learn. This is an important lesson for new developers to learn: some of this stuff is not, in fact, easy, and I don&#x27;t where this expectation that it is comes from. It reflects a disturbing trend of learned helplessness I&#x27;ve noticed from newer developers. Computers are hard, but if you want to be the expert, you&#x27;re going to have to figure it out. I don&#x27;t think we need easier version control, I think we need developers who are willing to learn hard things.
imdsmover 3 years ago
Personally, having used it for over a decade now, once you learn how it works, git is perfect. But it&#x27;s not necessarily easy, sure. But then there are a lot of easy solutions out there that aren&#x27;t very good. I&#x27;d say it&#x27;s worth the investment to learn it, but I&#x27;ve seen so, so many developers refuse on the grounds that they simply don&#x27;t want to. These are the folks who think it isn&#x27;t good, the ones without experience.
StephenJGLover 3 years ago
The system has actual complexity. Actual complexity can&#x27;t be abstracted away without reducing functionality. I think git has a poor&#x2F;opaque command semantics outside the basic functions and the API could use some work. I think that a new review or &quot;most used&#x2F;useful commands&quot; and an evaluation of whether the API to accomplish them can be simplified.
评论 #29759840 未加载
AnonCover 3 years ago
Gitless [1] has already been mentioned in another comment here. [2] That makes it easier to use git for those who are not as experienced or haven’t learned about the internals of git.<p>For a different model (and other types of workflows), consider Fossil SCM. [3] Here’s a comparison of fossil with git, and what these tools are a good fit for. [4] I found fossil easier to understand, relatively speaking, and it seems simpler for personal use and for small teams.<p>[1]: <a href="https:&#x2F;&#x2F;gitless.com&#x2F;" rel="nofollow">https:&#x2F;&#x2F;gitless.com&#x2F;</a><p>[2]: <a href="https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=29757043" rel="nofollow">https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=29757043</a><p>[3]: <a href="https:&#x2F;&#x2F;fossil-scm.org&#x2F;" rel="nofollow">https:&#x2F;&#x2F;fossil-scm.org&#x2F;</a><p>[4]: <a href="https:&#x2F;&#x2F;www.fossil-scm.org&#x2F;index.html&#x2F;doc&#x2F;trunk&#x2F;www&#x2F;fossil-v-git.wiki" rel="nofollow">https:&#x2F;&#x2F;www.fossil-scm.org&#x2F;index.html&#x2F;doc&#x2F;trunk&#x2F;www&#x2F;fossil-v...</a>
alkonautover 3 years ago
There are definitely warts and sharp corners. Inconsistent cli api. The story for binaries with Git-LFS is still a mess (try using git over SSH with LFS or explain to a newcomer why it doesn’t work). Conflict resolution is still half stupid with very few easy ways of adding better more specialized merge drivers and deploying it over a company. Improvements like ReReRe and similar aren’t well integrated and enabled by default. Instead they are obscure additions so that you <i>can</i> get a less infuriating behavior. But only if you press the right buttons first.<p>The worst aspect of it though is you can’t set it up to be properly centralized so that you truly bless a location which can keep things like branch name policies, distribute hooks to all employees etc. All that has to be built (poorly) on top, with ample opportunity to accidentally sidestep.
评论 #29763312 未加载
oneepicover 3 years ago
Overall IMO, Git is so good that if you have a problem with usability, it&#x27;s better to work on a wrapper around Git than it is to change Git itself.<p>Maybe a plain English tool that just lets you click through menus to dictate what you want to do. No Git lingo whatsoever. Very rough examples below:<p>1) &quot;I want to save my progress&quot;. (combination of git add and git commit) 2) &quot;I want to go back before my previous save.&quot; (`git revert` on your last commit) 3) &quot;I want to upload my latest work.&quot; (git push) 4) &quot;I want to pull in any new updates.&quot; (git pull)<p>...Et cetera. Stuff that&#x27;s basic enough to satisfy some basic use cases.<p>Then, for anything more complicated than this basic subset, users have to whip out the terminal. The balance between basic and complicated, and too little vs too much, might take time to figure out.
评论 #29760696 未加载
评论 #29757032 未加载
musicmatzeover 3 years ago
No, we need the power that git offers us for scaling workflows and contributions to large ecosystems. Software does not get less complex over time, but more complex - and we need a system to handle contributions to a complex system (read: large, distributed, multi-thousand developer&#x2F;files codebase)!<p>git is as simple as possible while being as powerful as possible.<p>What we need is better education! Not only how git works, but also how clean and scaling development workflows work. I&#x27;ve seen too much &quot;Lets just copy the code to the production environment&quot;-workflows in my live already and I do not even have 3 full years of professional experience as a SW dev!
评论 #29767328 未加载
lormaynaover 3 years ago
I think that mercurial (but also bzr) had a more understandable CLI and ux than git. Unfortunately git won the DCVS war.
cickoover 3 years ago
Yes, it&#x27;s called Mercurial.
评论 #29757011 未加载
Matthias247over 3 years ago
I don’t feel so. Beginners can learn a handful of commands to gets started. And once they started to contribute to a production project they anyway have to learn some additional advanced commands (mostly rebase on top of others changes and conflict resolution). Things beyond a rebase a rarely used by anyone, so most people can just avoid learning those or learn when necessary.
henrydarkover 3 years ago
Working with git for 5 years and SVN for 15 before that on teams ranging from 2 to 30 people, I think the problem of collaborative programming just isn&#x27;t solved yet.<p>It&#x27;s not that git is special or especially hard. It&#x27;s that distributed source control is a hard thing to understand, and no 20 minutes tutorial is going to solve that.
yoavover 3 years ago
I’ve used Git Tower for years because I dislike commandline.<p>Git tower is a “simpler git” that makes many complex tasks safer and easier. But it’s on top of git so you have the full power of git if you do have to jump into the commandline.<p><a href="https:&#x2F;&#x2F;www.git-tower.com&#x2F;mac" rel="nofollow">https:&#x2F;&#x2F;www.git-tower.com&#x2F;mac</a>
mch82over 3 years ago
Maybe just an optional second cli for git that improves usability? If it takes off, switch it to default. Are there any examples of a cli tool with multiple, user selectable cli interfaces?<p>Edit: to answer your question, there’s a lot of value to learning the standard industry scm tool.
评论 #29756907 未加载
martinvonzover 3 years ago
There are tools out there that attempt to provide a simpler and&#x2F;or more powerful CLI while letting you collaborate with others on existing Git repos. Gitless has already been mentioned here, but there&#x27;s also my own tool (<a href="https:&#x2F;&#x2F;github.com&#x2F;martinvonz&#x2F;jj" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;martinvonz&#x2F;jj</a>) and git-branchless (<a href="https:&#x2F;&#x2F;github.com&#x2F;arxanas&#x2F;git-branchless" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;arxanas&#x2F;git-branchless</a>).
softwaredougover 3 years ago
Much of the complex parts of git have to do with rebasing and merging.<p>But I remember that Pre-git this was hard too - the lack of features in VCS systems made it rather error prone. I recall manual 3-way merges and long conversations with colleagues about the right way to work through an SVN merge. Not to mention automated testing was less widespread, so it was harder to catch bugs.<p>Git offers more features here. But the truth is the problem is just hard. Combining changes from multiple authors requires knowing both your tooling and code well.
Gunaxover 3 years ago
No matter how many times I do it, i have troubke squashing.<p>Maybe I am just dumb .
评论 #29756986 未加载
ramesh31over 3 years ago
Yeah. Git is great software, but there&#x27;s seriously no reason I should be typing multiple CLI commands over and over again as part of my workflow in the year 2022.
评论 #29756974 未加载
评论 #29757088 未加载
评论 #29757017 未加载
评论 #29757102 未加载
评论 #29759279 未加载
charcircuitover 3 years ago
No, but something like magit should be provided out of the box with git. Git is pretty simple, but having a good user interface is essential.
nathiasover 3 years ago
Git is the closest any software comes to perfection.
评论 #29756987 未加载
评论 #29756945 未加载
mbfgover 3 years ago
I work with hundreds of developers with git, and yes 80% of them only know the basic workflow. The other 20% know a good bit more and can resolve any problem that occasionally comes up. I don&#x27;t think it has hindered our development at all. People understand how the tool works for what they need, at the level they need. I&#x27;m good with that.
kyriakosover 3 years ago
Basic git flow operations are straightforward. I taught a few graduates who had no prior vcs experience and they had no problem with day to day stuff. Because git is truly a powerful tool its ux becomes complicated once you need to do something beyond the simple operations.
评论 #29756749 未加载
josefrichterover 3 years ago
It might be useful to be able to write git commands in more descriptive way for beginners. “Git add all new files”, “Git commit all files with message ‘foo’”, “Git show history of file ‘readme.txt’”, “Git restore previous version of file ‘readme.txt’”, etc.
2143over 3 years ago
No.<p>It was initially hard.<p>But once I read through the excellent Git Book[1] things became very clear and intuitive.<p>[1] <a href="https:&#x2F;&#x2F;git-scm.com&#x2F;book&#x2F;en&#x2F;v2" rel="nofollow">https:&#x2F;&#x2F;git-scm.com&#x2F;book&#x2F;en&#x2F;v2</a>
darthrupertover 3 years ago
Mercurial was kinda that, and we mostly moved every mercurial repo to git.
mikewarotover 3 years ago
I used the GIT GUI, and it seems easy enough for me, though I haven&#x27;t pulled things out of repositories yet, just stage&#x2F;commit | push to github<p>What&#x27;s needed is better documentation, nothing more.
maydup-nemover 3 years ago
&gt; Git is amazing<p>Let me take a wild guess here, bud, you are definitely an american, amiright?<p>Git is shit, it just happens to be better than the competition coupled with the fact of its huge market share.
bullenover 3 years ago
Since you should not be working in ways that create merge conflicts if you can avoid it I would say a simple distributed disk backup would be enough for 99% of programmers.
bedobiover 3 years ago
Git is complex, which is fine.<p>People take that to mean they need to learn and teach git in intricate detail, and use it in ways that are needlessly complex, which is dumb.
lifeplusplusover 3 years ago
git is worse than Linux in terms of UI
oaf357over 3 years ago
Yes
DarylZeroover 3 years ago
No.