Sunday, February 28, 2021

Git log - commit history

Here is the GitOps story! we started learning more depth of every GIT commit history using git CLI. In this post, we have touched some rea-time scenario-based question and answers with practical examples which are useful for other DevOps team members. 

The best question to help release management - who worked on the critical program/script which is in the release process? This can be found using the git log command. 

git log



The most interesting story if someone left the company and need to know what he did in his last commit. Tracking changes all of them done by that particular user. 

The git log having many options:
  1. sorting
  2. filtering
  3. output formatting

Let's see in detail by with experimenting each with an example.

How to get the git log in a "Sorting order"?

Here we have a couple of sorted commit history commands. 

Using the --pretty value with Oneline to going to give you the log output in simplify format.
git log --pretty=oneline
  
The output combination of COMMIT_ID COMMIT_MESSAGE | Branch level changes

How to do Filtering while getting the git-log output?

To filter out we can use different options
  1. author - User name of the commit made by
  2. date ranges - We have date options with --before and --after where date can be given in "YYYY-MM-DD" format
  3. regular-expressions - Linux grep like option --grep that takes any text patter to filter 
  4. path - file or directory path can be used to narrow down your log filtering


Find the commit history of a user

Here we have an option to get all changes made by a person/author. If you want to see all commits made by yourself then you can replace the "AUTHOR NAME" with your git user. name what you have configured. 
git log --author="AUTHOR NAME"

For example: Find all code changes done by user "Rajasekhar"

Find History in range of dates

You have a choice of selecting range of date before and after dates.
git log --before="date1" --after="date2"

For example: Find all commits between 19th Feb to 26th Feb 2021

Date range logs



Commit History with a regular expression

Git commit history can be extracted with the regular expression that matches to the word or pattern that matches the existing commit messages.
git log --grep="PATTERN"
For example, find all the 'commit's having an "adding" pattern.

git log with grep



 

Commit history of a given path

We can use the current work-tree contained in any one of the folders as the path to check the history of that particular directory.
git log -- [PATH]
Example for finding the git log history of file of folder as shown below:

git log -- . # current folder
git log -- WebLogic/samples # specific directory history
git log -- README.md # specific file history  
git commit history of givven path
what is happening in this directory?


Knowing about a particular code file we can use -- then the filename.
For example; 

git history of a file
Commit History of a file

What happened since the date?


Changes from a particular "date" onwards we can get using --since option.


git log --since="YEAR-MM-DD"

For example, find all change that happen since 22-Feb-2021

git commit changes from date
Since date onwards commit changes

In most of the real scenarios we need to know the files which are changed recently. This git-log command with the oneline option and abbreviated commit id helps us to have a simple view

git log --pretty=oneline --abbrev-commit  

git log command with --abbrev-commit to short commit-id output


You can use this for more combinations as per your project requirements To get all oneliner logs with short commit id and filtered with specific author changes:
git log --pretty=oneline --abbrev-commit --author "Bhavani" 
To get all oneline logs with short commit id for all changes made for "WebLogic" pattern matched in the commit messages.
git log --pretty=oneline --abbrev-commit --grep "WebLogic" 
Further learning post:

Please write your comments we will workout accordingly and respond to each message within 3 days.


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)