midwest.social

AMillionNames, to programmerhumor in I'm going to sit down and actually learn git this week
yoz, to programmerhumor in I'm going to sit down and actually learn git this week

Lol what’s git?

twei,

git gud. HA, GOTTEM

UNWILLING_PARTICIPANT,

Yes you did

NaoPb,

It’s what americans from a rural area say when they want you to go away.

EpicFailGuy,
@EpicFailGuy@lemmy.world avatar

is what people who don’t know vim and rsync have to use to mimic 1% of our power

kaffiene,

I just did myself an eye injury due to rolling them so much

alcoholicorn,

It’s the thing you use to create a local copy of the main code base, and then merge your changes back in.

OP hasn’t done anything, and there’s 7 conflicts between his code and main. Presumably because someone else merged their changes in the time between when OP pulled his local copy and tried to push his (non-existent) changes.

UNWILLING_PARTICIPANT,

A very complicated way to do


<span style="color:#323232;">My project
</span><span style="color:#323232;">My project (1)
</span><span style="color:#323232;">My project WORKING
</span><span style="color:#323232;">My project (2)
</span><span style="color:#323232;">My project (2) (1)
</span>
yoz,

Lol

stilgar, to programmerhumor in I'm going to sit down and actually learn git this week
@stilgar@infosec.pub avatar

Pro tip: If your code gets flogged by git, you can always get revenge with git reflog 😉

cupcakezealot, to programmerhumor in I'm going to sit down and actually learn git this week
@cupcakezealot@lemmy.blahaj.zone avatar

lemme rebase the main branch onto my branch.

two minutes later

1 merge conflict of 57 [abort] [continue]

affiliate,

this is easily fixed by copy pasting the files into a new directory and never opening git again out of fear

caseyweederman,

Project managers hate this one weird trick!

kamen,

One key thing that can help you wrap your head around rebasing is that branches get switched while you’re doing it; so, say you’re on branch feature and do git rebase master, for any merge conflict, whatever’s marked “current” will be on master and what’s “incoming” is from feature.

There’s also git rerere that should in theory remember a resolution you do between two branches and reuse it every time after the first; I’ve rarely used it in practice; it would happen for long lived branches that don’t get merged.

roastpotatothief, to programmerhumor in I'm going to sit down and actually learn git this week

Git is a great invention but it has a few design flaws. There are too many ways to confuse it or break it, using commands that look correct, or just forgetting something. I ended up writing simple wrapper script codebase to fix it. Since then no problems.

oce,
@oce@jlai.lu avatar

It was conceived for experts so the new user experience is shit and the UI is not intuitive. But it has become such a widespread standard that it is very hard to completely overhaul the UI.

roastpotatothief,

Yes you couldn’t change something so widely used. Look what happened with python 3.

Fortunately there’s already a tradition among Git users of building a UI on top of the git UI. My project is just a slightly better version of those. It lays a simple sensible interface on top of the chaotic Git interface.

sheogorath,

TBH compared to the old versioning system people used to use like SVN and Mercurial. Git is a godsend. Just taking your time in learning and not using a GUI client works wonders in learning how it works. Especially when all the GUI clients are basically a collection of commands being executed so if you fuck things up on CLI you know what happened vs using GUI.

lolcatnip,

I’m pretty sure Mercurial is newer than git, or at least from the same generation.

Pxtl,
@Pxtl@lemmy.ca avatar

Even for experts the user experience is shit. Too much has to be done manually when the default should be automatic, like fetching before pull, recursing when working with repos that use submodules, allowing mismatched casing on case insensitive filesystems, etc.

oce,
@oce@jlai.lu avatar

Submodule commands are such mess, which is sad because it is a great feature.

Shhalahr,

Yeah. It’s got no abstraction between the UI and the implementation. You just want to manage code versions, but to use Git, you need to learn how to manage history graphs.

Andrew15_5, to programmerhumor in I'm going to sit down and actually learn git this week
PeWu,

Oh, you haven’t seen my lack of skill then.

Andrew15_5,

Show me.

lseif, to programmerhumor in I'm going to sit down and actually learn git this week

if u ever get a tricky merge conflict, just git push --force. this automatically works out the right code to keep (your own)

erogenouswarzone,
@erogenouswarzone@lemmy.ml avatar

Also, a way to never have to work again!

Nahdahar,

Except if you’re an employer in a very small company.

Source: my boss did this at the first company I worked at.

Netrunner, to programmerhumor in I'm going to sit down and actually learn git this week
@Netrunner@programming.dev avatar

If you can’t use git I don’t see how you’re gonna do with other things. It’s dead simple.

jack,

Solving merge conflicts or rebasing is not simple

lightnegative,

Do it enough times and it stops being scary.

Using a tool like VSCode to perform the actual merges on individual files also helps because it shows what “yours” and “theirs” changes are from a user perspective, not a git perspective

boomzilla,

The 3-way merge editor in VSCode is a fantastic tool. Really helps in visualizing what comes from where and preventing merge accidents.

buzziebee,

It’s doable once you know what you’re doing. I can do it all via the cli, but I personally use gitkraken most of the time and it’s just so much easier and more ergonomic.

I also see a lot of the Devs who insist they know what they’re doing create horrible messes of their branches super easily via the commit tree. People should just use whatever works best for them to get the job done.

space_comrade,

It’s not THAT complicated but I wouldn’t call it dead simple. When you understand how git works internally yeah it’s pretty simple but people usually start with the idea that it’s a tool to put your code on a server to synchronize with other people and only later learn that you have both a local and a remote (or multiple remote) tree and how the tree really works.

