# git The global git config (`~/.gitconfig`), every key, reached from the user page's "More git settings" button. Back returns to the user page. One row per value, grouped by section in file order, so a key set several times shows several rows. Enter saves a row, Escape undoes an edit, Remove drops that one value, and the Add row takes `section.key` and a value. "Edit in editor" opens the file in Sublime Text. `gitcfg` does every read and write, through `git config`, so the file keeps its comments and layout. `--fixed-value` makes a write touch one value of a multi-valued key. `set` and `unset` first check the old value is still there, because `--replace-all` with no match appends instead of failing, and the file may have changed in the editor. After every write the page reads the list again; a failure shows git's reason under its row. A value held twice by the same key is refused, since git would merge both rows into one on edit and cannot remove just one; fix those in the editor. A file git cannot parse shows git's error instead of an empty list. Every reload rebuilds the rows, so an edit typed into one row and not saved with Enter is lost when another row is saved or removed. Checks: `./test-gitcfg.sh` (a throwaway `GIT_CONFIG_GLOBAL`) and `node desktop/modules/git/test_git.js`. Not here: per-repository, system and `[include]`d configs. A value holding a newline edits on one line; use the editor for those.