Git Commands that you should know.

One of the most used version control systems that help developers to track changes when working on projects as a team is Git. Whether you work on a team or by yourself, it has now become an integral part of code change management. Merely closing this section felt a pain because mastering Git can be tricky due to the commands, and features of Git make it a bit difficult, especially for newcomers. Here I am trying to list most used and powerful git commands with it's usecases.

Initialization

To initialize a new Git repository in the current directory, run the following command:

git init

This creates a hidden .git directory in the current directory that tracks changes to your code.

Cloning

In the most common usage, git clone is used to point to an existing repo and make a clone or copy of that repo at in a new directory, at another location. Note that the original repository might be running on the same machine, from a file accessible using a supported protocol. The git clone command is to get a copy of an existent Git repository.

git clone <repository url>

This creates a new directory on your computer with a copy of the repository.

Adding Changes / Staging changes

In Git, having a modified file does not guarantee that the next commit includes that file. Instead, you must tell Git explicitly which changes should be included in the next commit from amongst your modifications. This is achieved by staging a change to the Staging Area.

git add <file/directory>

You can also stage all changes in the current directory by running:

git add .

This tells Git which changes you want to include in your commit.

Committing changes

To commit the changes in the staging area with a commit message, run the following command:

git commit -m "<message>"

Checking status

To check the current status of your repository, run the following command:

git status

This will show you which files have been modified, which files are staged for commit, and which files are untracked.

Viewing Changes

To view the changes between the working directory and the staging area, run the following command:

git diff

To view the changes between the staging area and the last commit, run the following command:

git diff --cached

Branching

In Git, a branch is a new/separate version of the main repository.

Branches enable you to work on disparate parts of a project separate from the main branchThis is because once our work is done, we will have to merge our branch to main project.You can even navigate and work on different branches/projects without having conflicts between them.

To create a new branch with the specified name, run the following command:

git branch <branch name>

To switch to the specified branch, run the following command:

git checkout <branch name>

You can also create and switch to a new To push changes to a remote repository, run the following command:branch in one command by running:

git checkout -b <branch name>

To merge the specified branch into the current branch, run the following command:

git merge <branch name>

Pushing changes

To push changes to a remote repository, run the following command:

git push <remote><branch>

Pulling changes

The git pull command is used to fetch and download content from a remote repository and immediately update the local repository to match that content.

git pull

or git pull <remote> <branch>

Reverting changes

If you need to undo a commit, you can use the git revert command. This creates a new commit that undoes the changes made in the specified commit.

Resetting changes

The git reset command is a complex and interesting tool but here is how you can rollback a commit. This will delete the mentioned commit as well as all the follow up commits from the commit history. Git reset has three options: --soft, --mixed, and --hard.

--soft resets changes the commit history and leaves the changes in staging.

--mixed- resets your commit history and leaves the changes unstaged.

hard : Resets the commit history, un-stages the changes and delete all subsequent changes that comes after the specific commit.

If you want to reset the last commit with - soft for example then run this command:

git reset --soft HEAD~1

To reset the last commit using --mixed, run the following command:

git reset --mixed HEAD~1

To reset the last commit using --hard, run the following command:

git reset --hard HEAD~1

git reset --hard will not remove untracked files, where as git-clean will remove any files from the tracked root directory that are not under Git tracking.

Alternatively, you can do the following (beware though - that removes all ignored files too)

git clean -df

git clean -xdf CAUTION! This will also delete ignored files