I think the problem is most git 101 tutorials teach it wrong, IMO the best git tutorial is this: wildlyinaccurate.com/a-hackers-guide-to-git/

Unfortunately it’s pretty dense so it’s gonna scare off a lot of newbies.

oce, (edited )
@oce@jlai.lu avatar

If it was dead simple you wouldn’t need to learn 10 new concepts and google commands regularly even after using it for a couple of years. You probably forgot how you struggled at first. I have taught it multiple times and I see how beginners struggle.

sajran,

I would actually say it’s VERY complicated but in daily work you probably need like 5 commands and those aren’t hard at all.

Shinji_Ikari,
@Shinji_Ikari@hexbear.net avatar

Its not dead simple but its also not extremely complex.

I’m currently working with some interns and there’s just concepts they were never exposed to. Without decent mentoring, git can be difficult because a lot of the workflow does come with experience.

That being said everyone needs to stop acting like its an impossible task to properly do source control. There is some truth that if you don’t care enough to do your source control, you don’t care enough to write decent code. Its not a moral failing, just take some pride in your craft.

Show the newbies how to care and they’ll care enough to want to do it right. Measure twice, cut once and all that.

fox,

It’s definitely not simple to use but I agree that the conceptual model it represents is straightforward. I think a lot of the problems people have with git come from not understanding the underlying data structure before learning how to manipulate it.

brainw0rms, to programmerhumor in I'm going to sit down and actually learn git this week
@brainw0rms@hexbear.net avatar

or for people who don’t have a week to dedicate to learning utterly deranged nonsense, just use sublime merge and never look back. comfy

comrade_pibb,
@comrade_pibb@hexbear.net avatar

sublime merge is pretty great, but having a working familiarity with the underlying tool is invaluable when shit inevitably goes sideways while collaborating

doppelgangmember, to programmerhumor in I'm going to sit down and actually learn git this week

Just rebase your life already

dan, to programmerhumor in I'm going to sit down and actually learn git this week
@dan@upvote.au avatar

Honestly, just use a GUI. Graphical user interfaces were designed for a reason. I usually use SourceTree or the Git functionality built in to Visual Studio or VS Code.

It’s good to know how things work under-the-hood (e.g understand Git’s object model, some basic commands, etc) but don’t feel like you need to use the command-line for everything.

zalgotext,

In my experience, using GUIs is how people fuck themselves, and then I have to unfuck them via the command line.

Git’s interface is bad, yes. It has a step learning curve, yes. But I truly think the only real way to overcome those obstacles is to learn how git works, learn all the nitty gritty details, not hide from them.

CapeWearingAeroplane,

I use a GUI (GitKraken) to easily visualise the different branches I’m working on, the state of my local vs. the remote etc. I sometimes use the gui to resolve merge conflicts. 99 % of my gut usage is command line based.

GUI’s definitely have a space, but that space is specifically doing the thing the command line is bad at: Visualising stuff.

lseif,

lazygit or tig are terminal interfaces for git. very nice, best of both worlds imo. every action shows the git command ran at the bottom, and its a lot easier to see at a glance the status, diff, log, etc.

kamen,

My take is use a GUI for anything read-only/nondestructive (i.e. anything that won’t modify your local or remote state). It’s nice for example to compare the state of two branches.

For anything that does changes make sure you know what’s happening under the hood, otherwise you might shoot yourself in the foot. It’s convenient for example to do a commit and push in one go, but then you lose the ability to edit any changes (you’re forced to either do another commit, or change your local commit and force push).

In VSCode you can go to the Output pane and switch to Git - there you’ll see everything that gets done through Git’s CLI for whatever you do through the GUI (although it can be a bit noisy); same goes other GUI utils.

shiveyarbles, to programmerhumor in I'm going to sit down and actually learn git this week

When we switched from svn, we had to figure out git with submodules… that was fun

fer0n, to programmerhumor in I'm going to sit down and actually learn git this week

This has been the best git tutorial I’ve come across so far. Nicely interactive and gamified. learngitbranching.js.org

UNWILLING_PARTICIPANT,

This is great, but I just want to say that the best way to use git is to simply stop doing so much in one branch. Branches should not last longer than a week, ideally

ArbitraryValue, to programmerhumor in I'm going to sit down and actually learn git this week
  1. git pull
  2. git reset --hard HEAD
  3. try not to cry
  4. cry a lot
CalcProgrammer1,
@CalcProgrammer1@lemmy.ml avatar

git reflog, you can get your old commits back

ArbitraryValue,

But I want to pretend none of this ever happened.

winterayars,

<span style="color:#323232;">git can we just pretend the last 30 minutes never happened
</span>

I feel like that would get more use than people want to admit.

TeaHands, to programmerhumor in I'm going to sit down and actually learn git this week
@TeaHands@lemmy.world avatar

Highly recommend bookmarking ohshitgit.com, it’ll steer you right 👍

  • All
  • Subscribed
  • Moderated
  • Favorites
  • random
  • uselessserver093
  • Food
  • aaaaaaacccccccce
  • test
  • CafeMeta
  • testmag
  • MUD
  • RhythmGameZone
  • RSS
  • dabs
  • KamenRider
  • Ask_kbincafe
  • TheResearchGuardian
  • KbinCafe
  • Socialism
  • oklahoma
  • SuperSentai
  • feritale
  • All magazines