+ All Categories
Home > Technology > BSADD-Git-TRAINING

BSADD-Git-TRAINING

Date post: 18-Dec-2014
Category:
Upload: bsadd
View: 197 times
Download: 0 times
Share this document with a friend
Description:
G
62
A Distributed Version Controlling System BUET Systems Analysis, Design & Development Group Md. Maksud Alam Chowdhury CSE ,BUET [email protected]
Transcript
Page 1: BSADD-Git-TRAINING

A Distributed Version Controlling System

BUET Systems Analysis, Design & Development Group

Md. Maksud Alam ChowdhuryCSE ,[email protected]

Page 2: BSADD-Git-TRAINING
Page 3: BSADD-Git-TRAINING

A version controlling system

Distributed

Most popular software for managing codebases

Support for remote collaboration

Page 4: BSADD-Git-TRAINING

Why ???

Page 5: BSADD-Git-TRAINING

Remove millions of backup folder

Smartly merge separate codes

Track day to day changes of codes

Small changes won’t destroy whole project

Disk crash or virus won’t hamper your codes ever !!!!!!!!!!!!!

Page 6: BSADD-Git-TRAINING
Page 7: BSADD-Git-TRAINING
Page 8: BSADD-Git-TRAINING

What’s So Special ???

Page 9: BSADD-Git-TRAINING

Branching & Merging (to be discussed widely)

Small & Fast

Distributed

Free & Open Source

Page 10: BSADD-Git-TRAINING
Page 11: BSADD-Git-TRAINING

Standalone version:http://git-scm.com/downloads

Portable version:https://code.google.com/p/msysgit/downloads/list

They both have command line interface .

Download & install

Page 12: BSADD-Git-TRAINING

Commands !!!!!!!

Page 13: BSADD-Git-TRAINING

Navigate to your project folder

Right Click on Folder-> Git Bash

It will open a shell

Initializing a repository

Page 14: BSADD-Git-TRAINING
Page 15: BSADD-Git-TRAINING

Type git init to initialize a git repo on your project folder.

Having existing codes won’t cause problem

In most cases , you will create a repo where you have your codes.

Note that we are in master branch by default

We will discuss it later on branching.

Page 16: BSADD-Git-TRAINING
Page 17: BSADD-Git-TRAINING

Let’s add some files (not needed in case already have existing codes)

Let’s create “a.cpp” , “b.txt” , “c.cpp” in the “DemoApp” Folder.

Add some dummy texts on them

Current Working DirectoryDemoApp/

|--a.cpp|--b.txt|--c.cpp

Page 18: BSADD-Git-TRAINING
Page 19: BSADD-Git-TRAINING

So we think our app is stable right now.

So we need to commit the files to be preserved

Type git add .

Type git commit –am “message describing commit”

So git will have save current codes as the latest stable code on master branch

Page 20: BSADD-Git-TRAINING
Page 21: BSADD-Git-TRAINING

We can check the status of the current condition of codes by typing

git status

Every commit is saved uniquely with a number

You can switch back to any previous commit any time

Page 22: BSADD-Git-TRAINING
Page 23: BSADD-Git-TRAINING

Branching & Merging

Page 24: BSADD-Git-TRAINING

By Default we are in the master branch which is root .

Branches are independent of each other

Enough talking !!!!!!

Let’s create another branch “dev” which is a development version.

We will experiment in the dev branch where as fully stable codes will be in master branch

Page 25: BSADD-Git-TRAINING

Typegit checkout –b dev

It will create a new branch dev and switch to “dev“ branch

The new branch will contain exact copy from where we created it.

Any change we do now in the working directory , after commit will go for “dev” branch

Page 26: BSADD-Git-TRAINING
Page 27: BSADD-Git-TRAINING

Let’s change the content of “b.txt” and create “d.txt”

So we have changed “b.txt” and added “d.txt”

Now Type git status

Page 28: BSADD-Git-TRAINING
Page 29: BSADD-Git-TRAINING

We now commit the current working directory

So Type Again

git add .

git commit –am “commit message”

Page 30: BSADD-Git-TRAINING
Page 31: BSADD-Git-TRAINING

Let’s switch back to the “master” branch

Type git checkout master

It will restore the master branch codes

Note that “b.txt” is restored & d.txt is gone

So you have two separate version of codes

Page 32: BSADD-Git-TRAINING

On Master Branch On dev branch

