Githandson
From Gridkaschool
Jump to navigationJump to search
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 and configure git
- $ mkdir project
- $ cd project
- Configure git
- $ git config --global user.name "Your Name"
- $ git config --global user.email you.email@domain
- $ 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:
- $ echo "bye" >> readme.txt
- $ git status
- $ git reset
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.