What is Git?
Git is a free, open-source, widely used, and distributed version control system that helps to track changes of any set of files. When comes to Git there are two ways to work with, Command, and Graphical User Interface – GUI. This article explains to you how Git works and the top most commonly used command use all day every day.
How does Git keep track of your records?
There are basically four parts of Git flow you need to remember while working on Git. When you push your code to a remote repository, your code changes pass through these steps.
If you look at the below diagram you can see some familiarize command/ terms.
When every developer clones a repository or executes the git initialize command, Git will create a Local repository equivalent to a remote repository. Once you code changes good to share with others, always remember to push to remote repository.
Most commonly use Git commands
While working with Git, only one branch can be checked out at a time or another way you can work on one branch at a time, this is what’s called the “HEAD” branch. Also referred to as the “active” or “current” branch.
This command help to set author name and email which to be used in every commit.
git config --global user.name "<Your Name>" git config --global user.email "<Your Email>"
You can list all the global configuration using below command
git config -l
This command is used to initialized a new repository in your working directory.
This command is used to obtain a repository from an existing URL.
URL should be HTTPS or SSH. Base on the URL you may have to configure or provide additional credential detail to access the repository.
URL should be in this format
https => https://github.com/<account-name>/<repository-name>.git
SSH => email@example.com:<account-name>/<repository-name>.git
git clone "<URL>"
This command lists all the local branches in the current repository
Also you can create new branch adding branch name at the end of same command.
git branch <branch-name>
To delete a branch you need to add -d as a parameter. Also, you can add -D as force delete
git branch -d <branch-name>
This command is used to switch between branches
git checkout <branch-name>
Adding –b parameter will create a new branch and same time switch to new branch.
git checkout -b <branch-name>
git checkout with commit id will move local branch HEAD to given commit id while master still point to latest commit.
git checkout <commit-id>
This command is used to reset files/commit.
To remove local changes
git reset <file-name>
To remove all local changes
git reset .
adding commit id to command will move HEAD and master to that specific commit and remove all other subsequent commit after onward.
git reset --soft|mixed|hard <commit-id>
You can use HEAD to mention how many commits you want to reset. With ~ symbol you can mention number of commit need to consider from HEAD.
git reset HEAD~2
This command is similar to git checkout <commit-id> but HEAD and master will be point to the same commit id given in the command.
This command list all the files that have to be committed
This command is used to clean local folder.
git clean -xdf
x – all ignored files d – including directories f – force
This command is used to list all the commits made in current branch
This command is used to show file differences which are still in local folder.
If you want to compare a file with Stage you can use the same command adding the following parameter.
git diff --staged
To compare with two different branches
git diff <branch-1> <branch-2>
This command is used to connect your local repository to the remote server. If you start with
git init, then you need this command to connect to the remote repository. Otherwise,
git clone command will create this entry for you.
git remote add <variable name> <remote URL>
This command adds a file from your local folder to the staging area. If you look at the diagram on top, you can see this command is used for what. YOu can use the file name or * to represent all the files.
git add <file-name>
git add *
This command is used to create a snapshot of files changes in the stage area permanently in the version history.
git commit -m <commit message>
You can skip the stage area while adding -a into this command, But recommend what is to use Stage areas before adding into the version history. You can execute the below command in your local folder
git commit -a -m <commit message>
This command sends the committed changes of your local branch to your remote repository
git push <variable-name> <branch-name>
This command fetches and merges changes on the remote server to your local branch and working directory
git pull <variable-name> <branch-name> git pull <repository-url>
This command fetches changes on the remote server to your local repository without changing your local folder. Later you can use git merge to update the local folder.
git fetch <variable-name> <branch-name>
This command helps you to temporary store your modified track file.
You can use following commands to work with stash area.
git stash save git stash pop git stash list git stash drop
This command merges the specified branch’s history into the current branch
git merge <branch name>
This command is used to integrate changes from one branch to another. But the difference from merge command is rebasing flattens the history.
git rebase <branch-name>