Page 33: BSADD-Git-TRAINING

Merging

Page 34: BSADD-Git-TRAINING

So we were in the master branch again

We are sure to merge the dev branch into master branch

Type git merge dev

Page 35: BSADD-Git-TRAINING
Page 36: BSADD-Git-TRAINING

Surprisingly there is no conflict in “b.txt”

Because until now you are the only person who changed the branch in local workstation

Page 37: BSADD-Git-TRAINING

Collaborating With Team

Page 38: BSADD-Git-TRAINING

We need a central place to synchronize the team members repositories

Github , Bitbucket , gitorious , Assembla , repositoryhosting etc.

Github only provides public repo

If you don’t want it to be public go for Bitbucket

https://bitbucket.org/account/signup/

Page 39: BSADD-Git-TRAINING

Create A Repository Online

Page 40: BSADD-Git-TRAINING

Copy The HTTP Link

Page 41: BSADD-Git-TRAINING

Copy The HTTP Link

Page 42: BSADD-Git-TRAINING

Add A Remote For bitbucket

Page 43: BSADD-Git-TRAINING

Push the master Branch to Bitbucket

Page 44: BSADD-Git-TRAINING

Push the dev Branch to Bitbucket Similarly as previous slide

Type

git push origin dev

Page 45: BSADD-Git-TRAINING

Meanwhile on bitbucket

Page 46: BSADD-Git-TRAINING

Share with friends

Page 47: BSADD-Git-TRAINING

There are several mechanisms [try googling]

We will show an easy approach for small teams

We will maintain master for ultimate stable version .

Each team member will have their own branch

Collaboration

Page 48: BSADD-Git-TRAINING

After finalizing some features team members will create a temporary branch

The temporary branch will be incrementally merged and tested by team captain

But there might be conflict in configuration files which might hamper project.

[Android menifest.xml , database settings etc ]

Collaboration

Page 49: BSADD-Git-TRAINING

Do ignore such files while committing

Create a .gitignore file and list the directories or file not to be tracked

Keep a list of changelog.txt file

After merging master do manually change the configurations

Collaboration

Page 50: BSADD-Git-TRAINING

Conflicts arise when You have changed your local files and committed them in your branch

But someone else have also changed the same files in his own branch

You want to merge his branch

Git will have no way to decide which one to keep and which one to abandon

So it keeps both of them in a way you can identify difference.

Resolving Conflicts

Page 51: BSADD-Git-TRAINING

We change our local file b.txt again in master

Add , Commit it

We pull some previous version of the same file in dev

git pull origin dev

Pull = fetch + merge

Now this will create a conflict

Let’s create a conflict

Page 52: BSADD-Git-TRAINING
Page 53: BSADD-Git-TRAINING

Conflicted file

Page 54: BSADD-Git-TRAINING

Here head is local version

Lower part is the fetched version

The marker is where things actually started to be different

It would not create a conflict if appending was required or creating a new or deleting a file was required

But here a complete rewrite is required

Conflict Resolution

Page 55: BSADD-Git-TRAINING

Git tool command

Manually change the conflicting files

Add, Commit , Push

Don’t Pull directly

At first fetch (git fetch origin dev)

See Whether any difference (git diff origin/dev)

The decide to merge

Resolving

Page 56: BSADD-Git-TRAINING

If you already have a repo on bitbucket or github like the one we created

Just type

git clone <http_link_of_project>

So you don’t need to bother about backup or disk lost

Cloning

Page 57: BSADD-Git-TRAINING

Repository Features

Page 58: BSADD-Git-TRAINING

Repository Features

Page 59: BSADD-Git-TRAINING

Commands At A Glance git init git add . git commit –am “<your commit message>”

git status

git checkout –b <New_Branch_Name> git checkout <Branch_Name> git merge <Branch_Name>

git remote add <Name_For_Server> <Link_Of_Your_Project>

git push <Name_For_Server> <Branch_To_Push>

git pull <Name_For_Server> <Branch_To_Pull>

git fetch <Name_For_Server> <Branch_To_Fetch>

git diff <Branch_To_Compare_With_Current_Branch>

Page 60: BSADD-Git-TRAINING
Page 61: BSADD-Git-TRAINING

Reference http://git-scm.com/ http://gitref.org https://bitbucket.org

Page 62: BSADD-Git-TRAINING

Please Email Any Question At:

[email protected]


Recommended