git help --all
usage: git [--version] [--help] [-C ] [-c name=value]
[--exec-path[=]] [--html-path] [--man-path] [--info-path]
[-p|--paginate|--no-pager] [--no-replace-objects] [--bare]
[--git-dir=] [--work-tree=] [--namespace=]
[]
available git commands in '/Applications/Xcode.app/Contents/Developer/usr/libexec/git-core'
add clone fast-import interpret-trailers notes remote-testsvn submodule
add--interactive column fetch log p4 repack subtree
am commit fetch-pack ls-files pack-objects replace svn
annotate commit-tree filter-branch ls-remote pack-redundant request-pull symbolic-ref
apply config fmt-merge-msg ls-tree pack-refs rerere tag
archimport count-objects for-each-ref mailinfo patch-id reset unpack-file
archive credential format-patch mailsplit prune rev-list unpack-objects
bisect credential-cache fsck merge prune-packed rev-parse update-index
bisect--helper credential-cache--daemon fsck-objects merge-base pull revert update-ref
blame credential-osxkeychain gc merge-file push rm update-server-info
branch credential-store get-tar-commit-id merge-index quiltimport send-email upload-archive
bundle cvsexportcommit grep merge-octopus read-tree send-pack upload-pack
cat-file cvsimport gui--askpass merge-one-file rebase sh-i18n--envsubst var
check-attr cvsserver hash-object merge-ours receive-pack shell verify-commit
check-ignore daemon help merge-recursive reflog shortlog verify-pack
check-mailmap describe http-backend merge-resolve relink show verify-tag
check-ref-format diff http-fetch merge-subtree remote show-branch web--browse
checkout diff-files http-push merge-tree remote-ext show-index whatchanged
checkout-index diff-index imap-send mergetool remote-fd show-ref write-tree
cherry diff-tree index-pack mktag remote-ftp stage
cherry-pick difftool init mktree remote-ftps stash
citool difftool--helper init-db mv remote-http status
clean fast-export instaweb name-rev remote-https stripspace
git commands available from elsewhere on your $PATH
loglive
'git help -a' and 'git help -g' list available subcommands and some
concept guides. See 'git help ' or 'git help '
to read about a specific subcommand or concept.
So we know that git history is a graph, right? And
This graph that we created has to be stored somewhere, right?
This graph is stored in a .git folder
Every folder on your computer that has a .git folder is git repository.
There is only one such .git folder in a git repo.
all git commit does, is add content to that .git folder.
and git commit is only just one function that git provides
what if you wanted to do more, like manipulate an existing snapshot, delete a set of changes, reorder your history.
git offers you other tools to do that.
git is essentially a toolkit that contains a bunch of functions that help organize snapshots of content.
This is a list of all the functions available to you.
Note - git is not github. what is github? github stores git repository in the internet and that's basically all it does
So, as I was saying this is the list of functions
git help --all
usage: git [--version] [--help] [-C ] [-c name=value]
[--exec-path[=]] [--html-path] [--man-path] [--info-path]
[-p|--paginate|--no-pager] [--no-replace-objects] [--bare]
[--git-dir=] [--work-tree=] [--namespace=]
[]
available git commands in '/Applications/Xcode.app/Contents/Developer/usr/libexec/git-core'
add clone submodule
add--interactive fetch log
am commit
annotate
apply tag
reset
archive format-patch
bisect merge
bisect--helper pull revert
blame gc push rm
branch
grep
gui--askpass rebase
daemon help reflog
diff remote
checkout
cherry-pick init stash
mv status
clean instaweb
git commands available from elsewhere on your $PATH
loglive
'git help -a' and 'git help -g' list available subcommands and some
concept guides. See 'git help ' or 'git help '
to read about a specific subcommand or concept.
But you don't have to use every one of the functions available. I've only every had to use a handful.
because Git was initially a toolkit for a VCS rather than a full user-friendly VCS, it has a bunch of verbs that do low-level work and were designed to be chained together UNIX style or called from scripts. These commands are generally referred to as “plumbing” commands, and the more user-friendly commands are called “porcelain” commands.
https://git-scm.com/book/en/v2/Git-Internals-Plumbing-and-Porcelain
Subversion-Style Workflow Link
git allows you to use it the way you want. You can use it exactly like how you would svn.Integration Manager Workflow Link
git also allows you to pick and compile specific changes from anyone else that has made their repository publicDictator and Lieutenants Workflow Link
Workflow followed by Linux devs, where Linus has a repository on his local machine that no one else has access to.- Linus Torvalds likes to name projects after himself
The Parable by Tom Preston-Werner (Founder of GitHub) Link
This article goes through the steps one may attempt to create a version control system. In this hypothetical scenario one may start off by creating multiple folders as a backup. The final VCS that is arrived at is very similar to git. The author is the founder of GitHubgit blame README Link