Files
vim-ale/git/README.md

139 lines
2.8 KiB
Markdown

---
title: Git
homepage: https://git-scm.com
tagline: |
git: --fast-version-control
---
To update or switch versions, run `webi git@stable` (or `@v2.30`, `@beta`, etc).
## Cheat Sheet
> 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.
Github's [Git 'Hello World'](https://guides.github.com/activities/hello-world/)
is a good place to get started if you're new to git.
## Table of Contents
- Files
- Commit Files
- Ignore Files
- Create Branch
- Rebase by Default
- Rebase
- Auth via Token
### Files
These are the files / directories that are created and/or modified with this
install:
```text
~/.config/envman/PATH.env
~/.gitconfig
~/.local/opt/git/ # Windows
/Library/Developer/CommandLineTools/ # macOS
```
### How to commit files
```sh
git add ./path/to/file1
git add ./path/to/file2
git commit -m "my summary for this commit"
```
### How to ignore common files
In your project repository create a `.gitignore` file with patterns of fies to
ignore
```text
.env*
*.bak
*.tmp
.*.sw*
```
### How to create a branch
This will branch from the branch you're currently on.
```sh
git switch -c my-branch-name
```
### How to rebase by default
```sh
git config --global pull.rebase true
```
### How to rebase
> To "rebase" simply means to undo any of your changes, apply updates from
> another branch first, and then replay your changes.
Rebase when fetching new updates
```sh
git pull --rebase origin master
```
Rebase a feature branch from master before a merge
```sh
# update master
git fetch
git switch master
git pull
# go back to your feature branch
git switch my-feature
# start the rebase
git rebase master
# fix conflicts if you need to, and then continue
git add ./my-merged-file
git rebase --continue
```
### How to authenticate git with deploy tokens
Abbreviated from
[The Vanilla DevOps Git Credentials & Private Packages Cheatsheet](https://coolaj86.com/articles/vanilla-devops-git-credentials-cheatsheet/):
First, update `.gitconfig` to handle each type of git URL (git, ssh, and http)
as https:
```sh
git config --global url."https://api@github.com/".insteadOf "https://github.com/"
git config --global url."https://ssh@github.com/".insteadOf "ssh://git@github.com/"
git config --global url."https://git@github.com/".insteadOf "git@github.com:"
```
Next, create a `.git-askpass`:
```sh
echo 'echo "${MY_GIT_TOKEN}"' > ~/.git-askpass
chmod +x ~/.git-askpass
```
Finally, add the following ENVs to your deployment environment:
```sh
GIT_ASKPASS="${HOME}/.git-askpass"
# Relpace xxxx... with your deploy token
MY_GIT_TOKEN=xxxxxxxxxxxxxxxx
```
In the case of Github it may be useful to create a read-only deploy user for
your organization.
This can work with Docker, Github, Gitlab, Gitea, CircleCI, and many more.