giteveryday
Er bestaan GUI's, waarom CLI?
git config --global user.name "Lene Van Vreckem"
git config --global user.email "lene.vanvreckem@gmail.com"
git config --global push.default simple
$ mkdir my_project
$ cd my_project/
$ git init
Initialized empty Git repository in /home/bert/linux/my_project/.git/
$ git status
On branch master
Initial commit
nothing to commit (create/copy files and use "git add" to track)
Bestand(en) aanmaken of wijzigen:
$ vi README.md
$ git status
On branch master
Initial commit
Untracked files:
(use "git add <file>..." to include in what will be committed)
README.md
nothing added to commit but untracked files present (use "git add" to track)
Bestand naar staging verplaatsen: git add
$ git add README.md
$ git status
On branch master
Initial commit
Changes to be committed:
(use "git rm --cached <file>..." to unstage)
new file: README.md
Wijzigingen doorvoeren (Inchecken, committen): git commit
$ git commit -m "README toegevoegd"
[master (root-commit) aadfd67] README toegevoegd
1 file changed, 3 insertions(+)
create mode 100644 README.md
$ git status
On branch master
nothing to commit, working directory clean
Lokale wijzigingen aan README.md
ongedaan maken:
git checkout -- README.md
README.md
opnieuw uit staging
halen :
git reset HEAD README.md
git status
herinnert telkens aan deze commando's!
git status
voordat je iets doetdaringfireball.net/projects/markdown/
.gitignore
*~ # Text editor backups (Linux)
*.bak
build/ # directory with compiled files
Wijzigingen van working copy t.o.v. repository:
$ git diff
diff --git a/README.md b/README.md
index ea596b8..3d13212 100644
--- a/README.md
+++ b/README.md
@@ -1,3 +1,5 @@
# README
Dit is mijn eerste Git repository!
+
+Deze lijn is gewijzigd
$ git log
commit 97deea303754171c717291387af87e9b891f28fb
Author: Bert Van Vreckem <bert.vanvreckem@gmail.com>
Date: Sat Nov 15 16:50:20 2014 +0100
Added .gitignore
commit aadfd674f5dec9205fde484a5d921041b256b135
Author: Bert Van Vreckem <bert.vanvreckem@gmail.com>
Date: Sat Nov 15 14:47:46 2014 +0100
README toegevoegd
$ git log --pretty="format:%C(yellow)%h %C(blue)%ad %C(reset)%s%C(red)%d
%C(green)%an%C(reset), %C(cyan)%ar"
--date=short --graph
* 97deea3 2014-11-15 Added .gitignore (HEAD, master) Bert Van Vreckem, 22 minutes ago
* aadfd67 2014-11-15 README toegevoegd Bert Van Vreckem, 2 hours ago
"Bladwijzers" in commit history
git tag v1.0.0
git tag -m "Release versie 1.0.0" v1.0.0
NB. Ik heb academische licenties voor JIRA (+ Agile), Bamboo, Bitbucket, Clover (code coverage)
Zie https://help.github.com/articles/generating-ssh-keys/
ssh-keygen -t rsa -C "bert.vanvreckem@hogent.be"
cat ~/.ssh/id_rsa.pub
ssh -T git@github.com
[lene@jace ~]$ ssh-keygen -t rsa -C "lene@example.com"
Generating public/private rsa key pair.
Enter file in which to save the key (/home/lene/.ssh/id_rsa): [ENTER]
Created directory '/home/lene/.ssh'.
Enter passphrase (empty for no passphrase): [ENTER]
Enter same passphrase again: [ENTER]
Your identification has been saved in /home/lene/.ssh/id_rsa.
Your public key has been saved in /home/lene/.ssh/id_rsa.pub.
The key fingerprint is:
e7:fe:2b:ca:09:87:61:26:90:2a:d1:7f:8c:2c:8b:18 lene@example.com
The key's randomart image is:
+--[ RSA 2048]----+
| |
| . . |
|. + |
| o + o |
|E . = * S . |
|oo o = o o |
|o . o . . |
| + o. |
| +..oo. |
+-----------------+
[lene@jace ~]$ cat .ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDKGL1YqIK/67bYib2FaVnRVnlTVJHxUq+DtF3e1aDCZYAWzIYK+MTceW1Qg0fuAlYc5qvUCMmSy9eWgnG8jS8PU7DWgOjIbLtbqTLBDwGEUgMNhRc2wHwYiZqIswe9nr4/zMFW4AVd/GpOXiFjTfXZoLCh2m0+NcB5Z1OoiMv3vti1OsMZJ1ECIDZ5QGkju2bhyZpqsQ7FYUZT3CYkCwsKVVZJUoEU09A5DyhakZJedIMO5Qdlinu45qKjQwJr9t5Dw75pRcHarMHVCQJKwIv3wRzO1PImhk45rjHsBGWYPH4bfistbFbTLrWbdPZYlYrk2hI3z15O4TrGHasBPCMx lene@example.com
Maak op Github een nieuwe repository aan (bv. my_project
)
https://github.com/USER/PROJECT
https://github.com/USER/PROJECT.git
git@github.com:USER/PROJECT.git
$ git remote add origin git@github.com:bertvv/my_project.git
$ git remote -v
origin git@github.com:bertvv/my_project.git (fetch)
origin git@github.com:bertvv/my_project.git (push)
$ git push -u origin master
-u
zorgt dat dat maar één keer moetStel, je wil verder werken aan het project van iemand anders:
$ git clone git@github.com:bertvv/my_project.git
Cloning into 'my_project'...
remote: Counting objects: 9, done.
remote: Compressing objects: 100% (6/6), done.
Receiving objects: 100% (9/9), done.
remote: Total 9 (delta 0), reused 9 (delta 0)
Checking connectivity... done.
.gitignore
aanvinkengit clone git@github.com:USER/PROJECT.git
git pull
git add
, git commit
git fetch
git log -p HEAD..FETCH_HEAD
git rebase origin/master
git push
Bert en Lene werken samen aan een project. Als dat maar goed afloopt...
git push
, git pull
git fetch
en git rebase origin/master
Branches zijn goedkoop en eenvoudig, gebruik is sterk aanbevolen
git branch NAAM
-- nieuwe branch aanmakengit checkout NAAM
-- naar deze branch overgaan
git checkout --branch NAAM
-- 2 vorige commando's in 1 keer
-b
kan ookgit checkout master
-- terug naar de hoofdbranchgit merge NAAM
-- wijzigingen uit branch toepassengit branch -d NAAM
-- branch verwijderen
-D
is verwijderen zonder controle op mergemaster
master
stabiel (compilerend) te houdenmaster
, altijd branchenfeature/gh-12-uc-make-reservation
(nieuwe feature)fix/gh-14-nullpointer
(bugfix)wip/optimise
(experimenten)master
master
topic branch verwijderen!origin
pushen (bv. wip
)Geschikt voor voortdurend evoluerende software, geen aparte versies te onderhouden (vb. SaaS)
master
stabiel te houdenmaster
master
Geschikt voor software met "releases" die je moet blijven onderhouden
Experimenteer!
en wil ervaringen delen?