version Control And Collaboration With Git And Github · Version Control and collaboration with Git...

Post on 25-May-2018

234 views 0 download

Transcript of version Control And Collaboration With Git And Github · Version Control and collaboration with Git...

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 KernelThe 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

Create a snapshot

Make a commit

repeat

Pull and Push to a repository

when ready

Git TerminologyRepository - container for snapshots and historyRemote - 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 commitBranch - a separate line of workflowMerge - 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

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

Interpreter program

command flag key value

Git : basic configuration

Git : advanced configuration

System

• Usually in /etc directory

Global

• ~/.gitconfig

Local

• .git/config

overrides

overrides

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

• File is not under control by gituntracked

• Git knows about file, but it has not been modifiedunmodified

• Git knows about the file and it has been modifiedmodified

• File is ready to commitStaged

Git : check the status

Create a new file

Using your favorite editor, open a file hello.py and enter the following content:

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

gedit hello.py

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

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". Gitknows 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)

#commit

#rename the file and add changes to the staging area

Git : Renaming the files (outside git)

#commit #add both files (!) to staging area

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 remoteGitHub, 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/