SlideShare uma empresa Scribd logo
1 de 116
Baixar para ler offline
GIT
(FS AND DVCS)
by
generated:
Michal Jurosz (mj41)
8.6.2015
GIT FS
"I really really designed it coming at
the problem from the viewpoint of a
filesystem person (hey, kernels is what
I do), and I actually have absolutely
zero interest in creating a traditional
SCM system."
-- Linus Torvals
GIT
a content-addressable filesystem
manages tree snapshots (joined by commits)
over time
distributed version control system
WHY GIT? LINUX
2002 - 2005 proprietary BitKeeper
Apr 7, Linus Torvals - based on BitKeeper
concepts
May 26 - Linux 2.6.12 - the first release with Git
December 21 - Git 1.0
Msg:    Initial revision of "git", the information manager
        from hell
Author: Linus Torvalds <torvalds@ppc970.osdl.org>
Date:   Thu Apr 7 15:13:13 2005 ­0700
Files:  cat­file.c, commit­tree.c, show­diff.c, ...
LINUX NEEDS
distributed, fast, many files, robust
effective storage - full history
non-linear development, trial branches, complex
merges
toolkit-based design, pluggable merge strategies
cryptographic authentication of history
ANNUAL LINUX DEVELOPMENT REPORT
by Linux Foundation - April 3, 2012
Linux 3.2 release - Apr 1, 2012
15,004,006 lines of code
72 days since 3.1.
11,881 patches, 6.88 per hour
1,316 developers from 226 organizations
2005-2015
12,000 developers from 1200 organizations
NO SILVER BULLET
permissions, ownership, empty directories, ...
individual files (not project's files)
large binary files ( )GitHub: Git LFS
complexity - commit/push, checkout/clone
no subtree of repository checkout
no sequentially revision numbers
CVS 10%, Git 38%, Subversion 46% - ohloh.net
PIT STOP 1
short intro
Questions?
GIT HELP
> git help
usage: git [­­version] [­­help] [­C <path>] [­c name=value]
           [­­exec­path[=<path>]] [­­html­path] [­­man­path] [­
           [­p|­­paginate|­­no­pager] [­­no­replace­objects] [­
           [­­git­dir=<path>] [­­work­tree=<path>] [­­namespace
           <command> [<args>]
The most commonly used git commands are:
   add        Add file contents to the index
   bisect     Find by binary search the change that introduced 
   branch     List, create, or delete branches
   checkout   Checkout a branch or paths to the working tree
   clone      Clone a repository into a new directory
   commit     Record changes to the repository
   diff       Show changes between commits, commit and working 
   fetch      Download objects and refs from another repository
   grep       Print lines matching a pattern
   init       Create an empty Git repository or reinitialize an
PORCELAIN/PLUMBING
porcelain
high level
user
plumbing
low level
scripts (e.g. null string separators)
upward compatible
GIT HELP -A
> git help ­a
usage: git [­­version] [­­help] [­C <path>] [­c name=value]
           [­­exec­path[=<path>]] [­­html­path] [­­man­path] [­
           [­p|­­paginate|­­no­pager] [­­no­replace­objects] [­
           [­­git­dir=<path>] [­­work­tree=<path>] [­­namespace
           <command> [<args>]
available git commands in '/usr/libexec/git­core'
  add                       merge­one­file
  add­­interactive          merge­ours
  am                        merge­recursive
  annotate                  merge­resolve
  apply                     merge­subtree
  archive                   merge­tree
  bisect                    mergetool
  bisect­­helper            mktag
  blame                     mktree
GIT INIT
> cd ~/git­tt
> mkdir repo­MJ
> cd repo­MJ
> git init
Initialized empty Git repository in /home/linus/git­tt­14337755
> ls ­a
.
..
.git
GIT FILES (EMPTY)
> tree ­aF .git
.git
|­­ HEAD
|­­ branches/
|­­ config*
|­­ description
|­­ hooks/
|­­ info/
|   `­­ exclude
|­­ objects/
|   |­­ info/
|   `­­ pack/
`­­ refs/
    |­­ heads/
    `­­ tags/
9 directories, 4 files
THE THREE TREES 1/2
"HEAD tree" (in local repository)
HEAD - the snapshot of your last commit
index - cache, staging area
proposed next commit snapshot
working directory (working tree)
sandbox, files you see
Upstream Origin
Local repository
Index (cache)
Working directory
WORKING DIRECTORY
> pwd
/home/linus/git­tt­1433775564­435/repo­MJ
> echo "textA line 1" > fileA.txt
> echo "textB line 1" > fileB.txt
> ls ­a
.
..
.git
fileA.txt
fileB.txt
GIT STATUS
> git status
On branch master
Initial commit
Untracked files:
  (use "git add <file>..." to include in what will be committed
  fileA.txt
  fileB.txt
nothing added to commit but untracked files present (use "git a
> git status ­­short
?? fileA.txt
?? fileB.txt
INDEX (STAGE, CACHE)
NAME
       git­ls­files ­ Show information about files in the index
       the working tree
> git ls­files ­­cached
> git add fileA.txt
> git ls­files ­­cached
fileA.txt
GIT STATUS (AGAIN)
> git status
On branch master
Initial commit
Changes to be committed:
  (use "git rm ­­cached <file>..." to unstage)
  new file:   fileA.txt
Untracked files:
  (use "git add <file>..." to include in what will be committed
  fileB.txt
> git status ­­short
A  fileA.txt
?? fileB.txt
ADD TO INDEX (STAGE, CACHE)
objects - blob, tree, commit, tag
type, size, content
SHA-1 hash/checksum - 160-bit, 20 bytes
40 hexadecimal number - e.g.
8e4b68ee140cfbeaee5d38671cb03c83d1b6f2
default 7 shown- e.g. 8e4b68e
minimum 4 required - e.g. 8e4b
> git hash­object fileA.txt
8e4b68ee140cfbeaee5d38671cb03c83d1b6f2a4
.GIT AFTER INDEX CHANGE 1/4
> find .git/objects ­type f
.git/objects/8e/4b68ee140cfbeaee5d38671cb03c83d1b6f2a4
> git add fileA.txt
> find .git/objects ­type f
.git/objects/8e/4b68ee140cfbeaee5d38671cb03c83d1b6f2a4
> tree ­aF .git
.GIT AFTER INDEX CHANGE 2/4
.git                         .git
|­­ HEAD                     |­­ HEAD
|­­ branches/                |­­ branches/
|­­ config*                  |­­ config*
|­­ description              |­­ description
|­­ hooks/                   |­­ hooks/
                           > |­­ index
|­­ info/                    |­­ info/
|   `­­ exclude              |   `­­ exclude
|­­ objects/                 |­­ objects/
                           > |   |­­ 8e/
                           > |   |   `­­ 4b68ee140cfbea
|   |­­ info/                |   |­­ info/
|   `­­ pack/                |   `­­ pack/
`­­ refs/                    `­­ refs/
    |­­ heads/                   |­­ heads/
    `­­ tags/                    `­­ tags/
.GIT AFTER INDEX CHANGE 3/4
> hexdump .git/objects/8e/4b68ee140cfbeaee5d38671cb03c83d1b6f2a
0000000 0178 ca4b 4fc9 3052 6634 4928 28ad 5471
git­cat­file ­ Provide content or type and size information
> git cat­file ­p 8e4b68ee140cfbeaee5d38671cb03c83d1b6f2a4
textA line 1
> git cat­file ­t 8e4b68ee140cfbeaee5d38671cb03c83d1b6f2a4
blob
> git cat­file ­s 8e4b68ee140cfbeaee5d38671cb03c83d1b6f2a4
13
.GIT AFTER INDEX CHANGE 4/4
> git hash­object fileA.txt
8e4b68ee140cfbeaee5d38671cb03c83d1b6f2a4
> git cat­file ­t 8e4b68ee140cfbeaee5d38671cb03c83d1b6f2a4
blob
> file .git/index
.git/index: Git index, version 2, 1 entries
> git ls­files ­­cached
fileA.txt
> find .git/objects ­type f | head ­n 5
.git/objects/8e/4b68ee140cfbeaee5d38671cb03c83d1b6f2a4
GIT OBJECTS
blob
tree
commit
tag
GIT OBJECTS: BLOB, TREE
a blob object - content of a file
no file name, time stamps, or other metadata
a tree object - the equivalent of a directory
describes a snapshot of the source tree
names of blob and tree objects (type bits)
GIT OBJECTS: COMMIT
a commit object
links tree objects together into a history
the name of a tree object (of the top-level
source directory)
a time stamp, a log message
the names of zero or more parent commit
objects
GIT OBJECTS: TAG
a tag object
a container that contains reference to another
object
and can hold additional meta-data
FIRST COMMIT (ATTEMPT)
> git commit ­m"commit 01 message"
[master (root­commit) 7d6e090] commit 01 message
 1 file changed, 1 insertion(+)
 create mode 100644 fileA.txt
CONFIG --GLOBAL (USER)
> cat ~/.gitconfig
[user]
  email = mj@mj41.cz
  name = Michal Jurosz
[alias]
  st = status
  ci = commit
  co = checkout
  br = branch
> git config ­­global user.email "mj@mj41.cz"
> git config ­­global user.name "Michal Jurosz"
> cat ~/.gitconfig
[user]
  email = mj@mj41.cz
  name = Michal Jurosz
[alias]
  st = status
  ci = commit
  co = checkout
  br = branch
CONFIG --LOCAL (DIRECTORY)
> git config ­­local git­course­conf.local­var1 mj41
> git config git­course­conf.local­var1 mj41
> grep git­course­conf ­A 2 .git/config
[git­course­conf]
  local­var1 = mj41
> git config ­­remove­section git­course­conf
> grep git­course­conf ­A 2 .git/config
CONFIG --SYSTEM (/ETC)
> sudo git config ­­system git­course­conf.system­var1 system­m
> cat /etc/gitconfig
cat: /etc/gitconfig: No such file or directory
GIT ALIASES
> git config ­­global alias.st status
> git config ­­global alias.ci commit
> git config ­­global alias.co checkout
> git config ­­global alias.br branch
FIRST COMMIT (FINALLY)
> git commit ­m"commit 01 message"
On branch master
Untracked files:
  fileB.txt
nothing added to commit but untracked files present
> git log
commit 7d6e09068aa3db89e331ab902a86438b4b929941
Author: Michal Jurosz <mj@mj41.cz>
Date:   Mon Jun 8 10:59:24 2015 ­0400
    commit 01 message
> git log ­­oneline ­­decorate
7d6e090 (HEAD, master) commit 01 message
.GIT AFTER FIRST COMMIT 1/5
> tree ­aF .git
.git                         .git
                           > |­­ COMMIT_EDITMSG
|­­ HEAD                     |­­ HEAD
|­­ branches/                |­­ branches/
|­­ config*                  |­­ config*
|­­ description              |­­ description
|­­ hooks/                   |­­ hooks/
|­­ index                    |­­ index
|­­ info/                    |­­ info/
|   `­­ exclude              |   `­­ exclude
                           > |­­ logs/
                           > |   |­­ HEAD
                           > |   `­­ refs/
                           > |       `­­ heads/
                           > |           `­­ master
|­­ objects/                 |­­ objects/
.GIT AFTER FIRST COMMIT 2/5
|­­ objects/                 |­­ objects/
                           > |   |­­ 4a/
                           > |   |   `­­ f19c541178897f
                           > |   |­­ 7d/
                           > |   |   `­­ 6e09068aa3db89
|   |­­ 8e/                  |   |­­ 8e/
|   |   `­­ 4b68ee140cfbea   |   |   `­­ 4b68ee140cfbea
|   |­­ info/                |   |­­ info/
|   `­­ pack/                |   `­­ pack/
`­­ refs/                    `­­ refs/
    |­­ heads/                   |­­ heads/
                           >     |   `­­ master
    `­­ tags/                    `­­ tags/
.GIT AFTER FIRST COMMIT 3/5
> cat .git/COMMIT_EDITMSG
commit 01 message
> find .git/objects ­type f
.git/objects/7d/6e09068aa3db89e331ab902a86438b4b929941
.git/objects/4a/f19c541178897fb76436c785b2b86d8e9fb9f7
.git/objects/8e/4b68ee140cfbeaee5d38671cb03c83d1b6f2a4
TREE OBJECT
> git cat­file ­t 4af19c541178897fb76436c785b2b86d8e9fb9f7
tree
> git cat­file ­p 4af19c541178897fb76436c785b2b86d8e9fb9f7
100644 blob 8e4b68ee140cfbeaee5d38671cb03c83d1b6f2a4  fileA.t
COMMIT OBJECT
> git cat­file ­t 7d6e09068aa3db89e331ab902a86438b4b929941
commit
> git cat­file ­p 7d6e09068aa3db89e331ab902a86438b4b929941
tree 4af19c541178897fb76436c785b2b86d8e9fb9f7
author Michal Jurosz <mj@mj41.cz> 1433775564 ­0400
committer Michal Jurosz <mj@mj41.cz> 1433775564 ­0400
commit 01 message
> git log ­n1
commit 7d6e09068aa3db89e331ab902a86438b4b929941
Author: Michal Jurosz <mj@mj41.cz>
Date:   Mon Jun 8 10:59:24 2015 ­0400
    commit 01 message
.GITIGNORE 1/2
> touch tempf.tmp
> mkdir ­p tmp ; touch tmp/tf.txt
> git status ­­short
?? fileB.txt
?? tempf.tmp
?? tmp/
.GITIGNORE 2/2
> echo 'tmp/' > .gitignore
> echo '*.tmp' >> .gitignore
> git status ­­short
?? .gitignore
?? fileB.txt
> git add .gitignore
SECOND COMMIT
> cat fileB.txt
textB line 1
> git add fileB.txt
> git commit ­m"commit 02 message"
[master ec23b35] commit 02 message
 2 files changed, 3 insertions(+)
 create mode 100644 .gitignore
 create mode 100644 fileB.txt
> git log ­­decorate ­­graph ­­pretty=format:'%h ­%d %s <%ae>' 
* ec23b35 ­ (HEAD, master) commit 02 message <mj@mj41.cz>
* 7d6e090 ­ commit 01 message <mj@mj41.cz>
> git branch BRc2
THIRD COMMIT 1/3
> echo "textB line 2" >> fileB.txt
> cat fileB.txt
textB line 1
textB line 2
> mkdir dirH
> echo "textHC line 1" > dirH/fileHC.txt
THIRD COMMIT 2/3
> git status
On branch master
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout ­­ <file>..." to discard changes in workin
  modified:   fileB.txt
Untracked files:
  (use "git add <file>..." to include in what will be committed
  dirH/
no changes added to commit (use "git add" and/or "git commit ­a
THIRD COMMIT 3/3
> git add fileB.txt
> git add dirH
> git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)
  new file:   dirH/fileHC.txt
  modified:   fileB.txt
> git commit ­m"commit 03 message"
[master fcb9538] commit 03 message
 2 files changed, 2 insertions(+)
 create mode 100644 dirH/fileHC.txt
FOURTH COMMIT (-A)
> echo "textHC line 2" >> dirH/fileHC.txt
> git status
On branch master
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout ­­ <file>..." to discard changes in workin
  modified:   dirH/fileHC.txt
no changes added to commit (use "git add" and/or "git commit ­a
> git commit ­a ­m"commit 04 message"
[master e4d63af] commit 04 message
 1 file changed, 1 insertion(+)
CAT TREE (THE REAL ONE) 1/2
> git cat­file ­t 2afe2cf674f123661ecbf68b698f1ffd4a1f5f23
tree
> git cat­file ­p 2afe2cf674f123661ecbf68b698f1ffd4a1f5f23
100644 blob 60d6882bff469b815a3ba2334520ee7987f0bc92  .gitign
040000 tree f584e5928a3315c4dc8dcf09b46d3e4d8d711f83  dirH
100644 blob 8e4b68ee140cfbeaee5d38671cb03c83d1b6f2a4  fileA.t
100644 blob 3d67da922cae213e0ba10593c31c763543c97fee  fileB.t
> git cat­file ­t f584e5928a3315c4dc8dcf09b46d3e4d8d711f83
tree
> git cat­file ­p f584e5928a3315c4dc8dcf09b46d3e4d8d711f83
100644 blob 7dd188dd69574eee96bc02f5783a01eceb30f8c3  fileHC.
CAT TREE (THE REAL ONE) 2/2
> git cat­file ­t 7dd188dd69574eee96bc02f5783a01eceb30f8c3
blob
> git cat­file ­p 7dd188dd69574eee96bc02f5783a01eceb30f8c3
textHC line 1
textHC line 2
CRYPTOGRAPHIC
the last commit - sha1
cryptographic authentication of history
commit
-> working tree -> trees + blobs
-> parent commit(s)
-> working tree(s) ...
...
the first commit (without any parent)
CLEAN INDEX
> git status ­­short
> git ls­files ­s
100644 60d6882bff469b815a3ba2334520ee7987f0bc92 0  .gitign
100644 7dd188dd69574eee96bc02f5783a01eceb30f8c3 0  dirH/fi
100644 8e4b68ee140cfbeaee5d38671cb03c83d1b6f2a4 0  fileA.t
100644 3d67da922cae213e0ba10593c31c763543c97fee 0  fileB.t
> echo "textHC line 3" >> dirH/fileHC.txt
> git add ­A ; git status ­­short
M  dirH/fileHC.txt
> git ls­files ­s
100644 60d6882bff469b815a3ba2334520ee7987f0bc92 0  .gitign
100644 69694edab7d1f25fc6565ce60c6818dd615833e1 0  dirH/fi
100644 8e4b68ee140cfbeaee5d38671cb03c83d1b6f2a4 0  fileA.t
100644 3d67da922cae213e0ba10593c31c763543c97fee 0  fileB.t
SYMBOLIC-REF (HEAD), REFS
> git log ­­oneline ­­decorate ­n2
e4d63af (HEAD, master) commit 04 message
fcb9538 commit 03 message
> cat .git/HEAD
ref: refs/heads/master
> git symbolic­ref HEAD
refs/heads/master
> cat .git/refs/heads/master
e4d63afacf3d1d5782aacc97158092b5e4a1b096
> git rev­parse ­­short refs/heads/master
e4d63af
PIT STOP 2
working dir, index, object database (repository)
blob, tree, commit, tag
master, HEAD
Questions?
GARBAGE
Garbage accumulates unless collected
Periodic explicit object packing
OBJECTS (AFTER COMMITS)
> find .git/objects ­type f | wc ­l
17
> du ­hs .git/objects
140K  .git/objects
> find .git/objects ­type f | head ­n 10
.git/objects/fc/b953879a566ea607d58948a0f520b1f75ad277
.git/objects/44/dba16a657baed8a09f68312c985dff84e3134c
.git/objects/ec/23b35681d22f0c6d6f14572cab119bbebbac85
.git/objects/f5/84e5928a3315c4dc8dcf09b46d3e4d8d711f83
.git/objects/7d/d188dd69574eee96bc02f5783a01eceb30f8c3
.git/objects/7d/6e09068aa3db89e331ab902a86438b4b929941
.git/objects/e4/d63afacf3d1d5782aacc97158092b5e4a1b096
.git/objects/69/694edab7d1f25fc6565ce60c6818dd615833e1
.git/objects/8c/87fa6ad6c88318d1a528e99b810a6a49c65ffe
.git/objects/4a/f19c541178897fb76436c785b2b86d8e9fb9f7
GIT GC 1/2
> git gc ­­aggressive ­­prune
> tree ­aF .git/objects
.git/objects
|­­ 69/
|   `­­ 694edab7d1f25fc6565ce60c6818dd615833e1
|­­ info/
|   `­­ packs
`­­ pack/
    |­­ pack­df426cfa7c95a7dbaeca9659a3f9e11f4453a6f7.idx
    `­­ pack­df426cfa7c95a7dbaeca9659a3f9e11f4453a6f7.pack
3 directories, 4 files
> du ­hs .git/objects
32K  .git/objects
GIT GC 2/2
> git cat­file ­p 7dd188dd69574eee96bc02f5783a01eceb30f8c3
textHC line 1
textHC line 2
> tree ­aF .git/refs
.git/refs
|­­ heads/
`­­ tags/
2 directories, 0 files
> cat .git/packed­refs
# pack­refs with: peeled fully­peeled 
ec23b35681d22f0c6d6f14572cab119bbebbac85 refs/heads/BRc2
e4d63afacf3d1d5782aacc97158092b5e4a1b096 refs/heads/master
ADD AFTER GIT GC
> echo "textA line 2" >> fileA.txt ; git add ­A
> tree ­­noreport ­aF .git | grep ­A 100 'objects/'
|­­ objects/
|   |­­ 69/
|   |   `­­ 694edab7d1f25fc6565ce60c6818dd615833e1
|   |­­ e3/
|   |   `­­ 1d478f6c73239c2452b571b9b07c33d568d330
|   |­­ info/
|   |   `­­ packs
|   `­­ pack/
|       |­­ pack­df426cfa7c95a7dbaeca9659a3f9e11f4453a6f7.idx
|       `­­ pack­df426cfa7c95a7dbaeca9659a3f9e11f4453a6f7.pack
|­­ packed­refs
`­­ refs/
    |­­ heads/
    `­­ tags/
GIT DIFF (PREPARE)
> git reset ­­hard HEAD
HEAD is now at e4d63af commit 04 message
> echo "textA line 2" >> fileA.txt
> git add ­A
> echo "textA line 3" >> fileA.txt
GIT DIFF (INTRO)
GIT DIFF
> git diff
diff ­­git a/fileA.txt b/fileA.txt
index e31d478..abd231e 100644
­­­ a/fileA.txt
+++ b/fileA.txt
@@ ­1,2 +1,3 @@
 textA line 1
 textA line 2
+textA line 3
GIT DIFF --CACHED
> git diff ­­cached
diff ­­git a/fileA.txt b/fileA.txt
index 8e4b68e..e31d478 100644
­­­ a/fileA.txt
+++ b/fileA.txt
@@ ­1 +1,2 @@
 textA line 1
+textA line 2
GIT DIFF HEAD
> git diff HEAD
diff ­­git a/fileA.txt b/fileA.txt
index 8e4b68e..abd231e 100644
­­­ a/fileA.txt
+++ b/fileA.txt
@@ ­1 +1,3 @@
 textA line 1
+textA line 2
+textA line 3
GIT DIFF <REF1> <REF2>
> git diff HEAD~3 HEAD~2
diff ­­git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..60d6882
­­­ /dev/null
+++ b/.gitignore
@@ ­0,0 +1,2 @@
+tmp/
+*.tmp
diff ­­git a/fileB.txt b/fileB.txt
new file mode 100644
index 0000000..44dba16
­­­ /dev/null
+++ b/fileB.txt
@@ ­0,0 +1 @@
+textB line 1
REVISIONS - <REV> 1/3
<sha1> - e.g. 8e4b68e
<refname> - e.g. HEAD, master, origin/master
.git/<refname>
.git/refs<refname>
.git/tags/<refname>
.git/heads/<refname>
.git/remotes/<refname>
...
...
REVISIONS - <REV> 2/3
<rev>~<n> - e.g. master~3
> git log ­n3 ­­oneline ­­decorate
e4d63af (HEAD, master) commit 04 message
fcb9538 commit 03 message
ec23b35 (BRc2) commit 02 message
> git rev­parse ­­short HEAD ; git rev­parse ­­short HEAD
e4d63af
e4d63af
> git rev­parse ­­short HEAD~2
ec23b35
> git cat­file ­t ec23b35
commit
REVISIONS - <REV> 3/3
<rev>:<path>, e.g. HEAD:dirH/fileHC.txt
> git rev­parse ­­short HEAD~1:dirH/fileHC.txt
5df063b
> git cat­file ­t 5df063b
blob
REVISIONS RANGES 1/3
<rev> - reachable from <rev>
> git log ­­oneline
e4d63af commit 04 message
fcb9538 commit 03 message
ec23b35 commit 02 message
7d6e090 commit 01 message
> git log HEAD~2 ­­oneline
ec23b35 commit 02 message
7d6e090 commit 01 message
> git log 'master^{/commit 03}' ­­oneline
fcb9538 commit 03 message
ec23b35 commit 02 message
7d6e090 commit 01 message
REVISIONS RANGES 2/3
<rev1>..<rev2>
include commits reachable from <rev2>
exclude commits reachable from <rev1>
<rev1>...<rev2>
include commits reachable from either <rev1>
or <rev2>
exclude reachable from both
REVISIONS RANGES 3/3
> git log 'master^{/01}'..'master^{/03}' ­­oneline
fcb9538 commit 03 message
ec23b35 commit 02 message
> git log 'master^{/03}'...'master^{/01}' ­­oneline
fcb9538 commit 03 message
ec23b35 commit 02 message
GIT GREP
look for specified patterns in the tracked files
in the work tree
blobs in given tree objects
> git grep ­n 'line 3'
fileA.txt:3:textA line 3
> git grep ­n ­e 'line 2' HEAD~1 HEAD~2
HEAD~1:fileB.txt:2:textB line 2
GIT GREP --CACHED
look for specified patterns in the tracked files
blobs registered in the index file
> git grep ­n ­­cached 'line 3'
> git grep ­n ­­cached 'line 2'
dirH/fileHC.txt:2:textHC line 2
fileA.txt:2:textA line 2
fileB.txt:2:textB line 2
GIT LOG -- <PATHS>
commits modifying the given are selected
gitk -- <string>
> git log ­­oneline ­­ dirH
e4d63af commit 04 message
fcb9538 commit 03 message
GIT LOG -S <STRING> 1/2
... introduce or remove an instance of <string>
gitk -S <string>
GIT LOG -S <STRING> 2/2
> git log ­S 'line 2' ­­oneline
e4d63af commit 04 message
fcb9538 commit 03 message
> git show e4d63af
commit e4d63afacf3d1d5782aacc97158092b5e4a1b096
Author: Michal Jurosz <mj@mj41.cz>
Date:   Mon Jun 8 10:59:25 2015 ­0400
    commit 04 message
diff ­­git a/dirH/fileHC.txt b/dirH/fileHC.txt
index 5df063b..7dd188d 100644
­­­ a/dirH/fileHC.txt
+++ b/dirH/fileHC.txt
@@ ­1 +1,2 @@
 textHC line 1
+textHC line 2
GIT BLAME
last change of each line
git gui blame
> git blame dirH/fileHC.txt
fcb95387 (Michal Jurosz 2015­06­08 10:59:24 ­0400 1) textHC lin
e4d63afa (Michal Jurosz 2015­06­08 10:59:25 ­0400 2) textHC lin
RESET AND CHECKOUT
the three trees
working directory
index
HEAD
GIT RESET --HARD <REV>
move HEAD (and the branch)
reset index
reset working tree
GIT RESET [--MIXED] <REV>
move HEAD (and the branch)
reset index
reset working tree
GIT RESET --SOFT <REV>
move HEAD (and the branch)
reset index
reset working tree
GIT CHECKOUT/RESET -- FILES
PIT STOP 3
git diff
<rev> - sha1, HEAD, master, moje-branchA
gitk, git gui blame
git grep, git log -S 'use utf8', git blame
git reset --hard
Questions?
BRANCHES
> git branch ­v
  BRc2   ec23b35 commit 02 message
* master e4d63af commit 04 message
> git branch mj­test
> git branch ­v
  BRc2    ec23b35 commit 02 message
* master  e4d63af commit 04 message
  mj­test e4d63af commit 04 message
> git show­ref ­­head ­­abbrev
e4d63af HEAD
ec23b35 refs/heads/BRc2
e4d63af refs/heads/master
e4d63af refs/heads/mj­test
GIT CHECKOUT <BRANCH>
move only HEAD (switch branch)
reset index
reset not modified files
merge modified
reset working tree
reset not modified files
merge modified
GIT CHECKOUT BRC2 1/2
> git branch ­v
  BRc2    ec23b35 commit 02 message
* master  e4d63af commit 04 message
  mj­test e4d63af commit 04 message
> git reset ­­hard master
HEAD is now at e4d63af commit 04 message
> cat fileA.txt
textA line 1
> echo "textA line 2" >> fileA.txt
> git add ­A
> echo "textA line 3" >> fileA.txt
GIT CHECKOUT BRC2 2/2
> git checkout BRc2
Switched to branch 'BRc2'
M  fileA.txt
> git status ­­short
MM fileA.txt
> git diff ­­cached | grep '+textA'
+textA line 2
> git diff | grep '+textA'
+textA line 3
NEW BRANCH
> git branch BRc2­pokus
> git branch ­v | grep '*'
* BRc2       ec23b35 commit 02 message
> git checkout BRc2­pokus
Switched to branch 'BRc2­pokus'
M  fileA.txt
> git branch ­v | grep '*'
* BRc2­pokus ec23b35 commit 02 message
> cat .git/HEAD
ref: refs/heads/BRc2­pokus
CHECKOUT -B (NEW BRANCH)
> git checkout ­b BRc2­mod
Switched to a new branch 'BRc2­mod'
M  fileA.txt
> git branch ­d BRc2­pokus
Deleted branch BRc2­pokus (was ec23b35).
> git branch ­v
  BRc2     ec23b35 commit 02 message
* BRc2­mod ec23b35 commit 02 message
  master   e4d63af commit 04 message
  mj­test  e4d63af commit 04 message
NEW BRANCH COMMITS 1/2
> git ci ­m"branch c2­mod commit A"
[BRc2­mod 4956cc7] branch c2­mod commit A
 1 file changed, 1 insertion(+)
> git ci ­a ­m"branch c2­mod commit B"
[BRc2­mod b3c71e7] branch c2­mod commit B
 1 file changed, 1 insertion(+)
> echo "textX line 1" >> fileX.txt
> git add fileX.txt
> git ci ­a ­m"branch c2­mod commit C ­ add fileX"
[BRc2­mod 791c5fe] branch c2­mod commit C ­ add fileX
 1 file changed, 1 insertion(+)
 create mode 100644 fileX.txt
NEW BRANCH COMMITS 2/2
> git log ­­all ­­graph ­­date­order ­­decorate ­­oneline
* 791c5fe (HEAD, BRc2­mod) branch c2­mod commit C ­ add fileX
* b3c71e7 branch c2­mod commit B
* 4956cc7 branch c2­mod commit A
| * e4d63af (mj­test, master) commit 04 message
| * fcb9538 commit 03 message
|/  
* ec23b35 (BRc2) commit 02 message
* 7d6e090 commit 01 message
> git branch ­D mj­test
Deleted branch mj­test (was e4d63af).
MERGE
> git checkout master
Switched to branch 'master'
> git merge BRc2­mod
Merge made by the 'recursive' strategy.
 fileA.txt | 2 ++
 fileX.txt | 1 +
 2 files changed, 3 insertions(+)
 create mode 100644 fileX.txt
> git log ­­all ­­graph ­­date­order ­­decorate ­­oneline
*   b89ef4a (HEAD, master) Merge branch 'BRc2­mod'
|  
| * 791c5fe (BRc2­mod) branch c2­mod commit C ­ add fileX
| * b3c71e7 branch c2­mod commit B
| * 4956cc7 branch c2­mod commit A
* | e4d63af commit 04 message
* | fcb9538 commit 03 message
|/  
* ec23b35 (BRc2) commit 02 message
* 7d6e090 commit 01 message
Upstream Origin
Local repository
Index (cache)
Working directory
GITHUB
a web-based hosting service
3.7M people, 7.1M repositories
investment - July 2012, $100 million USD
a pastebin-style site called Gist
private
US$7/month for five repositories
up to US$200/month for 125 repositories
Bitbucket, Gitorious, SourceForge, CodePlex,
Google Code, Launchpad
June 2013
A16Z
GIT INIT --BARE
> cd ~/git­tt
> git init git­tut­origin ­­bare
Initialized empty Git repository in /home/linus/git­tt­14337755
> ls git­tut­origin
HEAD
branches
config
description
hooks
info
objects
refs
GIT REMOTE - ORIGIN
> cd ~/git­tt/repo­MJ
> git remote add origin file:///home/linus/git­tt­1433775564­43
> git push origin HEAD
To file:///home/linus/git­tt­1433775564­435/git­tut­origin
 * [new branch]      HEAD ­> master
> git log ­­decorate ­­oneline
b89ef4a (HEAD, origin/master, master) Merge branch 'BRc2­mod'
791c5fe (BRc2­mod) branch c2­mod commit C ­ add fileX
b3c71e7 branch c2­mod commit B
4956cc7 branch c2­mod commit A
e4d63af commit 04 message
ec23b35 (BRc2) commit 02 message
fcb9538 commit 03 message
7d6e090 commit 01 message
GIT FETCH
> cd ~/git­tt/repo­MJ
> git remote ­v
origin  file:///home/linus/git­tt­1433775564­435/git­tut­origin
origin  file:///home/linus/git­tt­1433775564­435/git­tut­origin
git­fetch ­ Download objects and refs from another repository
> git fetch
[PEPA] GIT CLONE 1/2
> cd ~/git­tt
> git clone file:///home/linus/git­tt­1433775564­435/git­tut­or
Cloning into 'repo­Pepy'...
> cd repo­Pepy
> git remote ­v
origin  file:///home/linus/git­tt­1433775564­435/git­tut­origin
origin  file:///home/linus/git­tt­1433775564­435/git­tut­origin
> ls
dirH
fileA.txt
fileB.txt
fileX.txt
[PEPA] GIT CLONE 2/2
> ls
dirH
fileA.txt
fileB.txt
fileX.txt
> git branch ­a
* master
  remotes/origin/HEAD ­> origin/master
  remotes/origin/master
[PEPA] GIT LOG
> git log ­­decorate ­­oneline ­­graph ­­all
*   b89ef4a (HEAD, origin/master, origin/HEAD, master) Merge br
|  
| * 791c5fe branch c2­mod commit C ­ add fileX
| * b3c71e7 branch c2­mod commit B
| * 4956cc7 branch c2­mod commit A
* | e4d63af commit 04 message
* | fcb9538 commit 03 message
|/  
* ec23b35 commit 02 message
* 7d6e090 commit 01 message
GIT REMOTE - UPSTREAM
> cd ../repo­MJ
> git remote add upstream git@github.com:mj41/git­fsdvcs­up.git
> git fetch upstream
GIT REMOTE - CONFIGURATION
> git remote ­v
origin  file:///home/linus/git­tt­1433775564­435/git­tut­origin
origin  file:///home/linus/git­tt­1433775564­435/git­tut­origin
upstream  git@github.com:mj41/git­fsdvcs­up.git (fetch)
upstream  git@github.com:mj41/git­fsdvcs­up.git (push)
> git config ­­local ­­list | grep remote
remote.origin.url=file:///home/linus/git­tt­1433775564­435/git­
remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*
remote.upstream.url=git@github.com:mj41/git­fsdvcs­up.git
remote.upstream.fetch=+refs/heads/*:refs/remotes/upstream/*
GIT PUSH
> git checkout ­b BRnp
Switched to a new branch 'BRnp'
> echo "textA line 4 ­ BRnp" >> fileA.txt
> git commit ­a ­m"branch np commit k"
[BRnp 957ee02] branch np commit k
 1 file changed, 1 insertion(+)
> git push origin HEAD
To file:///home/linus/git­tt­1433775564­435/git­tut­origin
 * [new branch]      HEAD ­> BRnp
GIT PUSH --FORCE
please no to master
your topic branche
use fixups
do it once before merging
[PEPA] GIT FETCH
> cd ../repo­Pepy
> git fetch
From file:///home/linus/git­tt­1433775564­435/git­tut­origin
 * [new branch]      BRnp       ­> origin/BRnp
> git log ­­decorate ­­oneline ­­graph
*   b89ef4a (HEAD, origin/master, origin/HEAD, master) Merge br
|  
| * 791c5fe branch c2­mod commit C ­ add fileX
| * b3c71e7 branch c2­mod commit B
| * 4956cc7 branch c2­mod commit A
* | e4d63af commit 04 message
* | fcb9538 commit 03 message
|/  
* ec23b35 commit 02 message
* 7d6e090 commit 01 message
GIT RESET --HARD ORIGIN/... 1/2
> cd ../repo­MJ
> git checkout master
Switched to branch 'master'
> git log ­­decorate ­­oneline ­­all ­­graph | head ­n5
* 957ee02 (origin/BRnp, BRnp) branch np commit k
*   b89ef4a (HEAD, origin/master, master) Merge branch 'BRc2­mo
|  
| * 791c5fe (BRc2­mod) branch c2­mod commit C ­ add fileX
| * b3c71e7 branch c2­mod commit B
GIT RESET --HARD ORIGIN/... 2/2
> git reset ­­hard origin/BRnp
HEAD is now at 957ee02 branch np commit k
> git log ­­decorate ­­oneline ­­all ­­graph | head ­n5
* 957ee02 (HEAD, origin/BRnp, master, BRnp) branch np commit k
*   b89ef4a (origin/master) Merge branch 'BRc2­mod'
|  
| * 791c5fe (BRc2­mod) branch c2­mod commit C ­ add fileX
| * b3c71e7 branch c2­mod commit B
> git push origin HEAD
To file:///home/linus/git­tt­1433775564­435/git­tut­origin
   b89ef4a..957ee02  HEAD ­> master
PIT STOP 4
git checkout
remote repositories
git push
git fetch
Questions?
GUI
gitk --all --date-order
git gui
git gui blame
Windows: TortoiseGit
MAC: GitX, GitNub
GIT MORE 1/2
git clean
git commit --amend
git ci --fixup
git rebase -i
git cherry-pick
git revert
git tag
GIT MORE 2/2
git bisec
git reflog
git filter-branch
git gc
git fsck
...
LINKS
Pro Git, Scott Chacon
license
- Czech translation
git-scm.com
CC BY 3.0
knihy.nic.cz
git-cheatsheet
THANK YOU
Michal Jurosz (mj41)
www.GoodData.com
Generated from source
by inside .
Powered by .
github.com/mj41/git-course-mj41
Presentation::Builder prbuilder Docker container
reveal.js
QUESTIONS?

Mais conteúdo relacionado

Mais procurados

Tuning systemd for embedded
Tuning systemd for embeddedTuning systemd for embedded
Tuning systemd for embeddedAlison Chaiken
 
Kernel Recipes 2013 - Viewing real time ltt trace using gtkwave
Kernel Recipes 2013 - Viewing real time  ltt trace using gtkwaveKernel Recipes 2013 - Viewing real time  ltt trace using gtkwave
Kernel Recipes 2013 - Viewing real time ltt trace using gtkwaveAnne Nicolas
 
Your first dive into systemd!
Your first dive into systemd!Your first dive into systemd!
Your first dive into systemd!Etsuji Nakai
 
Linux Containers From Scratch: Makfile MicroVPS
Linux Containers From Scratch: Makfile MicroVPSLinux Containers From Scratch: Makfile MicroVPS
Linux Containers From Scratch: Makfile MicroVPSjoshuasoundcloud
 
Full system roll-back and systemd in SUSE Linux Enterprise 12
Full system roll-back and systemd in SUSE Linux Enterprise 12Full system roll-back and systemd in SUSE Linux Enterprise 12
Full system roll-back and systemd in SUSE Linux Enterprise 12Gábor Nyers
 
Namespaces and cgroups - the basis of Linux containers
Namespaces and cgroups - the basis of Linux containersNamespaces and cgroups - the basis of Linux containers
Namespaces and cgroups - the basis of Linux containersKernel TLV
 
Linux Containers From Scratch
Linux Containers From ScratchLinux Containers From Scratch
Linux Containers From Scratchjoshuasoundcloud
 
Kernel Recipes 2015 - Porting Linux to a new processor architecture
Kernel Recipes 2015 - Porting Linux to a new processor architectureKernel Recipes 2015 - Porting Linux to a new processor architecture
Kernel Recipes 2015 - Porting Linux to a new processor architectureAnne Nicolas
 
IRQs: the Hard, the Soft, the Threaded and the Preemptible
IRQs: the Hard, the Soft, the Threaded and the PreemptibleIRQs: the Hard, the Soft, the Threaded and the Preemptible
IRQs: the Hard, the Soft, the Threaded and the PreemptibleAlison Chaiken
 
Linux 开源操作系统发展新趋势
Linux 开源操作系统发展新趋势Linux 开源操作系统发展新趋势
Linux 开源操作系统发展新趋势Anthony Wong
 
Systemd for developers
Systemd for developersSystemd for developers
Systemd for developersAlison Chaiken
 
Linux Container Brief for IEEE WG P2302
Linux Container Brief for IEEE WG P2302Linux Container Brief for IEEE WG P2302
Linux Container Brief for IEEE WG P2302Boden Russell
 
libreCMC : The Libre Embedded GNU/Linux Distro
libreCMC : The Libre Embedded GNU/Linux DistrolibreCMC : The Libre Embedded GNU/Linux Distro
libreCMC : The Libre Embedded GNU/Linux DistroAll Things Open
 
Linux containers – next gen virtualization for cloud (atl summit) ar4 3 - copy
Linux containers – next gen virtualization for cloud (atl summit) ar4 3 - copyLinux containers – next gen virtualization for cloud (atl summit) ar4 3 - copy
Linux containers – next gen virtualization for cloud (atl summit) ar4 3 - copyBoden Russell
 
GlusterFS Update and OpenStack Integration
GlusterFS Update and OpenStack IntegrationGlusterFS Update and OpenStack Integration
GlusterFS Update and OpenStack IntegrationEtsuji Nakai
 
Cgroups, namespaces, and beyond: what are containers made from? (DockerCon Eu...
Cgroups, namespaces, and beyond: what are containers made from? (DockerCon Eu...Cgroups, namespaces, and beyond: what are containers made from? (DockerCon Eu...
Cgroups, namespaces, and beyond: what are containers made from? (DockerCon Eu...Jérôme Petazzoni
 
Virtualization which isn't: LXC (Linux Containers)
Virtualization which isn't: LXC (Linux Containers)Virtualization which isn't: LXC (Linux Containers)
Virtualization which isn't: LXC (Linux Containers)Dobrica Pavlinušić
 
Kernel Recipes 2015: How to choose a kernel to ship with a product
Kernel Recipes 2015: How to choose a kernel to ship with a productKernel Recipes 2015: How to choose a kernel to ship with a product
Kernel Recipes 2015: How to choose a kernel to ship with a productAnne Nicolas
 

Mais procurados (20)

Tuning systemd for embedded
Tuning systemd for embeddedTuning systemd for embedded
Tuning systemd for embedded
 
Kernel Recipes 2013 - Viewing real time ltt trace using gtkwave
Kernel Recipes 2013 - Viewing real time  ltt trace using gtkwaveKernel Recipes 2013 - Viewing real time  ltt trace using gtkwave
Kernel Recipes 2013 - Viewing real time ltt trace using gtkwave
 
Your first dive into systemd!
Your first dive into systemd!Your first dive into systemd!
Your first dive into systemd!
 
Linux Containers From Scratch: Makfile MicroVPS
Linux Containers From Scratch: Makfile MicroVPSLinux Containers From Scratch: Makfile MicroVPS
Linux Containers From Scratch: Makfile MicroVPS
 
Full system roll-back and systemd in SUSE Linux Enterprise 12
Full system roll-back and systemd in SUSE Linux Enterprise 12Full system roll-back and systemd in SUSE Linux Enterprise 12
Full system roll-back and systemd in SUSE Linux Enterprise 12
 
Namespaces and cgroups - the basis of Linux containers
Namespaces and cgroups - the basis of Linux containersNamespaces and cgroups - the basis of Linux containers
Namespaces and cgroups - the basis of Linux containers
 
Cfg2html fosdem2014
Cfg2html fosdem2014Cfg2html fosdem2014
Cfg2html fosdem2014
 
Linux Containers From Scratch
Linux Containers From ScratchLinux Containers From Scratch
Linux Containers From Scratch
 
Kernel Recipes 2015 - Porting Linux to a new processor architecture
Kernel Recipes 2015 - Porting Linux to a new processor architectureKernel Recipes 2015 - Porting Linux to a new processor architecture
Kernel Recipes 2015 - Porting Linux to a new processor architecture
 
IRQs: the Hard, the Soft, the Threaded and the Preemptible
IRQs: the Hard, the Soft, the Threaded and the PreemptibleIRQs: the Hard, the Soft, the Threaded and the Preemptible
IRQs: the Hard, the Soft, the Threaded and the Preemptible
 
Linux 开源操作系统发展新趋势
Linux 开源操作系统发展新趋势Linux 开源操作系统发展新趋势
Linux 开源操作系统发展新趋势
 
Systemd for developers
Systemd for developersSystemd for developers
Systemd for developers
 
Linux Container Brief for IEEE WG P2302
Linux Container Brief for IEEE WG P2302Linux Container Brief for IEEE WG P2302
Linux Container Brief for IEEE WG P2302
 
Making Linux do Hard Real-time
Making Linux do Hard Real-timeMaking Linux do Hard Real-time
Making Linux do Hard Real-time
 
libreCMC : The Libre Embedded GNU/Linux Distro
libreCMC : The Libre Embedded GNU/Linux DistrolibreCMC : The Libre Embedded GNU/Linux Distro
libreCMC : The Libre Embedded GNU/Linux Distro
 
Linux containers – next gen virtualization for cloud (atl summit) ar4 3 - copy
Linux containers – next gen virtualization for cloud (atl summit) ar4 3 - copyLinux containers – next gen virtualization for cloud (atl summit) ar4 3 - copy
Linux containers – next gen virtualization for cloud (atl summit) ar4 3 - copy
 
GlusterFS Update and OpenStack Integration
GlusterFS Update and OpenStack IntegrationGlusterFS Update and OpenStack Integration
GlusterFS Update and OpenStack Integration
 
Cgroups, namespaces, and beyond: what are containers made from? (DockerCon Eu...
Cgroups, namespaces, and beyond: what are containers made from? (DockerCon Eu...Cgroups, namespaces, and beyond: what are containers made from? (DockerCon Eu...
Cgroups, namespaces, and beyond: what are containers made from? (DockerCon Eu...
 
Virtualization which isn't: LXC (Linux Containers)
Virtualization which isn't: LXC (Linux Containers)Virtualization which isn't: LXC (Linux Containers)
Virtualization which isn't: LXC (Linux Containers)
 
Kernel Recipes 2015: How to choose a kernel to ship with a product
Kernel Recipes 2015: How to choose a kernel to ship with a productKernel Recipes 2015: How to choose a kernel to ship with a product
Kernel Recipes 2015: How to choose a kernel to ship with a product
 

Semelhante a Git (FS and DVCS)

Intro to git (UT biocomputing 2015)
Intro to git (UT biocomputing 2015)Intro to git (UT biocomputing 2015)
Intro to git (UT biocomputing 2015)chenghlee
 
Git it on (includes git hub)
Git it on (includes git hub)Git it on (includes git hub)
Git it on (includes git hub)Martin Bing
 
Version control with GIT
Version control with GITVersion control with GIT
Version control with GITZeeshan Khan
 
A Practical Introduction to git
A Practical Introduction to gitA Practical Introduction to git
A Practical Introduction to gitEmanuele Olivetti
 
Learning git
Learning gitLearning git
Learning gitSid Anand
 
Git workshop 33degree 2011 krakow
Git workshop 33degree 2011 krakowGit workshop 33degree 2011 krakow
Git workshop 33degree 2011 krakowLuca Milanesio
 
Git in the European Parliament
Git in the European ParliamentGit in the European Parliament
Git in the European ParliamentJean-Pol Landrain
 
Git - Basic Crash Course
Git - Basic Crash CourseGit - Basic Crash Course
Git - Basic Crash CourseNilay Binjola
 
Introduction to GIT versioning
Introduction to GIT versioningIntroduction to GIT versioning
Introduction to GIT versioningStackit Community
 
Git_and_GitHub Integration_with_Guidewire
Git_and_GitHub Integration_with_GuidewireGit_and_GitHub Integration_with_Guidewire
Git_and_GitHub Integration_with_GuidewireGandhi Ramu
 
Introduction to Git and Github
Introduction to Git and Github Introduction to Git and Github
Introduction to Git and Github Max Claus Nunes
 

Semelhante a Git (FS and DVCS) (20)

Git introduction
Git introductionGit introduction
Git introduction
 
Intro to git (UT biocomputing 2015)
Intro to git (UT biocomputing 2015)Intro to git (UT biocomputing 2015)
Intro to git (UT biocomputing 2015)
 
Git it on (includes git hub)
Git it on (includes git hub)Git it on (includes git hub)
Git it on (includes git hub)
 
git presentation
git presentation git presentation
git presentation
 
git fast & minimal
git fast & minimalgit fast & minimal
git fast & minimal
 
Version control with GIT
Version control with GITVersion control with GIT
Version control with GIT
 
A Practical Introduction to git
A Practical Introduction to gitA Practical Introduction to git
A Practical Introduction to git
 
Learning git
Learning gitLearning git
Learning git
 
Git workshop 33degree 2011 krakow
Git workshop 33degree 2011 krakowGit workshop 33degree 2011 krakow
Git workshop 33degree 2011 krakow
 
Git in the European Parliament
Git in the European ParliamentGit in the European Parliament
Git in the European Parliament
 
Git - Basic Crash Course
Git - Basic Crash CourseGit - Basic Crash Course
Git - Basic Crash Course
 
Git
GitGit
Git
 
Git
GitGit
Git
 
Git commands
Git commandsGit commands
Git commands
 
1-Intro to VC & GIT PDF.pptx
1-Intro to VC & GIT PDF.pptx1-Intro to VC & GIT PDF.pptx
1-Intro to VC & GIT PDF.pptx
 
Introduction to GIT versioning
Introduction to GIT versioningIntroduction to GIT versioning
Introduction to GIT versioning
 
Git_and_GitHub Integration_with_Guidewire
Git_and_GitHub Integration_with_GuidewireGit_and_GitHub Integration_with_Guidewire
Git_and_GitHub Integration_with_Guidewire
 
Git training with Devaamo
Git training with DevaamoGit training with Devaamo
Git training with Devaamo
 
Git 101
Git 101Git 101
Git 101
 
Introduction to Git and Github
Introduction to Git and Github Introduction to Git and Github
Introduction to Git and Github
 

Último

5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdfWave PLM
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...kellynguyen01
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfkalichargn70th171
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...MyIntelliSource, Inc.
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantAxelRicardoTrocheRiq
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️Delhi Call girls
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️anilsa9823
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsArshad QA
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...gurkirankumar98700
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxbodapatigopi8531
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...OnePlan Solutions
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...harshavardhanraghave
 
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AIABDERRAOUF MEHENNI
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...ICS
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Steffen Staab
 
Clustering techniques data mining book ....
Clustering techniques data mining book ....Clustering techniques data mining book ....
Clustering techniques data mining book ....ShaimaaMohamedGalal
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsAndolasoft Inc
 

Último (20)

5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service Consultant
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS LiveVip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptx
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
 
Clustering techniques data mining book ....
Clustering techniques data mining book ....Clustering techniques data mining book ....
Clustering techniques data mining book ....
 
Exploring iOS App Development: Simplifying the Process
Exploring iOS App Development: Simplifying the ProcessExploring iOS App Development: Simplifying the Process
Exploring iOS App Development: Simplifying the Process
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.js
 

Git (FS and DVCS)