2022-04-29 18:03:21 +00:00
|
|
|
+++
|
|
|
|
title = "Git Notes"
|
|
|
|
description = "Basic documentation of Git"
|
|
|
|
date = 2022-04-27T18:00:00+00:00
|
|
|
|
updated = 2022-04-27T18:00:00+00:00
|
2022-06-09 03:50:30 +00:00
|
|
|
template = "section.html"
|
2022-04-29 18:03:21 +00:00
|
|
|
sort_by = "weight"
|
|
|
|
weight = 6
|
|
|
|
draft = false
|
|
|
|
[taxonomies]
|
|
|
|
documentation=["Reference"]
|
|
|
|
categories=["Git", "Version Control", "VCS"]
|
|
|
|
+++
|
|
|
|
|
|
|
|
[Git](https://git-scm.com/) is the most widely used version control system (or
|
|
|
|
source configuration management) tool. Pretty much everything I do uses Git.
|
|
|
|
This is where I keep my notes on how to do things.
|
|
|
|
|
|
|
|
## Starting a project
|
|
|
|
|
|
|
|
Git is project and folder-centered, and to start using git go to the root folder
|
|
|
|
of a project you want to place under source control and initialize it:
|
|
|
|
|
|
|
|
```shell
|
|
|
|
$ mkdir a-new-project
|
|
|
|
$ git init
|
|
|
|
```
|
|
|
|
|
|
|
|
This creates a new folder, `.git`, where Git will store your commit history and
|
|
|
|
some configuration details.
|
|
|
|
|
|
|
|
## Putting files into git
|
|
|
|
|
|
|
|
To put files under source control, you must add them. To update the entire
|
|
|
|
folder, switch to the root of the project and add _all_ of it:
|
|
|
|
|
|
|
|
```shell
|
|
|
|
$ git add .
|
|
|
|
$ git commit
|
|
|
|
```
|
|
|
|
|
|
|
|
An editor will pop-up, asking you what this commit is about. It's generally
|
|
|
|
polite, especially if you're working in a team, to explain your commit in some
|
|
|
|
detail-- and to generally keep the commit small, in order to ensure that you
|
|
|
|
don't have to explain too much!
|
|
|
|
|
|
|
|
If your commit message could be a single line, you can add it directly from the
|
|
|
|
command line:
|
|
|
|
|
|
|
|
```shell
|
|
|
|
$ git add .
|
|
|
|
$ git commit -m "Updated the widget to widgetize."
|
|
|
|
```
|
|
|
|
|
|
|
|
... and you can even combine both commands, but be careful: this command will
|
|
|
|
not add any files that are new. It will only commit existing files that have
|
|
|
|
been modified, and will delete any files that you have deleted, from the
|
|
|
|
repository. (Deleted files still exist in the history and can always be
|
|
|
|
recovered.)
|
|
|
|
|
|
|
|
```shell
|
|
|
|
$ git commit -am "Updated the widget to widgetize."
|
|
|
|
```
|
|
|
|
|
|
|
|
## Git Configuration
|
|
|
|
|
|
|
|
You can have a global Git configuration file, `$HOME/\.gitconfig`, in which you
|
|
|
|
keep your personal information and command aliases, which is one of three ways
|
|
|
|
you can add your own commands to Git.
|
|
|
|
|
|
|
|
```shell
|
|
|
|
[user]
|
|
|
|
name = Elf M. Sternberg
|
|
|
|
email = someguy@example.com
|
|
|
|
|
|
|
|
[alias]
|
|
|
|
unstage = reset -q HEAD --
|
|
|
|
nevermind = !git reset --hard HEAD && git clean -d -f
|
|
|
|
wip = for-each-ref --sort='authordate:iso8601' --format='%(color:green)%(authordate:relative)%09%(color:white)%(refname:short)' refs/heads
|
|
|
|
stem = "!f() { git checkout -b $1 master; }; f"
|
|
|
|
start = !git init && git commit --allow-empty -m \"Initial commit\"
|
|
|
|
```
|
|
|
|
|
|
|
|
I'll explain each of these eventually, but for now, just know that if you want
|
|
|
|
your commits to be attributed to the right person, you must have the `[user]`
|
|
|
|
block, and
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|