docs: improve first-time git setup
| | |
| | | Some common frontmatter fields that are natively supported by Quartz: |
| | | |
| | | - `title`: Title of the page. If it isn't provided, Quartz will use the name of the file as the title. |
| | | - `description`: Description of the page used for link previews. |
| | | - `aliases`: Other names for this note. This is a list of strings. |
| | | - `tags`: Tags for this note. |
| | | - `draft`: Whether to publish the page or not. This is one way to make [[private pages|pages private]] in Quartz. |
| | | - `date`: A string representing the day the note was published. Normally uses `YYYY-MM-DD` format. |
| | | |
| | | ## Syncing your Content |
| | | |
| | | When your Quartz is at a point you're happy with, you can save your changes to GitHub by doing `npx quartz sync`. |
| | | |
| | | > [!hint] Flags and options |
| | | > For full help options, you can run `npx quartz sync --help`. |
| | | > |
| | | > Most of these have sensible defaults but you can override them if you have a custom setup: |
| | | > |
| | | > - `-d` or `--directory`: the content folder. This is normally just `content` |
| | | > - `-v` or `--verbose`: print out extra logging information |
| | | > - `--commit` or `--no-commit`: whether to make a `git` commit for your changes |
| | | > - `--push` or `--no-push`: whether to push updates to your GitHub fork of Quartz |
| | | > - `--pull` or `--no-pull`: whether to try and pull in any updates from your GitHub fork (i.e. from other devices) before pushing |
| | | When your Quartz is at a point you're happy with, you can save your changes to GitHub. |
| | | First, make sure you've [[setting up your GitHub repository|already setup your GitHub repository]] and then do `npx quartz sync`. |
| | |
| | | 2. [[configuration|Configure]] Quartz's behaviour |
| | | 3. Change Quartz's [[layout]] |
| | | 4. [[build|Build and preview]] Quartz |
| | | 5. [[hosting|Host]] Quartz online |
| | | 5. Sync your changes with [[setting up your GitHub repository|GitHub]] |
| | | 6. [[hosting|Host]] Quartz online |
| | | |
| | | If you prefer instructions in a video format you can try following Nicole van der Hoeven's |
| | | [video guide on how to set up Quartz!](https://www.youtube.com/watch?v=6s6DT1yN4dw&t=227s) |
| | |
| | | In your terminal of choice, navigate to the root of your Quartz folder. Then, run the following commands, replacing `REMOTE-URL` with the URL you just copied from the previous step. |
| | | |
| | | ```bash |
| | | # add your repository |
| | | git remote add origin REMOTE-URL |
| | | # list all the repositories that are tracked |
| | | git remote -v |
| | | |
| | | # track the main quartz repository for updates |
| | | # if the origin doesn't match your own repository, set your repository as the origin |
| | | git remote set-url origin REMOTE-URL |
| | | |
| | | # if you don't have upstream as a remote, add it so updates work |
| | | git remote add upstream https://github.com/jackyzha0/quartz.git |
| | | ``` |
| | | |
| | | To verify that you set the remote URL correctly, run the following command. |
| | | |
| | | ```bash |
| | | git remote -v |
| | | ``` |
| | | |
| | | Then, you can sync the content to upload it to your repository. |
| | | Then, you can sync the content to upload it to your repository. This is a helper command that will do the initial push of your content to your repository. |
| | | |
| | | ```bash |
| | | npx quartz sync --no-pull |
| | | ``` |
| | | |
| | | > [!hint] |
| | | > If `npx quartz sync` fails with `fatal: --[no-]autostash option is only valid with --rebase`, you |
| | | > may have an outdated version of `git`. Updating `git` should fix this issue. |
| | | > [!warning]- `fatal: --[no-]autostash option is only valid with --rebase` |
| | | > You may have an outdated version of `git`. Updating `git` should fix this issue. |
| | | |
| | | In future updates, you can simply run `npx quartz sync` every time you want to push updates to your repository. |
| | | |
| | | > [!hint] Flags and options |
| | | > For full help options, you can run `npx quartz sync --help`. |
| | | > |
| | | > Most of these have sensible defaults but you can override them if you have a custom setup: |
| | | > |
| | | > - `-d` or `--directory`: the content folder. This is normally just `content` |
| | | > - `-v` or `--verbose`: print out extra logging information |
| | | > - `--commit` or `--no-commit`: whether to make a `git` commit for your changes |
| | | > - `--push` or `--no-push`: whether to push updates to your GitHub fork of Quartz |
| | | > - `--pull` or `--no-pull`: whether to try and pull in any updates from your GitHub fork (i.e. from other devices) before pushing |
| | |
| | | // get a preferred link resolution strategy |
| | | linkResolutionStrategy = exitIfCancel( |
| | | await select({ |
| | | message: `Choose how Quartz should resolve links in your content. You can change this later in \`quartz.config.ts\`.`, |
| | | message: `Choose how Quartz should resolve links in your content. This should match Obsidian's link format. You can change this later in \`quartz.config.ts\`.`, |
| | | options: [ |
| | | { |
| | | value: "absolute", |
| | | label: "Treat links as absolute path", |
| | | hint: "for content made for Quartz 3 and Hugo", |
| | | }, |
| | | { |
| | | value: "shortest", |
| | | label: "Treat links as shortest path", |
| | | hint: "for most Obsidian vaults", |
| | | hint: "(default)", |
| | | }, |
| | | { |
| | | value: "absolute", |
| | | label: "Treat links as absolute path", |
| | | }, |
| | | { |
| | | value: "relative", |
| | | label: "Treat links as relative paths", |
| | | hint: "for just normal Markdown files", |
| | | }, |
| | | ], |
| | | }), |
| | |
| | | // setup remote |
| | | execSync( |
| | | `git remote show upstream || git remote add upstream https://github.com/jackyzha0/quartz.git`, |
| | | { stdio: "ignore" }, |
| | | ) |
| | | |
| | | outro(`You're all set! Not sure what to do next? Try: |