June 27th, 2024

My .gitconfig File Dissected

The article delves into .gitconfig file breakdown, covering user details, GPG key signing, Git aliases, and workflow optimization tips. Encourages readers to customize their .gitconfig for enhanced Git usage.

Read original articleLink Icon
My .gitconfig File Dissected

The article dissects the author's .gitconfig file, explaining its sections and configurations. It starts by detailing the user section, which includes the author's name and email used in commits and tags. The importance of GPG key signing for commit verification is highlighted. Git aliases for common commands are introduced to save time, along with an alias for a detailed commit history display. The author emphasizes the efficiency gained through time-saving aliases and the autoSetupRemote feature to avoid errors when pushing branches. The article concludes by encouraging readers to modify their own .gitconfig files for a better understanding of Git. Various configurations and their impacts on workflow efficiency are discussed, providing insights into optimizing Git tool usage.

Related

I kind of like rebasing

I kind of like rebasing

People debate Git workflows, favoring rebasing for a linear history. Redowan Delowar prefers rebasing to consolidate changes and maintain a clean commit history. They discuss interactive rebasing benefits, squashing commits, handling conflicts, and offer practical tips.

Start all of your commands with a comma (2009)

Start all of your commands with a comma (2009)

The article discusses creating a ~/bin/ directory in Unix to store custom commands, avoiding name collisions with system commands by prefixing custom commands with a comma. This technique ensures unique, easily accessible commands.

Show HN: Triplit – Open-source syncing database that runs on server and client

Show HN: Triplit – Open-source syncing database that runs on server and client

The GitHub URL provides details on `@changesets/cli`, a tool for versioning and publishing code in multi-package and single-package repositories. Full documentation and common questions are accessible in their repository.

Git-cliff – Generate changelog from the Git history

Git-cliff – Generate changelog from the Git history

A customizable changelog generator, git-cliff, is now in version 2.0. It supports regex parsers, config files, and conventional commits. Integration available for Rust, Python, and Node.js. Copyright spans 2021-2024.

Git Workflows for API Technical Writers

Git Workflows for API Technical Writers

Technical writers encounter challenges in maintaining API documentation aligned with evolving designs. Git workflows provide version control and collaboration benefits. Strategies like merging copy improvements, code annotations, and OpenAPI overlays enhance documentation quality. Involving writers in API design ensures user-centric content. Storing docs in separate repositories can resolve Git conflicts.

Link Icon 10 comments
By @disintegrator - 4 months
One git life hack I adopted is to sign my commits with an SSH key that is stored in 1Password. Anytime a tool like git or vs code (with git under the hood) wants to sign commits, fetch/pull/push a remote, or clone a repo I get a nice pop up from 1P which prompts for TouchID on my macbook. My SSH keys don't not live on my machine as a result. This also works with SSH agent forwarding if you develop inside a VM or remote machine.
By @wizerno - 4 months
Julia Evans blog post [1] on the same topic, contains some more useful options.

[1] https://jvns.ca/blog/2024/02/16/popular-git-config-options/

By @joshka - 4 months
I'm generally addicted to the oh-my-zsh git plugin aliases[1]. Mostly gswm (git switch main), gswc (git switch --create), gpf (git push --force-with-lease), gcam (git commit all --message), gcan! (git commit all --amend --no-edit), grbm (git rebase main), grbc (git rebase --continue), grba (git rebase --abort)

gwip (git add -A; git rm $(git ls-files --deleted) 2> /dev/null; git commit --no-verify --no-gpg-sign --message "--wip-- [skip ci]") is kinda useful when I want an actual commit before I change branches to do something else (I use this more often than stashing.

I also am a fan of git-brv from git extras (list branches verbose sorted by date - with the option to sort reverse so the last modified branch is the last one on your terminal)

And also git-trim - clean up merged branches

[1]: https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins/git

By @dennis-tra - 4 months
I’d like to add

  please = push —-force-with-lease
for rebase-heavy workflows
By @ribasushi - 4 months
Cool stuff, thanks for sharing. I strongly recommend you add `rerere.enabled true` (makes `git pull --rebase` life easier)
By @suralind - 4 months
Really cool, here's mine [0] that's slightly longer. I also have a bunch of other stuff that you may like.

I also have a few handy aliases for commands I never remember [1]. Don't need to have shortcuts like `git co` and others, because I use CMD + R with fzf to find what I need.

[0]: https://github.com/artuross/dotfiles/blob/main/home/dot_conf...

[1]: https://github.com/artuross/dotfiles/blob/main/home/dot_conf...

By @pajko - 4 months
Should have a setting for autocrlf and safecrlf to avoid shooting yourself in the foot while copying the config between platforms.
By @GauntletWizard - 4 months
There's a bug in here: some git git commands will fail if you are in a subdirectory; i.e. git git add foo, because the behavior of ! Is to run those from the git root. My solution is:

  git = !cd -- ${GIT_PREFIX:-.} && git
By @Am4TIfIsER0ppos - 4 months
If you want an interactive commit graph, among other features, look at tig https://jonas.github.io/tig/
By @fp64 - 4 months
Nice to see other people carrying on with ci and co aliases as well. I don’t really remember, co goes back to cvs no? ci as well I think?