Intro
Git is divided into two different parts.
Porcelain: High-level commands that are user-friendly.- Some of the high-level commands are:
git addgit commitgit pushgit pullgit fetchgit mergegit status
Plumbing: Low-level commands that are used to build the high-level commands.- Some of the low-level commands are:
git hash-objectgit cat-filegit commit-treegit update-refgit checkout-indexgit read-treegit write-tree
99% of the time, you will be using the high-level commands.
Git Configuration
The git configuration will contian your information.
There are 2 config levels:
- Global
- Repo(Project)
Most of the time you will jujst use global config
Check Config
Check if user.name and user.email are set.
git config --get user.name
git config --get user.email
Set Config
If not set, Add your gitlab email and username
git config --add --global user.name "gitlab_username"
git config --add --global user.email "email@domain.com"
command breakdown:
git config: The command to interact with the git configuration.--get: The flag to get the value of the config.--add: The flag to add a new config.--global: The flag to set the global config.user: The user sectionname: The name of the user within the sectionemail: The email of the user within the section
Lets also set a default branch of master
git config --global init.defaultBranch master
Config File
You can also edit the config file directly and check your settings with the .gitconfig file.
It is located in the home folder.
cat ~/.gitconfig
[user]
name = gitlab_username
email = email@domain.com
[init]
defaultBranch = master
Key/Value Store
Only a few fields are used by the git system but it can be used as a key value store.
using local can add these values to the local projects config
git config --add --local project.name "demo"
git config --add --local project.maintainer "brock"
git config --get project.name
demo
remove a key
git config --unset project.name
List all the config values
git config --list --local
core.repositoryformatversion=0
core.filemode=false
core.bare=false
core.logallrefupdates=true
core.symlinks=false
core.ignorecase=true
project.name=demo
project.maintainer=brock