Recommended Ansible Git configuration
The following file contains ansible tasks for a given user (identified by username
) to set up the recommended Git configuration. It includes setting the user’s name and email, configuring the editor, setting up credential management, defining aliases, and configuring color settings.
- name: Set git user name
git_config:
name: user.name
value: "{{ fullname }}"
scope: global
become: true
become_user: "{{ username }}"
- name: Set git user email
git_config:
name: user.email
value: "{{ email }}"
scope: global
become: true
become_user: "{{ username }}"
- name: Set git editor to code
git_config:
name: core.editor
value: "code"
scope: global
become: true
become_user: "{{ username }}"
- name: Run git-credential-manager configure
command: git-credential-manager configure
become: true
become_user: "{{ username }}"
- name: Configure git credential store
git_config:
name: credential.credentialStore
value: "plaintext"
scope: global
become: true
become_user: "{{ username }}"
- name: Configure git aliases
git_config:
name: "alias.{{ item.name }}"
value: "{{ item.value }}"
scope: global
become: true
become_user: "{{ username }}"
loop:
- { name: "st", value: "status" }
- { name: "ci", value: "commit" }
- { name: "br", value: "branch" }
- { name: "co", value: "checkout" }
- { name: "df", value: "diff" }
- { name: "lg", value: "log -p" }
- { name: "lol", value: "log --graph --decorate --pretty=oneline --abbrev-commit" }
- { name: "lola", value: "log --graph --decorate --pretty=oneline --abbrev-commit --all" }
- { name: "mr", value: "!sh -c 'git switch master ; git branch -D mr-$1-$2 ; git fetch $1 merge-requests/$2/head:mr-$1-$2 && git checkout mr-$1-$2' -" }
- { name: "pu", value: "!sh -c 'git switch master ; git pull upstream master'" }
- { name: "r", value: "!r() { git rebase -i HEAD~$1; }; r" }
- { name: "rium", value: "rebase -i upstream/master" }
- { name: "rum", value: "rebase upstream/master" }
- { name: "rhum", value: "reset --hard upstream/master" }
- { name: "pusu", value: "!git push --set-upstream origin $(git symbolic-ref --short HEAD)" }
- { name: "sc", value: "!git switch -c" }
- name: Configure git color settings
git_config:
name: "color.{{ item }}"
value: "auto"
scope: global
become: true
become_user: "{{ username }}"
loop:
- diff
- status
- branch
- name: Configure git push settings
git_config:
name: "{{ item.name }}"
value: "{{ item.value }}"
scope: global
become: true
become_user: "{{ username }}"
loop:
- { name: "push.default", value: "tracking" }
- { name: "push.autoSetupRemote", value: "true" }
- name: Configure git diff settings
git_config:
name: "{{ item.name }}"
value: "{{ item.value }}"
scope: global
become: true
become_user: "{{ username }}"
loop:
- { name: "diff.renamelimit", value: "0" }
- { name: "diff.algorithm", value: "patience" }
If this post helped you, please consider buying me a coffee or donating via PayPal to support research & publishing of new posts on TechOverflow