Book Image

Git: Mastering Version Control

By : Aske Olsson, Jakub Narębski, Ferdinando Santacroce, Rasmus Voss
Book Image

Git: Mastering Version Control

By: Aske Olsson, Jakub Narębski, Ferdinando Santacroce, Rasmus Voss

Overview of this book

Git is one of the most popular types of Distributed Version Control System. Since its inception, it has attracted skilled developers due to its robust, powerful, and reliable features. Like most powerful tools, Git can be hard to approach for the newcomers. However, this learning path will help you overcome this fear and become adept at all the basic and advanced tasks in Git. This course starts with an introduction to version control systems before you delve deeply into the essentials of Git. This serves as a primer for the topics to follow such as branching and merging, creating and managing a GitHub personal repository, and fork and pull requests. You'll also learn how to migrate from SVN using Git tools or TortoiseGit and migrate from other VCSs, concluding with a collection of resources, links, and appendices. As you progress on to the next module, you will learn how you can automate the usual Git processes by utilizing the hook system built into Git. It also covers advanced repository management, including different options to rewrite the history of a Git repository before you discover how you can work offline with Git, how to track what is going on behind the scenes, and how to use the stash for different purposes. Moving forward, you will gain deeper insights into Git's architecture, its underlying concepts, behavior, and best practices. It gives a quick implementation example of using Git for a collaborative development of a sample project to establish the foundation knowledge of Git operational tasks and concepts. By exploring advanced Git practices, you will attain a deeper understanding of Git’s behavior, allowing you to customize and extend existing recipes and write your own. This Learning Path is a blend of content, all packaged up keeping your journey in mind. It includes content from the following Packt products: • Git Essentials, Ferdinando Santacroce • Git Version Control Cookbook, Aske Olsson and Rasmus Voss • Mastering Git, Jakub Nar?bski
Table of Contents (36 chapters)
Git: Mastering Version Control
Credits
Preface
3
Git Fundamentals – Working Remotely
Bibliography
Index

Configuring and using Git scripts


Yes, we have aliases, and aliases do what they do best—take small one-liners and convert them into small useful Git commands. However, when it comes to larger scripts that are also a part of your process, and you would like to incorporate them into Git, you can simply name the script git-scriptname, and then use it as git scriptname.

How to do it...

There are a few things to remember. The script has to be in your path so that Git can use the script. Besides this, only imagination sets the boundary:

  1. Open your favorite editor and insert the following lines in the file:

    #!/bin/bash
    NUMBEROFCOMMITS=$(git log --all --oneline | wc -l)
    while :
      WHICHCOMMIT=$(( ( RANDOM % ${NUMBEROFCOMMITS} )  + 1 ))
      COMMITSUBJECT=$(git log --oneline --all -${WHICHCOMMIT} | tail -n1)
      COMMITSUBJECT_=$(echo $COMMITSUBJECT | cut -b0-60)
    do
      if [ $RANDOM -lt 14000 ]; then 
        printf "\e[1m%-60s \e[32m%-10s\e[m\n" "${COMMITSUBJECT_}"  ' PASSED'
      elif [ $RANDOM -gt 15000 ]; then...