0% found this document useful (0 votes)
14 views

Version Control and Collaboration With Git

Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
14 views

Version Control and Collaboration With Git

Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 58

Version Control and

collaboration with
Git and Github

Katia Oleinik
Research Computing Services
Challenges of working on a project

• Undo and Redo


• Tracking changes
• Working with others
• Sharing Changes
• Overlapping work by various people
Git history
Development began in 2005 while working on Linux Kernel
The first stable version released in December 2005

Goals set but Linus Torvalds:


 Distributed system
 Applying updates should not take longer than 3 seconds
 Take Concurrent Version System as an example of what not to do
 Support distributed system workflow
 Include strong safeguards against corruption, both accidental and malicious
Word "git" - "unpleasant person" in British slang

The man page describes Git as "the stupid content tracker".

From README file of the source code: "- global information tracker": you're in a good mood,
and it actually works for you. Angels sing, and a light
suddenly fills the room.
- "g*dd*mn idiotic truckload of sh*t": when it breaks
Git main features
 Track all your changes

 Work along with others

 Share work with others


Git Workflow
Create a branch

Start with a clean working directory

Make some changes repeat

Create a snapshot

Make a commit

when ready

Pull and Push to a repository


Git Terminology
Repository - container for snapshots and history
Remote - connection to another repository for example GitHub (like URL)
Commit -
• A snapshot, basic unit of history
• Full copy of a project
• Includes author, time, comments, pointer to the parent
Reference - a pointer to commit
Branch - a separate line of workflow
Merge - a commit that combines 2 lines of history (points to 2 parents)
Installing Git
Login to the SCC

Username: tuta#
Password:

# - is the number located on your computer

Note:
• Username and password are case-sensitive
• password will not be displayed while you
are typing it
Git : basic configuration

# select the latest version of git (SCC only)

# check git version


Git : basic configuration

Interpreter program
command flag key value

Notes:
• Vim is the default editor used by git
• Select gedit if you are not familiar with vim or emacs editors
Git : basic configuration
Git : advanced configuration

System
• Usually in /etc directory overrides

Global
• ~/.gitconfig
overrides
Local
• .git/config
Git : create a repository

# create a project with a name mypy

# change directory (go inside project directory)

# list the files in the directory including those starting with a dot
Git : explore a repository
Git : 4 statuses

untracked • File is not under control by git

unmodified • Git knows about file, but it has not been modified

modified • Git knows about the file and it has been modified

Staged • File is ready to commit


Git : check the status
Create a new file
Using your favorite editor, open a file hello.py and enter the following content:

Save the file with the name hello.py and exit.

Note: if you are not familiar with vim or emacs editors, used gedit to edit files:

gedit hello.py
Execute python script (optional)
Git : check the status
Git : add file to the repository

# add file to git repository

#check status

Staged file
Git : commit

Note: Make sure to enter clear, concise and meaningful


comments about your commits!
Modify a file that is tracked by git
Using your favorite editor, modify existing python code

Save the file and exit.


Create a new README file
Using your favorite editor create README file and add some content:

Save the file and exit.


Git : check the status
hello.py has status "modified". Git
knows about this file, but reminds
that the file has been modified
since the last commit

README has status "untracked".


Git has no information about this file.
Git : add files to a staging area

Note: Files can be added one by one or listed together


Git : commit
Git : commit
Git : view the history of commits

SHA-1 key (Secure Hash Algorithm 1)

Note: Git uses SHA-1 only to produce a unique hash tag


Modify a hello.py file again
Using your favorite editor, modify existing python code

Save the file and exit.


Execute modified version of hello.py (optional)
Git : add and commit file

Practice: check the status and view the log of commits.


Git : view log with a graph
Git : one line log
Git : graphical tool
Git : reviewing previous commits

Note: Only first 7 symbols of SHA-1 key are necessary to identify the checkout
Git : returning back to the last commit
Git : hard delete of the latest commits
Git : Renaming the files (git way)

#rename the file and add changes to the staging area

#commit
Git : Renaming the files (outside git)

#add both files (!) to staging area


#commit
Git : Deleting the files (git way)
#create a file

#add file to staging area

#commit

#delete file and add changes to a staging area

#commit
Git : Deleting the files (outside of git)

#report changes to a staging area


#commit
Git : ignore some files
Submitting work to remote
GitHub, GitLab, Bitbucket, etc.
Login to the account
Start a new project
Connect your local repo to the remote
Connect your local repo to the remote
View remote github repositories
View remote github repositories
Cloning remote repository
Clone Remote repository
Clone Remote repository
# change directory

# remove old repository

# clone remote repository


Clone Remote repository
Thank you!
Please, fill out evaluation:
Apendix
Git help
Git help
Git resources
Git official manual:
https://git-scm.com/documentation

Easy online tutorial by GitHub:


https://try.github.io

Git Immersion (popular Git tutorial):


http://gitimmersion.com/

Git docs on many languages:


http://www-cs-students.stanford.edu/~blynn/gitmagic/

You might also like