Objective of this Article

In this article, I’m going to explain, how to do the setup for git repository for existing code base and new repo as well. I have explained git basic command as well, these commands most frequently used in git. In previous article, I have gives basic introduction git, why should use and how to install on a different platform. I personally assist, go through git beginners tutorials first.

Git setup a new repository for an existing code base

1. Create a /path/to/my/codebase/.git directory.

$ cd /path/to/my/codebase $ git init ﻿

2. Add config file to GitIgnore

Create .gitignore file and add config file the related to system dependent

3. Add all existing files to the index.

$ git add . ﻿

4. Record the pristine state as the first commit in history

$ git add . ﻿

Now create a repos on Github or Bitbucket

Now, create a new repository on Github or bitbucket named test. Once you created a repository, you will get a remote URL, It will seem like below. It cloud be SSH or HTTP in this example we are taking HTTPS. URL likes – https://xxxxxxxxxx@bitbucket.org/xxxxxxxxx/test.git.

5. Add Remote in Git

Now using this url add the remote in git. Let’s move to terminal and run this command

$ git remote add origin https://xxxxxxxxxx@bitbucket.org/xxxxxxxxxx/test.git // replace url to own repo url

Finally, push the all code into server repo

$ git push -u origin master

Let’s summarise what I have did, First I have initialised git using init command, after that I have added all folder file into git using git add . command., then create a repo on server, furthermore I have connected local repo to server repo using git remote add command, Finally push all code into server repo using push command.

The sequence of command is –

$ cd /path/to/my/codebase $ git init $ git add . $ git remote add origin https://xxxxxxxxxx@bitbucket.org/xxxxxxxxxx/test.git $ git push -u origin master

Now you completed git setup repository and git setup new repository. Now

Git Basic commands

The following command mostly used in GIT, Every one should be know these command

Git status

Git add [-A, -u with options] file name



Git commit -m “message” [other options]



Git push origin <branch name>



Git fetch



Git merge origin <branch name>



Git mergetool -t meld



Git pull origin <branch name>



Git branch



Git checkout [option- branch name, filename]



Git diff [options = –name-only , –no-color etc]



Git log



Git show [SHA]



Git reset [options]

Git command

Now we will learn all git command one by one.

Git Status

$ git status command displays different between staging(stage) and working directory. You can see which changes have been staged, which have not and which files are not being tracked yet by Git. The git status command does not show any information regarding committed history.

SYNOPSIS

$ git status

Git add [-A, -u , file name with options]

$ git add command adds changes working directory to stag area. In other words, that command tells to Git that particular file you want to include for updates in next commit.

SYNOPSIS with Option

$ git add .

It add all files for the next commit.

$ git add -u

It add only tracked files for the next commit.

$ git add <filename>

It stage a particular files for the next commit.

$ git add <directory>

It stage include directory for the next commit.

Git commit -m “message” [other options]

$ git commit -m “message “ command moves all changes to stage from the working area, Only committed changes will move to stage directory.

SYNOPSIS

$ git commit -m "message "

Git push origin <branch name>

$ git push origin <branch name> command is used to upload local(stage repo (mean all committed files)) repository content to a remote repository.

SYNOPSIS with Option

$ git push origin <branch> // for example $ git push origin master

Push all stage content to the specified remote branch. Other words you can say push the specified branch to remote with all commits. git push prevent you from overwriting commits If the local branch has conflict and non-fast-forward merge than server repo won’t accept push

$ git push origin --force

Same as the upper command, but force the push even if it results (has conflict) in a non-fast-forward merge

$ git push origin --all

Using this command you can push all local branch to remote branch.

$ git push origin --tags

Using this command you sends all of your local tags to the remote repository.

Git fetch

$ git fetch command the downloads commits, files, and refs from a remote repository into your stage (local repo) directory.

SYNOPSIS

$ git fetch

Git merge origin <branch name>

$ git merge origin <branch name> command merge the content of local and remote branch

SYNOPSIS

$ git merge origin master

Git pull origin <branch name>

$ git pull origin <branch name> command used to fetch and download content from a remote repository and merge into local repository. In simple words you say git pull works git fetch and git merge job into a single command as simple as that.

SYNOPSIS

$ git pull origin master

Git branch

The branch is important terms for version control system models. So It’s very important to understand that. Branches are just as pointers to commits. While you create or delete a branch git create and delete pointer. In Simple words git stores a branch as a reference to a commit. That means a branch is a series of commits—it’s not a container for commits.

SYNOPSIS with Options

$ git branch

Display all local branch

$ git branch <branch>

Creates a new branch

$ git branch -d <branch>

Delete a particular branch

$ git branch -D <branch>

Force delete a particular branch

$ git branch -m <branch>

Rename a particular branch

$ git branch -a

Display all remote branch

Git checkout <branch name>

$ git checkout <branch name> command act of switching between different branch. In other words, you say, you can navigate between the branches.

$ git checkout master

$ git checkout -b development

Create and display new branch

Git diff

$ git diff --color-words

$ git diff-highlight

$ git diff

$ git diff master new_branch ./diff_test.txt

Git log

$ git log command is used for displaying commits list. And so many ways to use git log command, you can alter this output using different parameters to git log.

$ git log --graph --oneline --decorate

$ git log --pretty=format:"%cn committed %h on %cd"

$ git log -3

Display commit by Date

$ git log --after="2014-7-1"

$ git log --after="yesterday"

$ git log --after="2014-7-1" --before="2014-7-4"

Show all commit by Author

$ git log --author="John"

$ git log --author="Morris"

Display all commit that contains Message

$ git log --grep="JRA-22:"

Display all commit by commit message

By File

$ git log -- foo.py bar.py

By Content

$ git log -S"Hello!"

All commits

By Merge Commits

$ git log --no-merges

Only shows commits that not in merge

$ git log --merges

Show the commit that from merge

Git reset [options]

The $ git reset command behaviour same as $ git checkout command. Where $ git checkout completely operates on the HEAD reference pointer, and $ git reset will move the HEAD reference pointer and the current branch ref point

Options

–hard

$ git reset --hard

It easy and frequently used option, When you pass –hard argument with reset command the ref pointer is updated to the specified commit, Then Staging and Working Directory is also reset to match that of the specified commit. In simple words working and staging directory permanently deleted all commit after that particular commit.

–mixed

$ git reset --mixed

While you pass –mixed argument with reset command, that means ref pointers are updated. Staging directory is reset to the state of the specified commit. and any undone commit will move to working directory.

–soft

$ git reset --soft

If you use — soft argument then, the ref pointers are updated. The Staging and the Working Directory are left untouched.

Git show [SHA]

$ git show command shows the log message and textual diff. It represented merge commit into special format using different parameter.