# Git

### Commands

Remove a file from the repo without deleting it:`git rm --cached MYFILE.TXT`

Remove a directory from the repo without deleting it:`git rm --cached -r MYDIRECTORY`

Search through git branches: `git branch --all | grep -i MYSEARCH`

#### Reset remote "busted\_branch" with the contents of a "better\_branch"

Make sure everything is pushed up to your remote repository, then checkout your `busted_branch`:

```
git checkout busted_branch
```

Overwrite `busted_branch` with `better_branch`:

```
git reset --hard better_branch
```

Force the push to your remote:

```
git push -f origin busted_branch
```

Resolve conflicted file with "their" changes:

```
git checkout --theirs path/to/file
```

Resolve conflicted file with "our" changes:

```
git checkout --ours path/to/file
```

### Aliases to add to .gitconfig file

To prevent weird indenting, set paste mode in vim: `:set paste`

```
[user]
  name = Your Name
  email = your@email.com
[core]
  quotepath = false
  autocrlf = input
  editor = 'vim'
[push]
  default = simple
  autoSetupRemote = true
[alias]
  co = checkout
  ec = config --global -e
  up = !git pull --rebase --prune $@ && git submodule update --init --recursive
  cob = checkout -b
  cm = !git add -A && git commit -m
  save = !git add -A && git commit -m 'SAVEPOINT'
  wip = !git add -u && git commit -m "WIP"
  undo = reset HEAD~1 --mixed
  amend = commit -a --amend
  wipe = !git add -A && git commit -qm 'WIPE SAVEPOINT' && git reset HEAD~1 --hard
  bclean = "!f() { git branch --merged ${1-master} | grep -v " ${1-master}$" | xargs -r g:it branch -d; }; f"
  bdone = "!f() { git checkout ${1-master} && git up && git bclean ${1-master}; }; f"
  st = status
  logp = log --pretty=oneline --max-count=20
  subinit = !git submodule init && git submodule update
  mmain = !git fetch origin main && git merge origin/main
  mmaster = !git fetch origin master && git merge origin/master
```

When done pasting: `:set nopaste`

## GitHub CLI

Install on Mac: `brew install gh`

Auth: `gh auth login`

Check current PR check status: `gh pr checks`

Create PR: `gh pr create`

Check PR statuses: `gh pr status`

Merge PR: `gh pr merge`

Checkout PR: `gh pr checkout PR_NUMBER_HERE`

Edit PR: `gh pr edit`

Sources: <https://dev.to/thomaslombart/how-to-save-time-with-github-cli-b9n>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://kb.chrisltd.com/cheat-sheets/git.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
