Git is the most popular version control management tool/system today. Being distributed in nature, it facilitates lower risk of losing the whole repo out-of-the-blue. Because, user always has a copy of the repo. And there are a lot of vendors, offering hosted git server. And most the offerings are free with a reasonable limit.
I’ve been using Git for quite a long time. Though I’m not that much familiar with advanced concepts or complex scenarios regarding Git. To do day-to-day normal tasks, mostly I use only six commands(status
, commit
, branch
, checkout
, push
, pull
), with some flags some times. It’s true that I don’t do very complex things with it. But those four commands are enough for me. In this post, I’m iterating those commands one-by-one, possibly with some comments.
Okay, let’s start by creating a git
repo with init
command.
mkdir new_git_repo_folder |
It’s as simple as that. After running this command, you can see, one folder with name .git
has been created. This folder is going to hold all the meta information for the repository. Git actually maintains hash
for a particular commit. Those information also reside in this folder. Now create some content.
Most of the Git host servers shows the content of README.md
as default face of a directory. It’s kind of index.html
in a website. The extension .md
stands for mark-down
. It’s a pre-defined format to write documents, that can be converted into HTML/PDF or any other type, by some tool. There are a lot of implementation of this converter. Though there is a standard for the syntax for mark-down
but it mostly depend on the converter in use. GitHub, GitLab, Bitbucket all have implemented their own version of mark-down
to HTML
converter. Though their most of the syntaxes are same, there are some extras also. But for now, we don’t have to bother with the mark-down
syntax compatibility of various providers. We are gonna just add one README.md
file.
echo "# New Git Repo" > README.md |
The leading #
will tell the converter to make the title as h1
element in HTML
. Git has two very important concepts. HEAD
and stage
.
git status |
Add the user info to the local repo.
git config user.name "Arnab Das" |
Add user info for the work environment.
git config --global user.name "Arnab Das" |
Now commit.
git commit -m "Adding README.md" |
Add the remote. It’s possible to mention the name of the remote other than origin
. It’s just the most common one.
git add remote origin <origin-url> |
Create new branch and checkout
to the branch.
git checkout -b new_branch |
Clone a git repo.
git clone <git-repo-url> [optional-folder-name] |
Checkout to a branch. Both the following commands does the same thing. Creates a local branch named new_branch
from the remote branch new_branch
. Only difference is that, it’s possible to mention a different branch name in the first command.
git checkout -b new_branch origin/new_branch |
See the branch names.
# lists only the local branches |
Delete a branch locally.
git branch -d <branch-name> |
Delete the branch in remote.
git push <remote-name> :<branch-to-delete> |