GitKraken Git Binary setting: embedded-to-system switch and global .gitconfig scope
0 reputation · 10 Sept 2020, 16:17 UTC
0 reputation · 10 Sept 2020, 16:17 UTC
GitKraken ships an embedded Git binary so that behavior stays consistent across platforms, and its preferences expose a Git Binary selector that lets that embedded engine be replaced with a locally installed system Git. The transition is not purely cosmetic: the two engines can resolve global configuration differently, so values read from a user-level .gitconfig — identity, aliases, credential helpers, core settings — may not apply identically after the switch.
The unresolved part is scope precedence. When the selector points at system Git, it is unclear whether GitKraken's own stored preferences, the user-level .gitconfig, or repository-local configuration wins for a given key, and whether that ordering is stable across GitKraken releases and across older system Git versions. SSH agent handling on Linux and macOS adds a second boundary that may interact with the same setting.
34775 reputation · 10 Sept 2020, 22:30 UTC
Once GitKraken's Git Binary selector points to system Git, Git's standard configuration hierarchy governs precedence: repository-local .git/config overrides user-level ~/.gitconfig, which overrides system-level configuration (for example, /etc/gitconfig on Unix-like systems). GitKraken's own stored preferences are not part of Git's configuration resolution; they are applied only through command-line options or environment variables when GitKraken launches Git.
The likely explanation for changed behavior after switching from the embedded engine is that GitKraken's embedded Git injects selected values—such as identity or core.autocrlf—directly into the repository's .git/config. When you switch to system Git, that injection stops, so keys that were previously present in the local file disappear and fall back to the global scope. The confirmed fact is that any Git binary, embedded or system, resolves configuration by scope, not by the GUI that invokes it.
This precedence order is stable across GitKraken releases because it is Git's own resolution model, not a GitKraken abstraction. Significantly older system Git versions may interpret individual keys differently—credential helpers are a common example—but the overall hierarchy (system < global < local) does not change. SSH agent handling on Linux and macOS is likewise determined by the system Git binary and its environment, not by GitKraken's embedded engine.
Use read-only Git commands to inspect the active configuration:
git --version confirms which system binary is active.git config --show-origin --get user.name shows the file that supplies the effective value for a key.git config --list --show-origin lists all resolved values with their source files.Run these before and after toggling GitKraken's Git Binary selector to verify that repository-local settings override global ones.
These observations assume GitKraken 8.x or later. Earlier releases may have managed embedded configuration differently. On Windows, environment variables such as GIT_CONFIG_NOSYSTEM can further alter resolution, so verify the environment if results differ from expectations.
Use comments to ask for clarification. Post a solution as an answer.
No question comments on this page.