Githandson

From Gridkaschool
Jump to navigationJump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Git Hands-on

All of these exercises should be followed on naf-school03 using your school account

Note that lines beginning with a $ sign implies a shell command!

Exercise 1 (Configuration)

  • Login to gridkalogin01
    • ssh schoolx@gridkalogin01.desy.de


  • Create project
  • $ mkdir project
  • $ cd project


  • Configure git
    • $ git config --global user.name "Your Name"
    • $ git config --global user.email you.email@domain
  • Examine the gitconfig file
  • $ cat ~/.gitconfig


  • Optional extras for config (and obviously editor is mutually exclusive)
    • $ git config --global color.ui auto # If you like colours!
    • $ git config --global alias.co checkout
    • $ git config --global alias.st status
    • $ git config --global alias.ci commit
    • $ git config --global core.editor emacs # flame bait
    • $ git config --global core.editor vim

Exercise 2 (Basics)

Let's commit some stuff to git...

  • Ini new repo
    • $ git init
    • $ git status


  • Create new file and commit it
    • $ touch readme.txt
    • $ echo "hello" > readme.txt
    • $ git commit


  • Can't commit? Submit file to staging area first
    • $ git add .
    • $ git commit


  • Avoid opening editor and submit the change directly to repo:
    • $ echo "some new change">> readme.txt
    • $ git commit -am "fast commit to repo"


  • Examine how to revert changes in working tree:
  • Remove file from staging area:
    • $ echo "bye" >> readme.txt
    • $ git status
    • $ git reset
  • Remove file from staging area and and drop all changes in working dir, take the last commit from local repo
    • $ git reset --hard
  • Drop all local changes, take the last commit from repo:
    • git clean -df
    • git checkout -- .

Exercise 3 (Working with remote repository)

  • Clone the remote repository and examine the log
    • $ git clone gitolite3@gridkapuppet01:test2.git
    • $ git log


  • Look in .git directory at the config file
    • edit config file and delete [remote "origin"] section
    • add remote repository by doing:
    • $ git remote add origin gitolite3@gridkapuppet01:test2.git


  • Add a new file to local repository and submit the changes to remote:
    • $ git add <new file>
    • $ git diff HEAD
    • $ git commit -am "some comment"
    • $ git push -u origin master ( -u - set-upstream ref)


  • Drop all local changes and get the latest commit from remote repo:
    • $ git fetch origin
    • $ git git reset --hard origin/master
  • try:
    • $ git fetch
    • $ git rebase



Git cheat sheet

Git configuration

  • Git levels:

/etc/gitconfig - global git config for any user

~/.gitconfig -user specific

~/repo/.git/config -repo specific

each level ovewrites prevous.

git config --global user.name "Your Name"

git config --global user.email you.email@domain

git config --global color.ui auto # If you like colours!

git config --global alias.co checkout

git config --global alias.st status

git config --global alias.ci commit

git config --global core.editor emacs


Git basics

git init                        - create new local repo 
git clone /path/to/repository   - check out a repository
git clone https://github.com/   - clone repo from github 
git add <filename>              - add specified file to staging area 
git add .                       - add all subdirectories and files recursivly
git commit                      - commit the staged files 
git commit -am "some comment"   - stage changes and commit in one step
git rm <filename>               - remove deleted file
git reset                       - removes all added files from staging area, keeps the changes 
git reset --hard                - removes all added files from staging area, drops the local changes after last commit
git checkout -- .               - discards all local changes which are not staged 


git status                      - List the files you've changed and those you still need to add
git help                        - Help for most commonly used git commands
git help <command>              - Detailed help for specified command

git init --bare --shared        - Creates empty repository meaning no working directory in it. 
git remote add origin REMOTEURL - git remote add creates an entry in your git config that specifies a name of a particular URL of the remote 
git remote rm origin            - removes added remote repository
                                  git repo. This command can be used only after creation of local repo with git init or git clone. 
git remote -v                   - This should show you all of the push/fetch remotes for the project.
git clone                       - creates a new git repository by copying an existing one located at the URI you specify.