SlideShare a Scribd company logo
Git FoundationsAn exploration of the Git toolbox
Officialtrainingcurriculumv3.1.0©2012,GitHub,Inc.
Hello!
Matthew McCullough
@matthewmccull
Ma hew who?
‣Open source contributor
‣Build tool book co-author
‣Continuous integration book co-author
‣5 year Git evangelist
‣VP of Training at GitHub
Welcome
‣Questions, Pacing
‣Ask questions at any time. Don't wait!
‣Suggest course pacing slowing/speeding up
Github - Git Training Slides: Foundations
Github - Git Training Slides: Foundations
Github - Git Training Slides: Foundations
Git
Where’s this coming from?
Git
Git?
Open Source
Git?
bash scripts C code
Git?
≉
Git
-noun
British Slang. an unpleasant
or contemptible person
-Oxford English Dictionary
“
”
I'm an egotistical bastard, and I name
all my projects after myself.
First Linux, now git.
-Linus Torvalds
“
”
Git
What is this thing?
GIT - the stupid content tracker
"git" can mean anything, depending on your mood.
* random three-letter combination that is pronounceable, and not actually used by any
common UNIX command. The fact that it is a mispronunciation of "get" may or may not be
relevant.
* stupid. contemptible and despicable. simple. Take your pick from the dictionary of
slang.
* "global information tracker": you're in a good mood, and it actually works for you.
Angels sing, and a light suddenly fills the room.
* "goddamn idiotic truckload of sh*t": when it breaks
Git is a fast, scalable, distributed revision control system with an unusually rich
command set that provides both high-level operations and full access to internals.
Git is an Open Source project covered by the GNU General Public License. It was originally
written by Linus Torvalds with help of a group of hackers around the net. It is currently
maintained by Junio C Hamano.
“
”
file trackercontent
Git?
centralized version control systems have matured
CVS
Subversion
PVCS
Perforce
Clear
CaseSource
Safe
RCS
Folders
Git?
small improvements, but no
radical innovation
Git?
Linus?
Git?
I did end up using CVS for 7 years at a commercial
company and I hate it with a passion...
The slogan of Subversion for a while was
"CVS done right"... and if you start with that
kind of slogan, there's nowhere you can go.
There is no way to do CVS right.
-Linus Torvalds
“
”
VCS reboot
Git?
50% Distributed Version Control
Git?
50% Git Concepts
with
1997
code co-op
2001
arch
2003
monotone
2003
SVK
2003
darcs
2005
bazaar
2005
mercurial
2005
git
time to mature
most unique improvements
largest DVCS user base
Setup
Testing Git
Setting up Git
Check your Git version...
git --version
Setup
What is a Git install?
Setting up Git
binaries on your $PATH
Using
Creating a repository
Creating A Repository
# Green field project
$ git init newproject
$ cd newproject
# ...start coding
Creating A Repository
‣Create our first repository
Creating A Repository
or if you already have source code
Creating A Repository
# Legacy project tree
$ cd existingproject
$ git init
# Add all the code
$ git add .
$ git commit -m”Initial import”
Using
What’s in .git?
Contents of .git
.git
!"" COMMIT_EDITMSG
!"" HEAD
!"" MERGE_RR
!"" config
!"" description
!"" hooks
#   !"" pre-commit.sample
#   $"" update.sample
!"" index
!"" info
#   $"" exclude
!"" logs
#   !"" HEAD
#   $"" refs
#   $"" heads
#   $"" master
!"" objects
#   !"" 54
#   #   $"" 3b9bebdc6bd5c4b22136034a95dd097a57d3dd
#   !"" info
#   $"" pack
!"" refs
   !"" heads
   #   $"" master
   $"" tags
