91 lines
2.6 KiB
Markdown
91 lines
2.6 KiB
Markdown
|
+++
|
||
|
title = "Git Notes"
|
||
|
description = "Basic documentation of Git"
|
||
|
date = 2022-04-27T18:00:00+00:00
|
||
|
updated = 2022-04-27T18:00:00+00:00
|
||
|
template = "docs/section.html"
|
||
|
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
|
||
|
|
||
|
|
||
|
|
||
|
|