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
- $ 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, which were staged in working dir, take the last commit from local repo
- $ git reset --hard
- Discards all history and changes back to the specified commit
- $ git reset --hard [commit]
- Drop all local changes staged and unstaged, take the last commit from repo:
- git clean -df ( -d Remove untracked directories in addition to untracked files)
- 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 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. Clone creates a new git repository by copying an existing one located at the URI you specify. git clone https://github.com/ - clone repo from github git status - List the files you've changed and those you still need to add 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 reset HEAD^ - the changes a now only in working dir, HEAD and Index moved one step back git reset --hard HEAD - deletes last commit as it were never happend git checkout -- . - discards all local changes which are not staged 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 diff master origin/master - compare local branch with remote git branch - list of all local branches git branch -a - list of all branches including remote git checkout -b <branchname> - creates new branch and switches to it git checkout <branchname> - switch to another branch git branch -d <branchname> - delete branch git push --all origin - push all branches to remote repository