# M03-L01 — Create the GitHub practice repository

**Outcome:** Choose private visibility and verify the intended remote before transfer.

**Start:** M02 complete; two reviewed local commits and a GitHub account you control.

Git is local version-control software; GitHub hosts repositories and collaboration. You can complete this lesson with a private practice repository. Sign into the intended account and inspect the selected owner and visibility before creation. Because the local project already has history, create the remote without an initial README, license, or ignore file. [GitHub Hello World](https://docs.github.com/en/get-started/using-github/hello-world)

Inspect local state and the remote configuration from PowerShell in the Chapter 5 practice root:

```powershell
git status
git branch --show-current
git remote -v
```

If no remote exists, copy the HTTPS URL from the new private repository and add it using `git remote add origin` followed by that actual URL. The name origin is a convention; it does not verify the destination. Read the owner, repository, and transport in `git remote -v` afterward. If origin already exists, inspect it before deciding whether `set-url` is appropriate. [git remote](https://git-scm.com/docs/git-remote)

Commit identity is not authentication. The browser can use one account while Git's credential helper uses another. Complete the supported private credential flow when required and verify access through the actual operation. Never embed tokens in remote URLs or record credential entry. [GitHub credential management](https://docs.github.com/en/get-started/git-basics/caching-your-github-credentials-in-git)

Before transfer, inspect tracked files and recent history. A private remote still receives what you upload. The practice project contains source, documentation, scripts, and synthetic fixtures; it should not include secrets or unrelated history. End the lesson with a recorded correct remote and visibility. The next lesson performs and verifies the push.

![Push sends commits to the remote; fetch retrieves remote knowledge without integration; clone creates a separate checkout for reproduction.](../../../../book/figures/D06.png)

*D06. Push sends commits to the remote; fetch retrieves remote knowledge without integration; clone creates a separate checkout for reproduction.*

**Recording note:** The repository was created once. The video shows the actual configuration before creation and the resulting empty private repository; the creation transition is omitted because that capture failed. The completed destination note is previewed before its single recorded edit-and-save demonstration. Original teaching notes explain conditional recovery and authentication; no such error or sign-in is staged. This lesson stops before Git transport, which is performed in the next lesson.

## Practice and completion

Complete the [exercise](exercise.md), then compare your artifact with the separately distributed instructor answer. A lesson acknowledgment records your own progress; it does not certify that a physical test occurred.

## Reading and figures

[Chapter 6](../../../../book/chapters/ch06/chapter.md). Resources: [Project checkpoint guide](../../../../examples/sensor-monitor/docs/checkpoints.md) and [toolchain setup](../../../../examples/sensor-monitor/docs/setup.md). Figure references: SS06-01–02; D06. 
