As aliases

alias g-log="git log --graph --format='format:%C(yellow)%h%C(reset) %s %C(magenta)%cr%C(reset)%C(auto)%d%C(reset)'"
alias g-history='gitk --all &'
alias g-checkout='git checkout $(git branch --sort=-committerdate --no-merged | fzf)'
alias g-commit='git citool &'
alias g-amend='git citool --amend &'
alias g-rebase='git rebase --interactive --autosquash'
alias g-pull='git pull --verbose --rebase'
alias g-pushf='git push --verbose --force-with-lease'
alias g-status='git status --ignored'
alias g-clean='git clean -fdx && git reset --hard && git submodule foreach --recursive git clean -fdx && git submodule foreach --recursive git reset --hard'
  • MsPenguinette@lemmy.world
    link
    fedilink
    arrow-up
    0
    ·
    4 months ago

    I’m gonna be completely honest. I don’t truly get all the inner working of git. I’m a senior DevOps Engineer and been using git for a decade, but is git is simular to sed or awk for me. I know how to do what I want really well but when shit goes wrong, I’m flying by the seat of my pants.

    A lot of times, I just know what to do to fix things because it’s rote memory with substitutions. But if you needed me to explain upstreams and rebases in actual detail, I’d be in trouble. But it rarely becomes an actual problem to the level where I’ll dedicate time to learning all the advanced stuff.

    That said, I’ve learnt that most senior people also just pretend they get it all but instead are just relying on rote memorization and basic concepts. Anyone else here in the same camp of being a fraud with git?

    • Graphy@lemmy.world
      link
      fedilink
      arrow-up
      1
      ·
      4 months ago

      Anytime I’m about to get fancy with git I have to stop and remember that I’m an idiot and am probably not doing something else right.

    • lysdexic@programming.dev
      link
      fedilink
      English
      arrow-up
      0
      ·
      edit-2
      4 months ago

      If you need anything more complex than cherrypick, you already screwed up big time.

      I think this is a clueless comment. You can use Git to greatly improve your development workflow if you dare going beyond the naive pull/commit/push workflow.

      Take for example interactive rebase. It let’s you do very powerful stuff such as changing the order of commits in a local branch and merge/squash contiguous commits. This unlocks workflows such as peeling off bugfix and cleanup commits from your local feature branch without having to switch branches. I’m talking about doing something like:

      a) - you’re working on your task, b) - you notice a bug that needs fixing, c) - you fix the bug and commit your fix, e) - you continue to work on your task, f) - you notice a typo in your bugfix code, so you post a fixup commit. g) - you post a few commits to finish your task, h) - you noticed your bugfix commit didn’t had the right formatting, so you post a couple of commits to lint your code both in your bugfix commits and task.

      When you feel you’re done, you use interactive rebase to put everything together.

      a) you reorder your commits to move your bugfix commit to the top of your local branch, followed by the typo fixup commit and the linter commit. b) you mark both the typo and linter commits as fixup commits to merge them with the bugfix one, c) you post a PR with the single bugfix commit, d) you finally post a PR for your task.

      Notice that thanks go git interactive rebase you did not had to break out of your workflow or do any sort of context switch to push multiple PRs. You just worked on things you had to work, and in the end you just reorganize the commit history in your local branch to push your work.

      Is this what you call “screwed up big time”?

      • AggressivelyPassive@feddit.de
        link
        fedilink
        arrow-up
        0
        arrow-down
        1
        ·
        4 months ago

        That sounds like a solution in desperate need for a problem.

        All the “problems” you described boil down to “switching branches is evil”.