Three stage thinking
‣Explore the .git folder
Configuration
Display
Configuring Git
Query existing configuration
Configuring Git
All entries
Configuring Git
#List all config values
git config --list
Configuring Git
Single entry
Configuring Git
#Query effective value of a single key
git config section.key
git config section.subsection.key
Configuring Git
#Show a specific config value
git config user.name
git config user.email
Configuration
Layers
Config Targets
git config --system
#Saves to /etc/gitconfig
Config Targets
git config --global
#Saves to ~/.gitconfig
Config Targets
git config --local
#Saves to .git/config
Configuring Git
#Configure a setting in a .git repository
git config __________
git config --local __________
#Configure a setting in the user's home dir
git config --global __________
#Configure a setting in the Git install dir
# e.g. /usr/local/Cellar/git/1.7.x/etc/gitconfig
git config --system __________
Config Targets
Git configuration reading & writing
targets local by default
Configuration
Inheritance
Config Inheritance
Query existing configuration by layer
Config Inheritance
#Query a single key in a single layer
git config --<WHERE> section.key
git config --<WHERE> section.subsection.key
Config Inheritance
#List all system config values
git config --system --list
Config Inheritance
#List all global config values
git config --global --list
Config Inheritance
#List all local config values
git config --local --list
Config Inheritance
#List effective config values
git config --list
Configuration
Set user identity
Set User Identity
any config at any layer
Set User Identity
#List the current config
git config --global user.name "Fird Birfle"
git config --global user.email "fird@birfle.com"
Set User Identity
just a string
Set User Identity
user identity
Set User Identity
user identityauthenticationnot
Set User Identity
user identityauthenticationauthorizationnot
Configuration
Display color
Set Console Color
console color
Set Console Color
git config --global color.ui always
Set Console Color
git log 
--graph 
--decorate 
--simplify-by-decoration 
--abbrev-commit 
--date=relative 
--pretty=oneline 
--all
Github - Git Training Slides: Foundations
Configuring Git
git log 
--graph 
--decorate 
--simplify-by-decoration 
--abbrev-commit 
--date=relative 
--pretty=oneline 
--all 
| more
Github - Git Training Slides: Foundations
Set Console Color
Bleh!
Set Console Color
output destination detection
Set Console Color
git config --global color.ui auto
# or the identical effect with...
git config --global color.ui true
Set Console Color
git log 
--graph 
--decorate 
--simplify-by-decoration 
--abbrev-commit 
--date=relative 
--pretty=oneline 
--all 
| more
Github - Git Training Slides: Foundations
Set Console Color
when you need itColor
Set Console Color
only when you need itColor
Configuration
Line endings
Line Endings
line endings
Line Endings
VS
Line Endings
VS
LF
CRLF
Line Endings
default is to do nothing
Line Endings
http://help.github.com/dealing-with-lineendings/
Line Endings
#Force files to be LF in the repo,
# even on Mac/Linux
git config --global core.autocrlf input
#Force Windows to convert to platform
# on checkout and to LF on commit
git config --global core.autocrlf true
Line Endings
#Force files to be LF during `add`
git config --global core.autocrlf input
#Force Windows to convert to CRLF
# on checkout and to LF on `add`
git config --global core.autocrlf true
warn about conversion
Line Endings
#Never complain about line ending conversion
git config --global core.safecrlf false
#Warn, but allow line ending conversion to proceed
#(the default)
git config --global core.safecrlf warn
#Do not allow line ending conversion to proceed
git config --global core.safecrlf true
Configuration
Secure Sockets Host (SSH)
Configuring SSH
‣Generate an ssh key pair
Configuring SSH
ssh key pair
Configuring SSH
$ ssh-keygen -t rsa -C”For GitHub”
Configuring SSH
$ ssh-keygen -t rsa -C”For GitHub”
Configuring SSH
Configuring SSH
# Verify the files were created
$ cd ~/.ssh
$ ls
Configuring SSH
Configuring SSH
‣id_rsa is the private half of the key
‣Keep this uncompromisingly secret
‣id_rsa.pub is the public half of the key
‣Give this away freely
Configuring SSH
#GitHub sanity test
ssh -T git@github.com
> Hi matthewmccullough! You've successfully
authenticated, but GitHub does not provide
shell access.
Configuring SSH
#GitHub sanity test with verbose SSH
ssh -v git@github.com
>OpenSSH_5.2p1, OpenSSL 0.9.8l 5 Nov 2009
debug1: Reading configuration data /Users/mccm06/.ssh/config
debug1: Reading configuration data /etc/ssh_config
debug1: Connecting to github.com [207.97.227.239] port 22.
debug1: Connection established.
debug1: identity file /Users/mccm06/.ssh/identity type -1
debug1: identity file /Users/mccm06/.ssh/id_rsa type 1
debug1: identity file /Users/mccm06/.ssh/id_dsa type 2
...
debug1: Host 'github.com' is known and matches the RSA host key.
debug1: Found key in /Users/mccm06/.ssh/known_hosts:3
debug1: ssh_rsa_verify: signature correct
...
debug1: Trying private key: /Users/mccm06/.ssh/identity
debug1: Offering public key: /Users/mccm06/.ssh/id_rsa
debug1: Remote: Forced command: gerve matthewmccullough
Using Git
Three Stage Thinking
Three stage thinking
‣Edit
‣Add
‣Commit
Three stage thinking
Working Staging Repo
add
commit
edit
Three stage thinking
‣shopping cart
‣put things in
‣take things out
‣purchase at register
Three stage thinking
Three stage thinking
‣database transaction
‣update values
‣insert rows
‣delete rows
‣commit transaction
Three stage thinking
only onestaging area
Three stage thinking
Working Staging Repo
add
commit
edit
Setup
Commit Message Editor
Commit Message Editor
✓? Used the VI editor?
Commit Message Editor
I
y
;WQ
Commit Message Editor
an alternate editor?
Commit Message Editor
$EDITOR environment variable
O
ption
1
Commit Message Editor
$ export EDITOR=<AnEditorOnYourPath>
O
ption
1
Commit Message Editor
GitPad wraps Notepad (or $EDITOR)
O
ption
2
Commit Message Editor
http://github.com/github/GitPad
O
ption
2
Commit Message Editor
Run GitPad
...registers & wraps Notepad as the editor
O
ption
2
Commit Message Editor
Git-specific configuration option
O
ption
3
Commit Message Editor
#for TextMate on Mac
git config --global core.editor "mate -w"
#for Notepad2 on Windows
git config --global core.editor "notepad2.exe"
#for emacs on Linux
git config --global core.editor "emacs"
O
ption
3
Commit Message Editor
O
ption
3
Commit Message Editor
‣Toggle to alternate editor
‣Make a commit
‣Test that the new editor pops up
Usage Basics
Adding & committing code
Three stage thinking
$ vi first.html
$ git status
$ git add first.html
$ git commit -m”First commit”
Three stage thinking
‣Write a sample HTML or TXT file
‣Inspect Git’s status
‣Add code (stage it)
‣Commit code
Usage Basics
Diff-ing changes
Three stage thinking
What has changed that we
haven’t committed?
Three stage thinking
# Show the unstaged changes
$ git diff
Three stage thinking
Working Staging Repo
$ git diff
Three stage thinking
# Show the staged changes
$ git diff --staged
Three stage thinking
Working Staging Repo
$ git diff --staged
Three stage thinking
# Show uncommitted changes
$ git diff HEAD
Three stage thinking
Working Staging Repo
$ git diff HEAD
Usage Basics
Limiting diff output
Limiting Diff Output
Word changes instead of entire lines?
Limiting Diff Output
git diff --color-words
Limiting Diff Output
$ git diff
diff --git a/first.txt b/first.txt
index cbb1543..e99dea9 100644
--- a/first.txt
+++ b/first.txt
@@ -1,4 +1,4 @@
-//Round the rugged rock
+//Round the ragged rock
$ git diff --color-words
diff --git a/first.txt b/first.txt
index cbb1543..e99dea9 100644
--- a/first.txt
+++ b/first.txt
@@ -1,4 +1,4 @@
//Round the ruggedragged rock
Limiting Diff Output
git diff --word-diff
Limiting Diff Output
$ git diff
diff --git a/first.txt b/first.txt
index cbb1543..e99dea9 100644
--- a/first.txt
+++ b/first.txt
@@ -1,4 +1,4 @@
-//Round the rugged rock
+//Round the ragged rock
$ git diff --word-diff
diff --git a/first.txt b/first.txt
index cbb1543..e99dea9 100644
--- a/first.txt
+++ b/first.txt
@@ -1,4 +1,4 @@
//Round the [-rugged-]{+ragged+} rock
Usage Basics
Whitespace diff
Limiting Diff Output
whitespace suppressed?
Limiting Diff Output
refactoring review
Limiting Diff Output
git diff -w
Limiting Diff Output
$ git diff
diff --git a/first.txt b/first.txt
index 09195c0..f2c3243 100644
--- a/first.txt
+++ b/first.txt
@@ -1,4 +1,4 @@
-//Foo
-//Bar
-//Baz
+ //Foo
+// Bar
+//Baz▊
$ git diff -w
$
Usage Basics
Limiting diff by type
Limiting Diff Output
# Added (A)
# Copied (C)
# Deleted (D)
# Modified (M)
# Renamed (R)
# Type changed (T)
# Unmerged (U)
# Unknown (X)
# Pairing Broken (B)
# Only show changes in added files
git diff --diff-filter=A
Limiting Diff Output
# Added (A)
# Copied (C)
# Deleted (D)
# Modified (M)
# Renamed (R)
# Type changed (T)
# Unmerged (U)
# Unknown (X)
# Pairing Broken (B)
# Only show changes in modified files
git diff --diff-filter=M
Limiting Diff Output
# Added (A)
# Copied (C)
# Deleted (D)
# Modified (M)
# Renamed (R)
# Type changed (T)
# Unmerged (U)
# Unknown (X)
# Pairing Broken (B)
# Only show changes in added or modified files
git diff --diff-filter=AM
Limiting Diff Output
$ git status -s -u
D README
MM first.txt
$ git diff --diff-filter=M
diff --git a/first.txt b/first.txt
index 71b55ef..14e4853 100644
--- a/first.txt
+++ b/first.txt
@@ -1,3 +1,3 @@
-//Foo
//Bar
+//Baz
Only first.txt is
reported
Usage Basics
Reviewing history
Three stage thinking
view history of commits
Three stage thinking
# Show all history
git log
Three stage thinking
# Show all history with filenames
git log --stat
Three stage thinking
# Show all history with patches
git log --patch
git log -p
Three stage thinking
# Limit the output entries
git log -1
git log -3
git log -5
Three stage thinking
# Control the output format
git log --pretty=full
Three stage thinking
# Control the output format
git log --pretty=fuller
Three stage thinking
# Control the output format
git log --pretty=email
Three stage thinking
# Control the output format
git log --pretty=raw
Three stage thinking
# Control the output format
git log --pretty=format:<pattern>
Three stage thinking
# Limit the output to added files
git log --diff-filter=A
Usage Basics+
Ignoring files
Ignoring Files
Untracked Tracked
Unmodified
Tracked
Modified
Tracked
Staged
Ignored
commit
add
edit
add
rm
ignore
Ignoring Files
suppressing files from being
reported as untracked
Ignoring Files
glob patterns
Ignoring Files
$ vim .gitignore
#Add glob patterns, one per line
*.log
*.tmp
Ignoring Files
in-memory recursive evaluation
Ignoring Files
$ vim .gitignore
#Add glob patterns, one per line
*.log
*.tmp
target
output/
!special.log
Ignoring Files
‣Ignore files via local .gitignore
Usage Basics+
Open source .gitignores
Open Source Ignores
Preconfigured .gitignore files
Open Source Ignores
http://github.com/github/gitignore
copy and paste(the one time it’s OK to do it)
Usage Basics+
Global ignores
Global Ignore
Global .gitignore ?
Global Ignore
off by default
Global Ignore
$ git config --global
core.excludesfile "~/.gitignore"
Global Ignore
$ vim ~/.gitignore
# Operating system and editor temp files
# Generally redundant over project .gitignores
thumbs.db
.DS_Store
Global Ignore
‣Ignore files via global ~/.gitignore
Usage Basics+
Removing files
The Git File Workflow
Untracked Tracked
Unmodified
Tracked
Modified
Tracked
Staged
Ignored
commit
add
edit
add
rm
ignore
The Git File Workflow
Removing Files
The Git File Workflow
# Directly remove & stage
$ git rm <FILENAME>
The Git File Workflow
# Remove with OS or tool,
# not integrated with Git
$ rm <FILENAME>
# Staging area says it is
# deleted but not staged
$ git status
# Put deletion into staging
$ git rm <FILENAME>
The Git File Workflow
# Remove with OS or tool
# then follow up with git add
$ rm <FILENAMES>
$ git add -u .
The Git File Workflow
‣ Remove files
Usage Basics+
Moving files
The Git File Workflow
Untracked Tracked
Unmodified
Tracked
Modified
Tracked
Staged
Ignored
commit
add
edit
add
rm
ignore
The Git File Workflow
Moving Files
The Git File Workflow
# Directly move & stage
$ git mv <FILENAME> <NEWFILENAME>
The Git File Workflow
# Move with OS or tool,
mv <FILENAME> <NEWFILENAME>
# Then follow up with git add
git add -A .
The Git File Workflow
‣ Rename (move) files
‣ View history of the move
Usage Basics+
Similarity index
Similarity Index
no "move" primitive
Github - Git Training Slides: Foundations
Github - Git Training Slides: Foundations
Similarity Index
“similarity index”
Github - Git Training Slides: Foundations
Similarity Index
score of sameness
Usage Basics+
Similarity index for moves
Similarity Index
# Move with OS or tool,
$ mv <FILENAME> <NEWFILENAME>
# Follow up by staging everything
$ git add -A .
# Renames showing
git status
# No renames showing?
git log --stat
why no renames in history?
Similarity Index
# Renames shown
git log --stat -M
Similarity Index
‣ Rename (move) files with changes
‣ Essentially, a refactoring workflow
Usage Basics+
Similarity index for copies
Similarity Index
# Copies & renames shown
# (superset of -M)
git log --stat -C
Similarity Index
‣Copy a file to a new filename
‣Add and commit it
‣Log it using our -C option
“For performance reasons, by
default, -C option finds
copies only if the original file
of the copy was modified in
the same changeset.
”
Similarity Index
‣Modify a file and copy it (in the same commit)
‣Log using the -C option
“The --find-copies-harder flag makes the
command inspect unmodified files as
candidates for the source of copy. This
is a very expensive operation for large
projects, so use it with caution. Giving
more than one -C option has the same
effect.
”
Similarity Index
# Copies & renames shown
# (superset of -M)
git log --stat -C -C
git log --stat --find-copies-harder
Similarity Index
‣Log the same file using our -C -C option
Usage Basics+
Similarity index for blame
Similarity Index
# File authoring shown
git blame rerere.c
Similarity Index
# True source of code shown
git blame rerere.c -C
Similarity Index
5b2fd956 (Stephan Beyer 2008-07-09 14:58:57 +0200 1) #include "cache.h"
c455c87c (Johannes Schindelin 2008-07-21 19:03:49 +0100 2) #include "string-list.h"
5b2fd956 (Stephan Beyer 2008-07-09 14:58:57 +0200 3) #include "rerere.h"
5b2fd956 (Stephan Beyer 2008-07-09 14:58:57 +0200 4) #include "xdiff-interface.h"
dea4562b (Junio C Hamano 2009-12-25 15:51:32 -0800 5) #include "dir.h"
dea4562b (Junio C Hamano 2009-12-25 15:51:32 -0800 6) #include "resolve-undo.h"
dea4562b (Junio C Hamano 2009-12-25 15:51:32 -0800 7) #include "ll-merge.h"
8588567c (Junio C Hamano 2010-01-16 23:28:46 -0800 8) #include "attr.h"
5b2fd956 (Stephan Beyer 2008-07-09 14:58:57 +0200 9)
ac49f5ca (Martin von Zweigbergk 2011-02-16 05:47:44 -0500 10) #define RESOLVED 0
ac49f5ca (Martin von Zweigbergk 2011-02-16 05:47:44 -0500 11) #define PUNTED 1
ac49f5ca (Martin von Zweigbergk 2011-02-16 05:47:44 -0500 12) #define THREE_STAGED 2
ac49f5ca (Martin von Zweigbergk 2011-02-16 05:47:44 -0500 13) void *RERERE_RESOLVED = &RERERE_RESOLVED;
ac49f5ca (Martin von Zweigbergk 2011-02-16 05:47:44 -0500 14)
5b2fd956 (Stephan Beyer 2008-07-09 14:58:57 +0200 15) /* if rerere_enabled == -1, fall back to detection of .git
5b2fd956 (Stephan Beyer 2008-07-09 14:58:57 +0200 16) static int rerere_enabled = -1;
5b2fd956 (Stephan Beyer 2008-07-09 14:58:57 +0200 17)
5b2fd956 (Stephan Beyer 2008-07-09 14:58:57 +0200 18) /* automatically update cleanly resolved paths to the inde
5b2fd956 (Stephan Beyer 2008-07-09 14:58:57 +0200 19) static int rerere_autoupdate;
5b2fd956 (Stephan Beyer 2008-07-09 14:58:57 +0200 20)
5b2fd956 (Stephan Beyer 2008-07-09 14:58:57 +0200 21) static char *merge_rr_path;
5b2fd956 (Stephan Beyer 2008-07-09 14:58:57 +0200 22)
90056966 (SZEDER Gábor 2009-02-14 23:21:04 +0100 23) const char *rerere_path(const char *hex, const char *file)
5b2fd956 (Stephan Beyer 2008-07-09 14:58:57 +0200 24) {
90056966 (SZEDER Gábor 2009-02-14 23:21:04 +0100 25) return git_path("rr-cache/%s/%s", hex, file);
5b2fd956 (Stephan Beyer 2008-07-09 14:58:57 +0200 26) }
5b2fd956 (Stephan Beyer 2008-07-09 14:58:57 +0200 27)
Similarity Index
5b2fd956 rerere.c (Stephan Beyer 2008-07-09 14:58:57 +0200 1) #include "cache.h"
c455c87c rerere.c (Johannes Schindelin 2008-07-21 19:03:49 +0100 2) #include "string-list.h"
5b2fd956 rerere.c (Stephan Beyer 2008-07-09 14:58:57 +0200 3) #include "rerere.h"
5b2fd956 rerere.c (Stephan Beyer 2008-07-09 14:58:57 +0200 4) #include "xdiff-interface.h"
dea4562b rerere.c (Junio C Hamano 2009-12-25 15:51:32 -0800 5) #include "dir.h"
dea4562b rerere.c (Junio C Hamano 2009-12-25 15:51:32 -0800 6) #include "resolve-undo.h"
dea4562b rerere.c (Junio C Hamano 2009-12-25 15:51:32 -0800 7) #include "ll-merge.h"
8588567c rerere.c (Junio C Hamano 2010-01-16 23:28:46 -0800 8) #include "attr.h"
5b2fd956 rerere.c (Stephan Beyer 2008-07-09 14:58:57 +0200 9)
ac49f5ca rerere.c (Martin von Zweigbergk 2011-02-16 05:47:44 -0500 10) #define RESOLVED 0
ac49f5ca rerere.c (Martin von Zweigbergk 2011-02-16 05:47:44 -0500 11) #define PUNTED 1
ac49f5ca rerere.c (Martin von Zweigbergk 2011-02-16 05:47:44 -0500 12) #define THREE_STAGED 2
ac49f5ca rerere.c (Martin von Zweigbergk 2011-02-16 05:47:44 -0500 13) void *RERERE_RESOLVED = &RERERE_RESOLVED;
ac49f5ca rerere.c (Martin von Zweigbergk 2011-02-16 05:47:44 -0500 14)
b4372ef1 builtin-rerere.c (Johannes Schindelin 2007-07-06 13:05:59 +0100 15) /* if rerere_enabled == -1, fall back to detection of .git
b4372ef1 builtin-rerere.c (Johannes Schindelin 2007-07-06 13:05:59 +0100 16) static int rerere_enabled = -1;
b4372ef1 builtin-rerere.c (Johannes Schindelin 2007-07-06 13:05:59 +0100 17)
121c813f builtin-rerere.c (Junio C Hamano 2008-06-22 02:04:31 -0700 18) /* automatically update cleanly resolved paths to the inde
121c813f builtin-rerere.c (Junio C Hamano 2008-06-22 02:04:31 -0700 19) static int rerere_autoupdate;
121c813f builtin-rerere.c (Junio C Hamano 2008-06-22 02:04:31 -0700 20)
658f3650 builtin-rerere.c (Johannes Schindelin 2006-12-20 17:39:41 +0100 21) static char *merge_rr_path;
658f3650 builtin-rerere.c (Johannes Schindelin 2006-12-20 17:39:41 +0100 22)
90056966 rerere.c (SZEDER Gábor 2009-02-14 23:21:04 +0100 23) const char *rerere_path(const char *hex, const char *file)
5b2fd956 rerere.c (Stephan Beyer 2008-07-09 14:58:57 +0200 24) {
90056966 rerere.c (SZEDER Gábor 2009-02-14 23:21:04 +0100 25) return git_path("rr-cache/%s/%s", hex, file);
5b2fd956 rerere.c (Stephan Beyer 2008-07-09 14:58:57 +0200 26) }
5b2fd956 rerere.c (Stephan Beyer 2008-07-09 14:58:57 +0200 27)
Network
Offline design
Offline
‣Local repository is a full copy of the remote
‣Clone fetches all branches and tags
‣Almost all activities happen offline (local disk)
‣Offline activities are push-ed to remotes
More available connectivity
More demand to work without
connectivity?
Offline
nice benefit,
but wrong reason
Offline
batched network access
Offline
Offline
Checkout a branch
Add changes
Commit changes
Branch changes
Log history
Grep history
Stash pending changes
Tag a commit
Remove a file
Merge a branch
Rewrite history
Offline
give up incremental revision numbers
Offline
‣ Using every command offline
Network
Cloning protocols
Cloning Repositories
‣Git supports many cloning protocols
‣file
‣git
‣ssh
‣http
Cloning Repositories
‣file
‣git clone file://myrepos/project
‣git clone /myrepos/project
Cloning Repositories
‣git
‣git clone git://server/project.git
Cloning Repositories
‣ssh
‣ git clone git+ssh://user@server:project.git
‣ git clone user@server:project.git
Cloning Repositories
‣http (dumb)
‣git clone http://server/project.git
‣git clone https://server/project.git
Cloning Repositories
‣http (smart)
‣git clone http://server/project.git
‣git clone https://server/project.git
Cloning Repositories
‣ Clone hellogitworld
‣ git clone
Network
Proxy servers
Cloning Repositories
‣Git Configuration
‣git config --global http.proxy “<URL>”
Network
Speed
‣git: git
‣hg: mercurial
‣bzr: bazaar
data from http://whygitisbetterthanx.com/#git-is-fast
git svn
Init
git svn
Status
git svn
Diff
git svn
Tag
git svn
Log
git svn
Commit (Lg)
git svn
Commit (Sm)
git c svn c
Branch
Speed
Speed
‣ Add, commit and push 1000 files
Network
Namespaces
Namespaces
Local Remote Upstream
Namespaces
#List local branches
git branch
Namespaces
Local Remote Upstream
Namespaces
#List remote branches
git branch -r
Namespaces
Local Remote Upstream
Namespaces
#List all branches
git branch -a
Namespaces
Local Remote Upstream
Namespaces
#List upstream branches
git ls-remote origin
Namespaces
Local Remote Upstream
Network
Namespace operations
Namespaces
Local Remote Upstream
commit
fetch
push
clone clone clone
push
pull pull pull
Network
The commit lifecycle
Namespaces
Commit
Push
Pull
Namespaces
‣git commit
‣Transactionally save code snapshot
‣Commit to local branch
‣Operate on local disk
Namespaces
Commit
Push
Pull
Namespaces
‣git push <remote>
‣Send code to an upstream server
‣Update remote branches
Namespaces
Commit
Push
Pull
Namespaces
‣git pull <remote>
‣Retrieve upstream objects
‣Update remote branch
‣Merge changes into local branch
‣Commit the merge to the local branch
Namespaces
Local Remote Upstream
commit
fetch
push
clone clone clone
push
pull pull pull
Network
Remotes
Remotes
Remotes are just symbolic names
Remotes
You can have as many as you like
Remotes
The default name is origin if you’ve cloned
Remotes
Remote-tracking branches are locally immutable
(conceptually)
Remotes
Local Remote Upstream
Remotes
‣ Adding remotes
‣ Fetching from remotes (upstream)
Network
Pruning deletions
‣ Purge remote branches that have been removed from an
upstream repository
‣git remote prune <REMOTENAME>
Remotes
‣Deleting upstream branches
‣Pruning locally
Architecture
Plumbing and Porcelain
Plumbing and Porcelain
Command Composition
Plumbing is the set of low level utilities
Command Composition
Porcelain is the set of end user commands
Command Composition
Porcelain is comprised of plumbing
Command Composition
Command Composition
git-add git-am git-archive git-bisect git-branch git-bundle git-
checkout git-cherry-pick git-citool git-clean git-clone git-commit
git-describe git-diff git-fetch git-format-patch git-gc git-grep git-
gui git-init git-log git-merge git-mv git-notes git-pull git-push git-
rebase git-reset git-revert git-rm git-shortlog git-show git-stash
git-status git-submodule git-tag gitk git-config git-fast-export git-
fast-import git-filter-branch git-lost-found git-mergetool git-pack-
refs git-prune git-reflog git-relink git-remote git-repack git-replace
git-repo-config git-annotate git-blame git-cherry git-count-objects
git-difftool git-fsck git-get-tar-commit-id git-help git-instaweb git-
merge-tree git-rerere git-rev-parse git-show-branch git-verify-tag
git-whatchanged git-archimport git-cvsexportcommit git-cvsimport git-
cvsserver git-imap-send git-quiltimport git-request-pull git-send-
email git-svn
Porcelain
git-apply git-checkout-index git-commit-tree git-hash-object git-index-pack git-merge-file
git-merge-index git-mktag git-mktree git-pack-objects git-prune-packed git-read-tree git-
symbolic-ref git-unpack-objects git-update-index git-update-ref git-write-tree git-cat-file
git-diff-files git-diff-index git-diff-tree git-for-each-ref git-ls-files git-ls-remote git-
ls-tree git-merge-base git-name-rev git-pack-redundant git-rev-list git-show-index git-show-
ref git-tar-tree git-unpack-file git-var git-verify-pack git-daemon git-fetch-pack git-http-
backend git-send-pack git-update-server-info git-http-fetch git-http-push git-parse-remote
git-receive-pack git-shell git-upload-archive git-upload-pack git-check-attr git-check-ref-
format git-fmt-merge-msg git-mailinfo git-mailsplit git-merge-one-file git-patch-id git-peek-
remote git-sh-setup git-stripspace
Plumbing
pull is comprised of fetch + merge
Command Composition
checkout -b is comprised of branch + checkout
Command Composition
log HEAD is comprised of rev-parse + log
Command Composition
Aliases
Command shortcuts
Aliases
‣Shortcuts for common commands
‣Create your own recipe
‣Largely the same as shell aliases
Aliases
# Alias for status as 's'
git config --global alias.s "status -u -s"
Aliases
‣ Add an alias
Aliases
# Alias for log with file name as 'l'
git config --global alias.l "log --stat -C"
Aliases
# Alias showing all branches to 'br'
git config --global alias.br "branch -a"
Aliases
# Alias for commit-no-staging to 'cns'
git config --global alias.cns "commit -a"
Aliases
# Alias for shell pull then push to 'sync'
$ git config --global alias.sync
"!git pull && git push"
Aliases
# Alias for crummy-commit-file-quick
$ git config --global alias.ccfq
"!sh -c 'git add $1 && git commit -m"Placeholder"' -"
Aliases
‣ Matthew's Aliases
‣ https://github.com/matthewmccullough/git-workshop/blob/master/
workbook/examples/config/.gitconfig
Architecture
Storage
Typical SCMs use delta storage
Storage
CVS / Subversion / darcs / Mercurial
Storage
Storage
v1 v2 v3 v4
File A
File B
File C
File A
File B File B
File C
v5
File A
File BFile B
Δ Δ
Δ
Δ ΔΔΔ
Checkin
Checkin Checkin
Checkin
Checkin
Checkin
Checkin
Checkin
Checkin
Checkin
Checkin
Delta storage gets slower as the history of a file gets
longer
Storage
Git uses DAG storage
Storage
Directed Acyclic Graph
Storage
Storage
Copy of the entire tree per checkin
Storage
cp -r srcfolder srcfolder.prev
Storage
Why?
Storage
Storage
v1 v2 v3 v4
File A
File B
File C
File A
File B File B
File C
v5
File A
File BFile B
File A File A
File C File C File C
hard link to existing identical blobs
Storage
Storage
v1 v2 v3 v4
File A
File B
File C
File A
File B File B
File C
v5
File A
File BFile B
File A File A
File C File C File Cß
zlib deflates each blob at commit
Storage
Storage
v1 v2 v3 v4
File A
File B
File C
File A
File B File B
File C
v5
File A
File BFile B
File A File A
File C File C File C
zlib deflates the entire repo
Storage
Storage
v1 v2 v3 v4
File A
File B
File C
File A
File B File B
File C
v5
File A
File BFile B
File A File A
File C File C File C
Storage
2100 MBbecame
205 MB
Act I
Architecture
Hashes
Hashes
centralized VCSs use sequential revision numbers
Hashes
Git uses a SHA-1 hash
Hashes
40 hex characters
(20 bytes)
Hashes
9AB223D28B1AA46EF1780B22F304982E39872C34
Hashes
Hashes
9AB223D28B1AA46EF1780B22F304982E39872C34
<html>
<body>
<p>This is a test</p>
<img src="http://ai.com/icon.gif">
</body>
</html>
9AB223D28B1AA46EF1780B22F304982E39872C34
use as little of it as is unique
Hashes
Architecture
Hash shortcuts
commitish & treeish
Hashes
commitish
Hashes
= shorthand for commit hashes
treeish
Hashes
= shorthand for tree hashes
9AB22F
a certain commit
Hashes
9AB22F^
one commit before a certain commit
Hashes
9AB22F^^
two commits before a certain commit
Hashes
9AB22F~5
five commits before a certain commit
Hashes
9AB223..56CD77
between these two commits
Hashes
HEAD
the most recent commit on this branch
Hashes
HEAD^
one commit before the most recent commit
Hashes
HEAD~2
two commits before the most recent commit
Hashes
HEAD..HEAD^^^
between the given recent commits
Hashes
master
the most recent commit on this branch
Hashes
master^^
two commits before the most recent commit on this branch
Hashes
master~5
five commits before the most recent commit on this branch
Hashes
remotes/origin/master
the most recent commit on this remote tracking branch
Hashes
origin/master
the most recent commit on this remote tracking branch
Hashes
Hashes
Navigate with commitish on
commit, status, & log
Architecture
Hash relationships
Hashes
‣Blob
‣Tree
‣Commit
‣Tag
Hashes
tree
tree: 7e8b1 web
blob: 9ab16 index.html
a10b3
tree
blob: 8d162 logo.jpg
blob: 51d22 draw.js
7e8b1commit
tree: a10b3
parent: nil
author: Fird
committer: Matthew
message:
Major refactoring
of the web content.
c67db
blob<html>
<body></body>
</html>
9ab16
blob
//Some more javascript
var renderSize
51d22
blob
7D 8D B3 7F BD 12 9F E9
7B 78 9D 3F 5C A6 72 CB
8d162
Hashes
v1 v2 v3
commit
tree: 9a87b
parent: nil
author: Fird
committer: Matthew
message:
Major refactoring
of the Javascript rendering
engine.
c67db
commit
tree: b22c1
parent: c67db
author: Tim
committer: Fird
message:
Minor update to HTML
9bd21
commit
tree: b22c1
parent: 9bd21
author: Johnny
committer: Joe
message:
New language transations
1c2d7
Hashes
RELEASE_1.0 HEAD
bug979branch
commit
c67db
commit
9bd21
commit
1c2d7
commit
8c2d1
commit
1bdcd
commit
2daa1
Branching
Creating branches
Branches
default branch name is master
Branches
master doesn’t have any special privileges
Branches
Local Remote Upstream
Branches
# Creating a branch
git branch <BRANCHNAME>
RELEASE_1.0 HEAD
bug979branch
commit
c67db
commit
9bd21
commit
1c2d7
commit
8c2d1
commit
1bdcd
commit
2daa1
Hashes
‣Create a new local branch from HEAD
Branches
# Creating a branch
git branch <BRANCHNAME> HEAD
Branches
# Creating a branch
git branch <BRANCHNAME> <REF>
RELEASE_1.0 HEAD
bug979branch
commit
c67db
commit
9bd21
commit
1c2d7
commit
8c2d1
commit
1bdcd
commit
2daa1
Hashes
‣Create a new local branch from a branch
Branching
Branch as experiments
Branches
What do cheap branches enable?
Branches
‣Experimentation
‣
Branches
‣Experimentation
‣Safe experimentation
Branches
Better reuse of units of work
Hashes
‣Create a branch for an experiment
‣Delete the failed experiment
Branching
Branch frequency
Branches
When should you branch?
Branches
The answer is always
Branches
Branches isolate volatile work
Branches
Branches cost a mere 20 bytes
Branches
We’ve always wanted to branch often
It’s just been too expensive, polluting, or ceremonious
Hashes
‣Show branches on the Git project
Branching
Branch lifetimes
Branches
‣Branched by lifetime
‣ Product
‣ Integration
‣ Feature
‣ Story
‣ Idea
Branches
product
integration
feature
story
idea
product
v1.0 integration
story1 story2
v1.5 integration
story3
Branches
Branches
Local Remote Upstream
Integ
Product
Integ
Product
Integ
Product
Branches
Local Remote Upstream
Idea
Story
Feature FeatureFeature
Integ
Product
Integ
Product
Integ
Product
Branches
Local Remote Upstream
Idea
Story
Feature FeatureFeature
Integ
Product
Integ
Product
Integ
Product
Branches
‣Branch from the master branch
‣Merge from the topic branch
‣Destroy the topic branch
Branching
Stashes
Stash
super quick branch
Stash
local-only branch
Stash
‣Numbered branch
‣Stack based implementation
‣Push, Peek, and Pop operations
(But has direct entry access too)
Stash
creating a stash
Stash
# Stash your pending changes
git stash
Stash
inspecting the stash
Stash
# List your stashes
git stash list
Stash
noting the stash
Stash
# Stash your pending changes
git stash save “<Message>”
Stash
# List your stashes
git stash list
Stash
using the stash
Stash
# Merge & delete the latest stash
git stash pop
Stash
# Merge & delete a stash
git stash pop stash@{0}
Stash
# Merge & keep the latest stash
git stash apply
Branches
‣Stash modified changes
‣Stash staged changes
‣Apply stashed changes
Stash
converting a stash
Stash
# Convert a stash to a branch
git stash branch <newbr>
Stash
# Convert a stash to a branch
git stash branch <newbr> stash@{3}
Branches
‣Convert a stash to a branch
Tagging
Tag uses
tags as a first class data type
taggingas a cheap operation
New ways to use tags?
Tagging
‣Tagging at each level of approval
‣Dev
‣CM
‣QA
‣Production
Tagging
Tag types
Tagging
reference,
annotated and
signed tag types
Tagging
Reference tag
Tagging
reference tag...
Tagging
# Tag HEAD
git tag <TAGNAME>
Tagging
# Tag an existing ref
git tag <TAGNAME> <REF>
Tagging
# List known tags
git tag
Tagging
# Show a tag’s contents
git show tag
Github - Git Training Slides: Foundations
Tagging
‣Tag a revision
‣Start a branch from a tag
Tagging
Annotated tag
Tagging
annotated tag...
Tagging
git tag -a <TAGNAME>
Github - Git Training Slides: Foundations
Tagging
git show <TAGNAME>
Tagging
‣Tag a revision with an annotated tag
Tagging
Signed tag
Tagging
signed tag...
Tagging
git tag -s <TAGNAME>
Github - Git Training Slides: Foundations
Tagging
git show <TAGNAME>
Tagging
‣Tag a revision with a signed tag
Tagging
Transmitting tags
Tagging
Tags don't push by default
Tagging
# Push all tags
git push <remote> <tag>
Tagging
# Push all tags
git push --tags
‣Push a specific tag
‣Push all tags
Tagging
Tags do fetch by default
‣Fetch all tags
Tagging
but the refspec doesn’t say to
‣Inspect .git/config refspec
Merging
The basics
Merging
very traditional merge of a branch
Merging
git checkout master
git merge <featurebranch>
a32
2e2
e69
d19
8b3
Branch
Master/Trunk/MainLatest
Merging
Recursive
Merge
9f1 Mergee698b3
strategy: recursive
result: no conflicts
a32
e69
d19
Branch
Master/Trunk/MainLatest
Merging
Fast Forward
Merge
Merge
a32
e69
d19
Master/Trunk/MainLatest
Merging
FF
Merge
strategy: recursive
result: fast forward
a32
2e2
e69
d19
8b3
Branch
Master/Trunk/MainLatest
Merging
Conflicting
Merge
Merge
9f1
e698b3
Fix Conflict
strategy: recursive
result: conflicting
Merging
Octopus
Merging
git checkout master
git merge <fb1> <fb2> <fb3>
strategy: octopus
Merging
Subtree
Merging
git checkout master
git merge -s subtree <fb1>
Merging
git checkout master
git merge --squash -s subtree <fb1>
strategy: subtree
Tagging
‣Merge a local branch
‣Merge a remote branch
Rebasing
What is rebasing?
rebasing is not a merge
Rebasing
rebasing is a preparation for a merge
Rebasing
Merges weave multiple old changes into
a new unifying commit
Rebasing
Rebase reorders the chosen commits
before your branch work
Rebasing
simulates team members taking turns working
(one person at a time)
Rebasing
Rebasing
Rebasing on a branch
Rebasing
git pull --rebase
Retrieve upstream changes and
relocate your local changes to the end
Rebasing
Rebasing
git pull --rebase
# is the same as
git checkout master
git rebase origin/master
Rebasing
git checkout <featurebranch>
git rebase master
a32
2e2
8b3
Master/Trunk/MainLatest
Rebasing
e69
d19
Branch
a32
2e2
8b3
e69
d19
Branch
Master/Trunk/MainLatest
Rebase
Rebasing
a32
2e2
e69'
d19'
8b3 Branch
Master/Trunk/MainLatest
Rebasing
Rebase
a32
2e2
e69'
d19'
8b3 Branch
Master/Trunk/MainLatest
Merge
Rebasing
Rebasing
‣Rebase topic branch on master
Rebasing
Interactive rebasing
Rework your work so it

 makes sense to the team
Rebasing
Rebasing
git checkout myfeaturebranch
# Replay the last 5 commits
git rebase -i HEAD~5
a32
2e2
8b3
Master/Trunk/MainLatest
Rebasing
e69
d19
a32
2e2
Master/Trunk/MainLatest
Rebasing
e69
d19
a32
2e2
Master/Trunk/MainLatest
Rebasing
e69
d19
a32
2e2
Master/Trunk/MainLatest
Rebasing
e69
d19
a32
2e2
Master/Trunk/MainLatest
Rebasing
e69
d19
a32
2e2
Master/Trunk/MainLatest
Rebasing
e69
d19
a32
Master/Trunk/MainLatest
Rebasing
e69
d19
2e2
Rebasing
‣Interactively rebase a single branch
Workflows
Usage Models
Usage Models
Central
Repo
Centralized
Usage Models
Blessed
Repo
Dictatorship
Usage Models
Certified
Repo
Development Repo
ntegrationManaged
Continuous
Integration
Server
Usage Models
Custom+PublicContrib
Customized
PrivatePublic
GitHub
Usage Models
Mirror
Development Repo
Mirrored
Mirror
Certified
Repo
Undo
Clean
Clean
clean purges untracked files
respects ignored and tracked
Clean
# Dry-run remove files
git clean -n
Clean
# Dry-run remove files, dirs
git clean -nd
Clean
# Remove files
git clean -f
Clean
# Remove files, dirs
git clean -fd
Undo
‣Clean untracked files
Clean
# Also remove ignored files
git clean -xf
Clean
# Also remove ignored files, dirs
git clean -xdf
Clean
# Only list ignored files
git clean -Xn
Clean
# Only remove ignored files
git clean -Xf
Undo
‣Clean ignored files
Undo
Revert
Revert
revert negates one or more commits
Revert
new commit at the end of HEAD
Revert
no pointer to old ref in revert commit
Revert
comment references the old one
8b3 '
Revert
a32
2e2
d19'
8b3
Revert
a32
2e2
d19'
8b3
Revert
8b3 '
Revert
# Revert a single commit
git revert <ref>
Revert
‣Revert a single change
Revert
# Revert a range of commits
git revert <ref1>..<ref2>
Revert
# Revert a range of commits
git revert <old>..<new>
Revert
must have the old..new refs
in the right order
Undo
Amend
Amend
amend rewrites the last commit
Amend
git commit --amend
Amend
‣Amend a bad commit message
Amend
git add <missingfile>
git commit --amend
Amend
‣Amend a missing file
Git-SVN
Cloning
git-svn
‣Subversion protocol bridge from Git
‣Round-trip integration
‣Transactions in Git == transactions in SVN
git-svn
# Clone one branch
git svn clone <svnurl>
git-svn
# Clone all branches, tags
git svn clone --stdlayout <svnurl>
git-svn
‣Alternate conversion tool
‣ svn2git
‣ https://github.com/nirvdrum/svn2git
‣ Converts tags to Git tags
Git-SVN
Updating
git-svn
‣Fetch new changes
‣git svn rebase
git-svn
‣Send new changes
‣git svn dcommit
Git-SVN
SVN Externals
git-svn
‣ SVN Externals
‣ No direct support
‣ Represented as separate repos
‣ Git points at a stable snapshot
‣ SVN Externals follow changes on a branch
git-svn
‣Externals cloning process
‣ svn propget svn:externals <MODULE>
‣ git svn clone --stdlayout <THEURL>
‣ git submodule add <THESUBFOLDER>
‣ git submodule init
‣ git submodule update
git-svn
‣ SVN Externals helper script
‣ https://github.com/andrep/git-svn-clone-externals
Git FoundationsAn exploration of the Git toolbox
Officialtrainingcurriculumv3.1.0©2012,GitHub,Inc.
@matthewmccull
matthew@github.com
github.com/training
Credits
‣Images sourced from:
‣ AmbientIdeasPhotography.com
‣ Hand Tools
‣ Flickr Creative Commons
‣ Clock: http://www.flickr.com/photos/7729940@N06/4019157830
‣ Wikipedia
‣ Linus Torvalds: http://en.wikipedia.org/wiki/File:Linus_Torvalds.jpeg

More Related Content

What's hot

Git - Basic Crash Course
Git - Basic Crash CourseGit - Basic Crash Course
Git - Basic Crash Course
Nilay Binjola
 
Git - An Introduction
Git - An IntroductionGit - An Introduction
Git - An Introduction
Behzad Altaf
 
Git & GitLab
Git & GitLabGit & GitLab
Git & GitLab
Gaurav Wable
 
Intro to git and git hub
Intro to git and git hubIntro to git and git hub
Intro to git and git hub
Venkat Malladi
 
Git real slides
Git real slidesGit real slides
Git real slides
Lucas Couto
 
Starting with Git & GitHub
Starting with Git & GitHubStarting with Git & GitHub
Starting with Git & GitHub
Nicolás Tourné
 
Introduction to Gitlab | Gitlab 101 | Training Session
Introduction to Gitlab | Gitlab 101 | Training SessionIntroduction to Gitlab | Gitlab 101 | Training Session
Introduction to Gitlab | Gitlab 101 | Training Session
Anwarul Islam
 
Git basics
Git basicsGit basics
Git basics
GHARSALLAH Mohamed
 
Git for beginners
Git for beginnersGit for beginners
Git for beginners
Arulmurugan Rajaraman
 
Introduction to git hub
Introduction to git hubIntroduction to git hub
Introduction to git hub
Naveen Pandey
 
Introduction to Git
Introduction to GitIntroduction to Git
Introduction to Git
Yan Vugenfirer
 
Git and git flow
Git and git flowGit and git flow
Git and git flow
Fran García
 
Github basics
Github basicsGithub basics
Github basics
Radoslav Georgiev
 
Learning git
Learning gitLearning git
Learning git
Sid Anand
 
Git One Day Training Notes
Git One Day Training NotesGit One Day Training Notes
Git One Day Training Notes
glen_a_smith
 
Git basic
Git basicGit basic
Git basic
Emran Ul Hadi
 
Git and git workflow best practice
Git and git workflow best practiceGit and git workflow best practice
Git and git workflow best practice
Majid Hosseini
 
Git and Github slides.pdf
Git and Github slides.pdfGit and Github slides.pdf
Git and Github slides.pdf
Tilton2
 
Git in 10 minutes
Git in 10 minutesGit in 10 minutes
Git in 10 minutes
Safique Ahmed Faruque
 
Intro to Git and GitHub
Intro to Git and GitHubIntro to Git and GitHub
Intro to Git and GitHub
Panagiotis Papadopoulos
 

What's hot (20)

Git - Basic Crash Course
Git - Basic Crash CourseGit - Basic Crash Course
Git - Basic Crash Course
 
Git - An Introduction
Git - An IntroductionGit - An Introduction
Git - An Introduction
 
Git & GitLab
Git & GitLabGit & GitLab
Git & GitLab
 
Intro to git and git hub
Intro to git and git hubIntro to git and git hub
Intro to git and git hub
 
Git real slides
Git real slidesGit real slides
Git real slides
 
Starting with Git & GitHub
Starting with Git & GitHubStarting with Git & GitHub
Starting with Git & GitHub
 
Introduction to Gitlab | Gitlab 101 | Training Session
Introduction to Gitlab | Gitlab 101 | Training SessionIntroduction to Gitlab | Gitlab 101 | Training Session
Introduction to Gitlab | Gitlab 101 | Training Session
 
Git basics
Git basicsGit basics
Git basics
 
Git for beginners
Git for beginnersGit for beginners
Git for beginners
 
Introduction to git hub
Introduction to git hubIntroduction to git hub
Introduction to git hub
 
Introduction to Git
Introduction to GitIntroduction to Git
Introduction to Git
 
Git and git flow
Git and git flowGit and git flow
Git and git flow
 
Github basics
Github basicsGithub basics
Github basics
 
Learning git
Learning gitLearning git
Learning git
 
Git One Day Training Notes
Git One Day Training NotesGit One Day Training Notes
Git One Day Training Notes
 
Git basic
Git basicGit basic
Git basic
 
Git and git workflow best practice
Git and git workflow best practiceGit and git workflow best practice
Git and git workflow best practice
 
Git and Github slides.pdf
Git and Github slides.pdfGit and Github slides.pdf
Git and Github slides.pdf
 
Git in 10 minutes
Git in 10 minutesGit in 10 minutes
Git in 10 minutes
 
Intro to Git and GitHub
Intro to Git and GitHubIntro to Git and GitHub
Intro to Git and GitHub
 

Similar to Github - Git Training Slides: Foundations

Introduction to Git and Github
Introduction to Git and GithubIntroduction to Git and Github
Introduction to Git and Github
Somkiat Puisungnoen
 
Getting started with git
Getting started with gitGetting started with git
Getting started with git
Pawan Kumar.v
 
Working in Team using Git in Unity
Working in Team using Git in UnityWorking in Team using Git in Unity
Working in Team using Git in Unity
Rifauddin Tsalitsy
 
Practical git for developers
Practical git for developersPractical git for developers
Practical git for developers
Wim Godden
 
Git Workshop : Getting Started
Git Workshop : Getting StartedGit Workshop : Getting Started
Git Workshop : Getting Started
Wildan Maulana
 
Collaboration With Git and GitHub
Collaboration With Git and GitHubCollaboration With Git and GitHub
Collaboration With Git and GitHub
Alec Clews
 
Git Distributed Version Control System
Git   Distributed Version Control SystemGit   Distributed Version Control System
Git Distributed Version Control System
Victor Wong
 
Presentation on Repository Control System
Presentation on Repository Control SystemPresentation on Repository Control System
Presentation on Repository Control System
Md. Mujahid Islam
 
Git hub
Git hubGit hub
Git hub
Nitin Goel
 
CraftCamp for Students - Introduction to git
CraftCamp for Students - Introduction to gitCraftCamp for Students - Introduction to git
CraftCamp for Students - Introduction to git
craftworkz
 
Git_tutorial.pdf
Git_tutorial.pdfGit_tutorial.pdf
Git_tutorial.pdf
AliaaTarek5
 
Git Commands Every Developer Should Know?
Git Commands Every Developer Should Know?Git Commands Every Developer Should Know?
Git Commands Every Developer Should Know?
9 series
 
GTFO: Git Theory For OpenSource
GTFO: Git Theory For OpenSourceGTFO: Git Theory For OpenSource
GTFO: Git Theory For OpenSource
Forest Mars
 
Git
GitGit
Grokking opensource with github
Grokking opensource with githubGrokking opensource with github
Grokking opensource with github
GoogleDeveloperStude4
 
簡單介紹git
簡單介紹git簡單介紹git
簡單介紹git
Grace Chien
 
Subversion to Git Migration
Subversion to Git MigrationSubversion to Git Migration
Subversion to Git Migration
Manish Chakravarty
 
Life of a Chromium Developer
Life of a Chromium DeveloperLife of a Chromium Developer
Life of a Chromium Developer
mpaproductions
 
That's (g)it! par Sébastien Dawans CETIC
That's (g)it! par Sébastien Dawans CETICThat's (g)it! par Sébastien Dawans CETIC
That's (g)it! par Sébastien Dawans CETIC
La FeWeb
 
Git training (basic)
Git training (basic)Git training (basic)
Git training (basic)
Arashdeepkaur16
 

Similar to Github - Git Training Slides: Foundations (20)

Introduction to Git and Github
Introduction to Git and GithubIntroduction to Git and Github
Introduction to Git and Github
 
Getting started with git
Getting started with gitGetting started with git
Getting started with git
 
Working in Team using Git in Unity
Working in Team using Git in UnityWorking in Team using Git in Unity
Working in Team using Git in Unity
 
Practical git for developers
Practical git for developersPractical git for developers
Practical git for developers
 
Git Workshop : Getting Started
Git Workshop : Getting StartedGit Workshop : Getting Started
Git Workshop : Getting Started
 
Collaboration With Git and GitHub
Collaboration With Git and GitHubCollaboration With Git and GitHub
Collaboration With Git and GitHub
 
Git Distributed Version Control System
Git   Distributed Version Control SystemGit   Distributed Version Control System
Git Distributed Version Control System
 
Presentation on Repository Control System
Presentation on Repository Control SystemPresentation on Repository Control System
Presentation on Repository Control System
 
Git hub
Git hubGit hub
Git hub
 
CraftCamp for Students - Introduction to git
CraftCamp for Students - Introduction to gitCraftCamp for Students - Introduction to git
CraftCamp for Students - Introduction to git
 
Git_tutorial.pdf
Git_tutorial.pdfGit_tutorial.pdf
Git_tutorial.pdf
 
Git Commands Every Developer Should Know?
Git Commands Every Developer Should Know?Git Commands Every Developer Should Know?
Git Commands Every Developer Should Know?
 
GTFO: Git Theory For OpenSource
GTFO: Git Theory For OpenSourceGTFO: Git Theory For OpenSource
GTFO: Git Theory For OpenSource
 
Git
GitGit
Git
 
Grokking opensource with github
Grokking opensource with githubGrokking opensource with github
Grokking opensource with github
 
簡單介紹git
簡單介紹git簡單介紹git
簡單介紹git
 
Subversion to Git Migration
Subversion to Git MigrationSubversion to Git Migration
Subversion to Git Migration
 
Life of a Chromium Developer
Life of a Chromium DeveloperLife of a Chromium Developer
Life of a Chromium Developer
 
That's (g)it! par Sébastien Dawans CETIC
That's (g)it! par Sébastien Dawans CETICThat's (g)it! par Sébastien Dawans CETIC
That's (g)it! par Sébastien Dawans CETIC
 
Git training (basic)
Git training (basic)Git training (basic)
Git training (basic)
 

More from Lee Hanxue

Coding for multiple cores
Coding for multiple coresCoding for multiple cores
Coding for multiple cores
Lee Hanxue
 
Lockless Programming GDC 09
Lockless Programming GDC 09Lockless Programming GDC 09
Lockless Programming GDC 09
Lee Hanxue
 
How To Create Metro-style Presentation
How To Create Metro-style PresentationHow To Create Metro-style Presentation
How To Create Metro-style Presentation
Lee Hanxue
 
Google Apps for Elegant Solutions
Google Apps for Elegant SolutionsGoogle Apps for Elegant Solutions
Google Apps for Elegant Solutions
Lee Hanxue
 
Opus codec
Opus codecOpus codec
Opus codec
Lee Hanxue
 
S1 pali scriptures 5.1.4
S1 pali scriptures 5.1.4S1 pali scriptures 5.1.4
S1 pali scriptures 5.1.4
Lee Hanxue
 
Satipatthana workshop July 26-29, 2012
Satipatthana workshop July 26-29, 2012Satipatthana workshop July 26-29, 2012
Satipatthana workshop July 26-29, 2012
Lee Hanxue
 
Satipatthana Sutta Workshop - S7.1 Summary & Conclusion Day 2
Satipatthana Sutta Workshop - S7.1 Summary & Conclusion Day 2Satipatthana Sutta Workshop - S7.1 Summary & Conclusion Day 2
Satipatthana Sutta Workshop - S7.1 Summary & Conclusion Day 2
Lee Hanxue
 
Satipatthana Sutta Workshop - S16 Summary & Conclusion Day 4
Satipatthana Sutta Workshop - S16 Summary & Conclusion Day 4Satipatthana Sutta Workshop - S16 Summary & Conclusion Day 4
Satipatthana Sutta Workshop - S16 Summary & Conclusion Day 4
Lee Hanxue
 
Satipatthana Sutta Workshop - S15.1 Summary & Conclusion Day 3
Satipatthana Sutta Workshop - S15.1 Summary & Conclusion Day 3Satipatthana Sutta Workshop - S15.1 Summary & Conclusion Day 3
Satipatthana Sutta Workshop - S15.1 Summary & Conclusion Day 3
Lee Hanxue
 
Satipatthana Sutta Workshop - S15 Comparison of Satipatthana Contents
Satipatthana Sutta Workshop - S15 Comparison of Satipatthana ContentsSatipatthana Sutta Workshop - S15 Comparison of Satipatthana Contents
Satipatthana Sutta Workshop - S15 Comparison of Satipatthana Contents
Lee Hanxue
 
Satipatthana Sutta Workshop - S14 Pali Terms for 3 times & Sati
Satipatthana Sutta Workshop - S14 Pali Terms for 3 times & SatiSatipatthana Sutta Workshop - S14 Pali Terms for 3 times & Sati
Satipatthana Sutta Workshop - S14 Pali Terms for 3 times & Sati
Lee Hanxue
 
Satipatthana Sutta Workshop - S13 Noble Truths
Satipatthana Sutta Workshop - S13 Noble TruthsSatipatthana Sutta Workshop - S13 Noble Truths
Satipatthana Sutta Workshop - S13 Noble Truths
Lee Hanxue
 
Satipatthana Sutta Workshop - S12.1 Samatha & Vipassana
Satipatthana Sutta Workshop - S12.1 Samatha & VipassanaSatipatthana Sutta Workshop - S12.1 Samatha & Vipassana
Satipatthana Sutta Workshop - S12.1 Samatha & Vipassana
Lee Hanxue
 
Satipatthana Sutta Workshop - S11 samadhi in kayanupassana & kayagatasati1.3.3
Satipatthana Sutta Workshop - S11 samadhi in kayanupassana & kayagatasati1.3.3Satipatthana Sutta Workshop - S11 samadhi in kayanupassana & kayagatasati1.3.3
Satipatthana Sutta Workshop - S11 samadhi in kayanupassana & kayagatasati1.3.3
Lee Hanxue
 
Satipatthana Sutta Workshop - S10.1 Summary & Conclusion Day 3
Satipatthana Sutta Workshop - S10.1 Summary & Conclusion Day 3Satipatthana Sutta Workshop - S10.1 Summary & Conclusion Day 3
Satipatthana Sutta Workshop - S10.1 Summary & Conclusion Day 3
Lee Hanxue
 
Satipatthana Sutta Workshop - S8 Hindrances
Satipatthana Sutta Workshop - S8 HindrancesSatipatthana Sutta Workshop - S8 Hindrances
Satipatthana Sutta Workshop - S8 Hindrances
Lee Hanxue
 
Satipatthana Sutta Workshop - S6.1 Body Parts and the Four Elements
Satipatthana Sutta Workshop - S6.1 Body Parts and the Four ElementsSatipatthana Sutta Workshop - S6.1 Body Parts and the Four Elements
Satipatthana Sutta Workshop - S6.1 Body Parts and the Four Elements
Lee Hanxue
 
Satipatthana Sutta Workshop - S4.2 Summary & Conclusion Day 1
Satipatthana Sutta Workshop - S4.2 Summary & Conclusion Day 1Satipatthana Sutta Workshop - S4.2 Summary & Conclusion Day 1
Satipatthana Sutta Workshop - S4.2 Summary & Conclusion Day 1
Lee Hanxue
 
Satipatthana Sutta Workshop - S4.1 Calming Bodily Formation
Satipatthana Sutta Workshop - S4.1 Calming Bodily FormationSatipatthana Sutta Workshop - S4.1 Calming Bodily Formation
Satipatthana Sutta Workshop - S4.1 Calming Bodily Formation
Lee Hanxue
 

More from Lee Hanxue (20)

Coding for multiple cores
Coding for multiple coresCoding for multiple cores
Coding for multiple cores
 
Lockless Programming GDC 09
Lockless Programming GDC 09Lockless Programming GDC 09
Lockless Programming GDC 09
 
How To Create Metro-style Presentation
How To Create Metro-style PresentationHow To Create Metro-style Presentation
How To Create Metro-style Presentation
 
Google Apps for Elegant Solutions
Google Apps for Elegant SolutionsGoogle Apps for Elegant Solutions
Google Apps for Elegant Solutions
 
Opus codec
Opus codecOpus codec
Opus codec
 
S1 pali scriptures 5.1.4
S1 pali scriptures 5.1.4S1 pali scriptures 5.1.4
S1 pali scriptures 5.1.4
 
Satipatthana workshop July 26-29, 2012
Satipatthana workshop July 26-29, 2012Satipatthana workshop July 26-29, 2012
Satipatthana workshop July 26-29, 2012
 
Satipatthana Sutta Workshop - S7.1 Summary & Conclusion Day 2
Satipatthana Sutta Workshop - S7.1 Summary & Conclusion Day 2Satipatthana Sutta Workshop - S7.1 Summary & Conclusion Day 2
Satipatthana Sutta Workshop - S7.1 Summary & Conclusion Day 2
 
Satipatthana Sutta Workshop - S16 Summary & Conclusion Day 4
Satipatthana Sutta Workshop - S16 Summary & Conclusion Day 4Satipatthana Sutta Workshop - S16 Summary & Conclusion Day 4
Satipatthana Sutta Workshop - S16 Summary & Conclusion Day 4
 
Satipatthana Sutta Workshop - S15.1 Summary & Conclusion Day 3
Satipatthana Sutta Workshop - S15.1 Summary & Conclusion Day 3Satipatthana Sutta Workshop - S15.1 Summary & Conclusion Day 3
Satipatthana Sutta Workshop - S15.1 Summary & Conclusion Day 3
 
Satipatthana Sutta Workshop - S15 Comparison of Satipatthana Contents
Satipatthana Sutta Workshop - S15 Comparison of Satipatthana ContentsSatipatthana Sutta Workshop - S15 Comparison of Satipatthana Contents
Satipatthana Sutta Workshop - S15 Comparison of Satipatthana Contents
 
Satipatthana Sutta Workshop - S14 Pali Terms for 3 times & Sati
Satipatthana Sutta Workshop - S14 Pali Terms for 3 times & SatiSatipatthana Sutta Workshop - S14 Pali Terms for 3 times & Sati
Satipatthana Sutta Workshop - S14 Pali Terms for 3 times & Sati
 
Satipatthana Sutta Workshop - S13 Noble Truths
Satipatthana Sutta Workshop - S13 Noble TruthsSatipatthana Sutta Workshop - S13 Noble Truths
Satipatthana Sutta Workshop - S13 Noble Truths
 
Satipatthana Sutta Workshop - S12.1 Samatha & Vipassana
Satipatthana Sutta Workshop - S12.1 Samatha & VipassanaSatipatthana Sutta Workshop - S12.1 Samatha & Vipassana
Satipatthana Sutta Workshop - S12.1 Samatha & Vipassana
 
Satipatthana Sutta Workshop - S11 samadhi in kayanupassana & kayagatasati1.3.3
Satipatthana Sutta Workshop - S11 samadhi in kayanupassana & kayagatasati1.3.3Satipatthana Sutta Workshop - S11 samadhi in kayanupassana & kayagatasati1.3.3
Satipatthana Sutta Workshop - S11 samadhi in kayanupassana & kayagatasati1.3.3
 
Satipatthana Sutta Workshop - S10.1 Summary & Conclusion Day 3
Satipatthana Sutta Workshop - S10.1 Summary & Conclusion Day 3Satipatthana Sutta Workshop - S10.1 Summary & Conclusion Day 3
Satipatthana Sutta Workshop - S10.1 Summary & Conclusion Day 3
 
Satipatthana Sutta Workshop - S8 Hindrances
Satipatthana Sutta Workshop - S8 HindrancesSatipatthana Sutta Workshop - S8 Hindrances
Satipatthana Sutta Workshop - S8 Hindrances
 
Satipatthana Sutta Workshop - S6.1 Body Parts and the Four Elements
Satipatthana Sutta Workshop - S6.1 Body Parts and the Four ElementsSatipatthana Sutta Workshop - S6.1 Body Parts and the Four Elements
Satipatthana Sutta Workshop - S6.1 Body Parts and the Four Elements
 
Satipatthana Sutta Workshop - S4.2 Summary & Conclusion Day 1
Satipatthana Sutta Workshop - S4.2 Summary & Conclusion Day 1Satipatthana Sutta Workshop - S4.2 Summary & Conclusion Day 1
Satipatthana Sutta Workshop - S4.2 Summary & Conclusion Day 1
 
Satipatthana Sutta Workshop - S4.1 Calming Bodily Formation
Satipatthana Sutta Workshop - S4.1 Calming Bodily FormationSatipatthana Sutta Workshop - S4.1 Calming Bodily Formation
Satipatthana Sutta Workshop - S4.1 Calming Bodily Formation
 

Recently uploaded

Three New Criminal Laws in India 1 July 2024
Three New Criminal Laws in India 1 July 2024Three New Criminal Laws in India 1 July 2024
Three New Criminal Laws in India 1 July 2024
aakash malhotra
 
TrustArc Webinar - 2024 Data Privacy Trends: A Mid-Year Check-In
TrustArc Webinar - 2024 Data Privacy Trends: A Mid-Year Check-InTrustArc Webinar - 2024 Data Privacy Trends: A Mid-Year Check-In
TrustArc Webinar - 2024 Data Privacy Trends: A Mid-Year Check-In
TrustArc
 
BLOCKCHAIN TECHNOLOGY - Advantages and Disadvantages
BLOCKCHAIN TECHNOLOGY - Advantages and DisadvantagesBLOCKCHAIN TECHNOLOGY - Advantages and Disadvantages
BLOCKCHAIN TECHNOLOGY - Advantages and Disadvantages
SAI KAILASH R
 
IPLOOK Remote-Sensing Satellite Solution
IPLOOK Remote-Sensing Satellite SolutionIPLOOK Remote-Sensing Satellite Solution
IPLOOK Remote-Sensing Satellite Solution
IPLOOK Networks
 
(CISOPlatform Summit & SACON 2024) Keynote _ Power Digital Identities With AI...
(CISOPlatform Summit & SACON 2024) Keynote _ Power Digital Identities With AI...(CISOPlatform Summit & SACON 2024) Keynote _ Power Digital Identities With AI...
(CISOPlatform Summit & SACON 2024) Keynote _ Power Digital Identities With AI...
Priyanka Aash
 
leewayhertz.com-AI agents for healthcare Applications benefits and implementa...
leewayhertz.com-AI agents for healthcare Applications benefits and implementa...leewayhertz.com-AI agents for healthcare Applications benefits and implementa...
leewayhertz.com-AI agents for healthcare Applications benefits and implementa...
alexjohnson7307
 
Feature sql server terbaru performance.pptx
Feature sql server terbaru performance.pptxFeature sql server terbaru performance.pptx
Feature sql server terbaru performance.pptx
ssuser1915fe1
 
EuroPython 2024 - Streamlining Testing in a Large Python Codebase
EuroPython 2024 - Streamlining Testing in a Large Python CodebaseEuroPython 2024 - Streamlining Testing in a Large Python Codebase
EuroPython 2024 - Streamlining Testing in a Large Python Codebase
Jimmy Lai
 
Integrating Kafka with MuleSoft 4 and usecase
Integrating Kafka with MuleSoft 4 and usecaseIntegrating Kafka with MuleSoft 4 and usecase
Integrating Kafka with MuleSoft 4 and usecase
shyamraj55
 
Evolution of iPaaS - simplify IT workloads to provide a unified view of data...
Evolution of iPaaS - simplify IT workloads to provide a unified view of  data...Evolution of iPaaS - simplify IT workloads to provide a unified view of  data...
Evolution of iPaaS - simplify IT workloads to provide a unified view of data...
Torry Harris
 
BT & Neo4j: Knowledge Graphs for Critical Enterprise Systems.pptx.pdf
BT & Neo4j: Knowledge Graphs for Critical Enterprise Systems.pptx.pdfBT & Neo4j: Knowledge Graphs for Critical Enterprise Systems.pptx.pdf
BT & Neo4j: Knowledge Graphs for Critical Enterprise Systems.pptx.pdf
Neo4j
 
How Social Media Hackers Help You to See Your Wife's Message.pdf
How Social Media Hackers Help You to See Your Wife's Message.pdfHow Social Media Hackers Help You to See Your Wife's Message.pdf
How Social Media Hackers Help You to See Your Wife's Message.pdf
HackersList
 
Salesforce AI & Einstein Copilot Workshop
Salesforce AI & Einstein Copilot WorkshopSalesforce AI & Einstein Copilot Workshop
Salesforce AI & Einstein Copilot Workshop
CEPTES Software Inc
 
Litestack talk at Brighton 2024 (Unleashing the power of SQLite for Ruby apps)
Litestack talk at Brighton 2024 (Unleashing the power of SQLite for Ruby apps)Litestack talk at Brighton 2024 (Unleashing the power of SQLite for Ruby apps)
Litestack talk at Brighton 2024 (Unleashing the power of SQLite for Ruby apps)
Muhammad Ali
 
Girls call Kolkata 👀 XXXXXXXXXXX 👀 Rs.9.5 K Cash Payment With Room Delivery
Girls call Kolkata 👀 XXXXXXXXXXX 👀 Rs.9.5 K Cash Payment With Room Delivery Girls call Kolkata 👀 XXXXXXXXXXX 👀 Rs.9.5 K Cash Payment With Room Delivery
Girls call Kolkata 👀 XXXXXXXXXXX 👀 Rs.9.5 K Cash Payment With Room Delivery
sunilverma7884
 
Figma AI Design Generator_ In-Depth Review.pdf
Figma AI Design Generator_ In-Depth Review.pdfFigma AI Design Generator_ In-Depth Review.pdf
Figma AI Design Generator_ In-Depth Review.pdf
Management Institute of Skills Development
 
July Patch Tuesday
July Patch TuesdayJuly Patch Tuesday
July Patch Tuesday
Ivanti
 
"Mastering Graphic Design: Essential Tips and Tricks for Beginners and Profes...
"Mastering Graphic Design: Essential Tips and Tricks for Beginners and Profes..."Mastering Graphic Design: Essential Tips and Tricks for Beginners and Profes...
"Mastering Graphic Design: Essential Tips and Tricks for Beginners and Profes...
Anant Gupta
 
Girls Call Churchgate 9910780858 Provide Best And Top Girl Service And No1 in...
Girls Call Churchgate 9910780858 Provide Best And Top Girl Service And No1 in...Girls Call Churchgate 9910780858 Provide Best And Top Girl Service And No1 in...
Girls Call Churchgate 9910780858 Provide Best And Top Girl Service And No1 in...
maigasapphire
 
[Talk] Moving Beyond Spaghetti Infrastructure [AOTB] 2024-07-04.pdf
[Talk] Moving Beyond Spaghetti Infrastructure [AOTB] 2024-07-04.pdf[Talk] Moving Beyond Spaghetti Infrastructure [AOTB] 2024-07-04.pdf
[Talk] Moving Beyond Spaghetti Infrastructure [AOTB] 2024-07-04.pdf
Kief Morris
 

Recently uploaded (20)

Three New Criminal Laws in India 1 July 2024
Three New Criminal Laws in India 1 July 2024Three New Criminal Laws in India 1 July 2024
Three New Criminal Laws in India 1 July 2024
 
TrustArc Webinar - 2024 Data Privacy Trends: A Mid-Year Check-In
TrustArc Webinar - 2024 Data Privacy Trends: A Mid-Year Check-InTrustArc Webinar - 2024 Data Privacy Trends: A Mid-Year Check-In
TrustArc Webinar - 2024 Data Privacy Trends: A Mid-Year Check-In
 
BLOCKCHAIN TECHNOLOGY - Advantages and Disadvantages
BLOCKCHAIN TECHNOLOGY - Advantages and DisadvantagesBLOCKCHAIN TECHNOLOGY - Advantages and Disadvantages
BLOCKCHAIN TECHNOLOGY - Advantages and Disadvantages
 
IPLOOK Remote-Sensing Satellite Solution
IPLOOK Remote-Sensing Satellite SolutionIPLOOK Remote-Sensing Satellite Solution
IPLOOK Remote-Sensing Satellite Solution
 
(CISOPlatform Summit & SACON 2024) Keynote _ Power Digital Identities With AI...
(CISOPlatform Summit & SACON 2024) Keynote _ Power Digital Identities With AI...(CISOPlatform Summit & SACON 2024) Keynote _ Power Digital Identities With AI...
(CISOPlatform Summit & SACON 2024) Keynote _ Power Digital Identities With AI...
 
leewayhertz.com-AI agents for healthcare Applications benefits and implementa...
leewayhertz.com-AI agents for healthcare Applications benefits and implementa...leewayhertz.com-AI agents for healthcare Applications benefits and implementa...
leewayhertz.com-AI agents for healthcare Applications benefits and implementa...
 
Feature sql server terbaru performance.pptx
Feature sql server terbaru performance.pptxFeature sql server terbaru performance.pptx
Feature sql server terbaru performance.pptx
 
EuroPython 2024 - Streamlining Testing in a Large Python Codebase
EuroPython 2024 - Streamlining Testing in a Large Python CodebaseEuroPython 2024 - Streamlining Testing in a Large Python Codebase
EuroPython 2024 - Streamlining Testing in a Large Python Codebase
 
Integrating Kafka with MuleSoft 4 and usecase
Integrating Kafka with MuleSoft 4 and usecaseIntegrating Kafka with MuleSoft 4 and usecase
Integrating Kafka with MuleSoft 4 and usecase
 
Evolution of iPaaS - simplify IT workloads to provide a unified view of data...
Evolution of iPaaS - simplify IT workloads to provide a unified view of  data...Evolution of iPaaS - simplify IT workloads to provide a unified view of  data...
Evolution of iPaaS - simplify IT workloads to provide a unified view of data...
 
BT & Neo4j: Knowledge Graphs for Critical Enterprise Systems.pptx.pdf
BT & Neo4j: Knowledge Graphs for Critical Enterprise Systems.pptx.pdfBT & Neo4j: Knowledge Graphs for Critical Enterprise Systems.pptx.pdf
BT & Neo4j: Knowledge Graphs for Critical Enterprise Systems.pptx.pdf
 
How Social Media Hackers Help You to See Your Wife's Message.pdf
How Social Media Hackers Help You to See Your Wife's Message.pdfHow Social Media Hackers Help You to See Your Wife's Message.pdf
How Social Media Hackers Help You to See Your Wife's Message.pdf
 
Salesforce AI & Einstein Copilot Workshop
Salesforce AI & Einstein Copilot WorkshopSalesforce AI & Einstein Copilot Workshop
Salesforce AI & Einstein Copilot Workshop
 
Litestack talk at Brighton 2024 (Unleashing the power of SQLite for Ruby apps)
Litestack talk at Brighton 2024 (Unleashing the power of SQLite for Ruby apps)Litestack talk at Brighton 2024 (Unleashing the power of SQLite for Ruby apps)
Litestack talk at Brighton 2024 (Unleashing the power of SQLite for Ruby apps)
 
Girls call Kolkata 👀 XXXXXXXXXXX 👀 Rs.9.5 K Cash Payment With Room Delivery
Girls call Kolkata 👀 XXXXXXXXXXX 👀 Rs.9.5 K Cash Payment With Room Delivery Girls call Kolkata 👀 XXXXXXXXXXX 👀 Rs.9.5 K Cash Payment With Room Delivery
Girls call Kolkata 👀 XXXXXXXXXXX 👀 Rs.9.5 K Cash Payment With Room Delivery
 
Figma AI Design Generator_ In-Depth Review.pdf
Figma AI Design Generator_ In-Depth Review.pdfFigma AI Design Generator_ In-Depth Review.pdf
Figma AI Design Generator_ In-Depth Review.pdf
 
July Patch Tuesday
July Patch TuesdayJuly Patch Tuesday
July Patch Tuesday
 
"Mastering Graphic Design: Essential Tips and Tricks for Beginners and Profes...
"Mastering Graphic Design: Essential Tips and Tricks for Beginners and Profes..."Mastering Graphic Design: Essential Tips and Tricks for Beginners and Profes...
"Mastering Graphic Design: Essential Tips and Tricks for Beginners and Profes...
 
Girls Call Churchgate 9910780858 Provide Best And Top Girl Service And No1 in...
Girls Call Churchgate 9910780858 Provide Best And Top Girl Service And No1 in...Girls Call Churchgate 9910780858 Provide Best And Top Girl Service And No1 in...
Girls Call Churchgate 9910780858 Provide Best And Top Girl Service And No1 in...
 
[Talk] Moving Beyond Spaghetti Infrastructure [AOTB] 2024-07-04.pdf
[Talk] Moving Beyond Spaghetti Infrastructure [AOTB] 2024-07-04.pdf[Talk] Moving Beyond Spaghetti Infrastructure [AOTB] 2024-07-04.pdf
[Talk] Moving Beyond Spaghetti Infrastructure [AOTB] 2024-07-04.pdf
 

Github - Git Training Slides: Foundations