> For the complete documentation index, see [llms.txt](https://wiki.nushackers.org/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://wiki.nushackers.org/orbital/git/command-glossary.md).

# Command Glossary

### Setup

| Command                       | Usage                                 |
| ----------------------------- | ------------------------------------- |
| `git init`                    | Initialise repository                 |
| `git config <option> <value>` | e.g. `git config --global user.email` |

### Making Changes

| Command                     | Usage                                     |
| --------------------------- | ----------------------------------------- |
| `git add <file/directory>`  | Stage changes (use `.` to add everything) |
| `git commit -m "<message>"` | Commit staged changes                     |
| `git reset <file>`          | Unstage changes                           |
| `git restore <file>`        | Discard changes                           |
| `git revert <commit>`       | Undo changes                              |

### Viewing State

| Command             | Usage                                                                        |
| ------------------- | ---------------------------------------------------------------------------- |
| `git status`        | View tracked/untracked files                                                 |
| `git reflog`        | List all local changes                                                       |
| `git log`           | List repository history                                                      |
| `git show`          | Show current commit                                                          |
| `git diff <A> <B>`  | Show differences between A and B (A and B can either be commits or branches) |
| `git diff --staged` | Show changes made by staged files                                            |

### Working with Branches

| Command                    | Usage                                                       |
| -------------------------- | ----------------------------------------------------------- |
| `git branch`               | List branches                                               |
| `git checkout <branch>`    | Switch into a different branch                              |
| `git checkout -b <branch>` | Create and switch into a new branch                         |
| `git branch -d <branch>`   | Delete branch                                               |
| `git merge <branch>`       | Applies the changes from `<branch>` into the current branch |

### Working with Remotes

| Command           | Usage                                                                                       |
| ----------------- | ------------------------------------------------------------------------------------------- |
| `git clone <url>` | Copy a remote repository                                                                    |
| `git fetch`       | Fetch changes from the remote                                                               |
| `git pull`        | Pull updates from remote to local (default iis via merge, use `--rebase` to specify rebase) |
| `git push`        | Push changes to remote                                                                      |

### Miscellaneous

| Command                | Usage                                      |
| ---------------------- | ------------------------------------------ |
| `git <command> -h`     | Show command usage                         |
| `git <command> --help` | Show detailed help page                    |
| `git blame <file>`     | Show who last modified each line in a file |
