Sunday, July 10, 2022

Git Config different scopes

Hello DevOps or DevSecOps team here in this post I would like to expose more details about how the Git configurations can be done and viewed and where it is going to stored as file.

Git Basic Configurations and scopes

Let's see what are options we have for "git config" command in a Linux system, here I've used Ubuntu Linux to execute all 'git config' commands. 

git config command
git config scopes

There are three different levels : local, global, system-level configuration values attributes defined in Git. 

  1. System
  2. Global
  3. Local

System level config

Git allows us to define System wide configuration that means the configured values will be available for all users in the system and for every project repository as well.

# System level configurations will be stored in /etc/gitconfig file
git config --system core.editor "vim"
git config --system merge.tool "vimdiff"
The execution of the commands 

git config --global command example
git config --global command example


Global level config

Git configure values are defined at user level you can work on multiple repositories within the same user scope. If you define same values defined as in the system then user level values will be overrides.

 git config --global alias.co checkout
 git config --global alias.graph log --oneline --all --graph --decorate
 git config --global alias.graph "log --oneline --all --graph --decorate"
 git config --global alias.st status
 git config --global alias.ci commit
 git config --global alias.br branch
 git config --global --list
 cat .gitconfig
Defining Global level configuration and where it stores on hands-on:

git config --global scope

Local (Repository) level config

The configurations made at the local level are more overridden capacity than other two scopes. This will be useful project wise repository uses these definitions.

Now we configure global level user settings are as follows:

mkdir gitdemo-project
cd gitdemo-project/
git init
git config --local user.name "BhavaniShekhar"
git config --local user.email  "bhavanishekhar@vybhava.com"
git config --local --list
git st
cat .git/config
Le'ts execute this above commands for local repository wise config 

git config --local example
git config --local scope example


Troubleshooting: Learn from the Mistakes

I've proceeded here and created a file named 'mytest.py' and entered the sample code:

# This is first testing python program

print("Hello Git Learners!")

First file adding to index

git add mytest.py

warning: LF will be replaced by CRLF in mytest.py.
The file will have its original line endings in your working directory


Note We will discuss about CRLF issue in the 'Setting end line'.

At the time of committing the code found that mistake in the mail-id that 'devopshunger' given instead of  'devopshunter'. Learn from mistakes! 

How to edit my git configuration value for user.email? 

It will be the same command it will override to reset the value.

git config --global user.email 'gladiator@devopshunter.com'

Now new problem configuration is changed but my git log shows that old mailid! how to update that? We have option '--amend', where this option will help us to amend previous commit.

git commit --amend --reset-author
[master 4ec5de9] initial commit for the git learn project
 1 file changed, 3 insertions(+)
 create mode 100644 mytest.py


Unless you don't setup the global user config values you will be warned and automatically takes the operating system user and hostname as git user details. If you setup your customized user.name and user.email that will be used to commit the changes in the local and remote repo. When everyone go for look into "git log" it will show tracking history about who did the code changes and what and when it was done that change.

Verify the Configurations that you made to the global level.

 git config --list |grep user
user.name=devops.warrior
user.email=gladiator@devopshunter.com


How to Setup line ending preferences  in Windows?

This will be trick that you need to use for the GitOps to work better outputs.

For Mac/Unix/Linux platform users

git config --global core.autocrlf input
git config --global core.safecrlf true


For Windows platform user

git config --global core.autocrlf true
git config --global core.safecrlf true


Try this trick on your git bash.

Relevant References: 

  1. Git Alias
  2. Git on PowerShell
  3. Git config setting up repo

No comments:

Categories

Kubernetes (24) Docker (20) git (13) Jenkins (12) AWS (7) Jenkins CI (5) Vagrant (5) K8s (4) VirtualBox (4) CentOS7 (3) docker registry (3) docker-ee (3) ucp (3) Jenkins Automation (2) Jenkins Master Slave (2) Jenkins Project (2) containers (2) create deployment (2) docker EE (2) docker private registry (2) dockers (2) dtr (2) kubeadm (2) kubectl (2) kubelet (2) openssl (2) Alert Manager CLI (1) AlertManager (1) Apache Maven (1) Best DevOps interview questions (1) CentOS (1) Container as a Service (1) DevOps Interview Questions (1) Docker 19 CE on Ubuntu 19.04 (1) Docker Tutorial (1) Docker UCP (1) Docker installation on Ubunutu (1) Docker interview questions (1) Docker on PowerShell (1) Docker on Windows (1) Docker version (1) Docker-ee installation on CentOS (1) DockerHub (1) Features of DTR (1) Fedora (1) Freestyle Project (1) Git Install on CentOS (1) Git Install on Oracle Linux (1) Git Install on RHEL (1) Git Source based installation (1) Git line ending setup (1) Git migration (1) Grafana on Windows (1) Install DTR (1) Install Docker on Windows Server (1) Install Maven on CentOS (1) Issues (1) Jenkins CI server on AWS instance (1) Jenkins First Job (1) Jenkins Installation on CentOS7 (1) Jenkins Master (1) Jenkins automatic build (1) Jenkins installation on Ubuntu 18.04 (1) Jenkins integration with GitHub server (1) Jenkins on AWS Ubuntu (1) Kubernetes Cluster provisioning (1) Kubernetes interview questions (1) Kuberntes Installation (1) Maven (1) Maven installation on Unix (1) Operations interview Questions (1) Oracle Linux (1) Personal access tokens on GitHub (1) Problem in Docker (1) Prometheus (1) Prometheus CLI (1) RHEL (1) SCM (1) SCM Poll (1) SRE interview questions (1) Troubleshooting (1) Uninstall Git (1) Uninstall Git on CentOS7 (1) Universal Control Plane (1) Vagrantfile (1) amtool (1) aws IAM Role (1) aws policy (1) caas (1) chef installation (1) create organization on UCP (1) create team on UCP (1) docker CE (1) docker UCP console (1) docker command line (1) docker commands (1) docker community edition (1) docker container (1) docker editions (1) docker enterprise edition (1) docker enterprise edition deep dive (1) docker for windows (1) docker hub (1) docker installation (1) docker node (1) docker releases (1) docker secure registry (1) docker service (1) docker swarm init (1) docker swarm join (1) docker trusted registry (1) elasticBeanStalk (1) global configurations (1) helm installation issue (1) mvn (1) namespaces (1) promtool (1) service creation (1) slack (1)