I work regularly with several different project types and languages across Windows, Mac, and Linux.

I find some basic settings for Git and VS Code smooth out some headaches.

For VS Code, I have (at a minimum) several base plugins:

  • C#
  • Chef Extension for Visual Studio Code
  • Git Blame
  • Git History (git log)
  • PowerShell
  • Rust
  • Ruby
  • XML Tools

And my user settings include:

"files.eol": "\n", // Windows usually doesn't care, but Linux/Mac tooling is way more sensitive
"editor.trimAutoWhitespace": true,
"editor.fontSize": 16,
"rust.cargoHomePath": "C:\\Users\\Steven\\.cargo", // Path to Cargo home directory, mostly needed for racer. Needed only if using custom rust installation.
"editor.formatOnPaste": true,
"editor.formatOnSave": true,
"window.zoomLevel": 0,
"[powershell]": {
    "editor.tabSize": 4
},
"[ruby]": {
    "editor.tabSize": 2
}

My git config consists of:

[credential]
	helper = wincred
[user]
	email = <my email here>
	name = Steven Murawski
	signingkey = <my gpg signing key here>
[diff]
	tool = default-difftool
[difftool "default-difftool"]
	cmd = code --wait --diff $LOCAL $REMOTE
[alias]
	commit = commit -S -s
[core]
	editor = code --wait
	eol = lf
	autocrlf = input
	excludesfile = ~/.gitignore
[difftool "winmerge"]
	cmd = /c/Program\\ Files\\ \\(x86\\)/WinMerge/WinMergeU.exe
[gpg]
	program = c:/Program Files (x86)/GNU/GnuPG/gpg2.exe

Since I work on a number of projects that require a DCO signoff, I just default to signing off my commits (alias.commit) and I GPG sign them because I like how they look in the GitHub UI. ;)

I’ve set git to only use Linux line feeds for new clones/fetches (core.eol) and change anything with CRLFs on upload (core.autocrlf). To aid in this, my editor config has line endings set to \n as well.