> For the complete documentation index, see [llms.txt](https://reactjs.koida.tech/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://reactjs.koida.tech/git-and-githubs/hands-on-practice.md).

# Hands-on Practice

## Task: Upload Solo Project 1 to GitHub

**Method 1: Initializing with a README.md (Recommended for New Projects)**

This approach is best when starting a new project on GitHub. A README file provides a description of your project.

**Steps:**

1. **Create a Repository on GitHub:**
   * Go to GitHub.com and log in.
   * Click the "+" button in the top right and select "New repository."
   * Give your repository a name (e.g., "<mark style="color:orange;">my-project</mark>").
   * Optionally, add a description.
   * <mark style="color:red;">**Crucially**</mark>**:** Check the box that says "Add a README file." This initializes the repository with a README.md file.
   * Choose whether you want the repository to be public or private.
   * Click "Create repository."
2. **Clone the Repository to Your Local Machine:**
   * On your repository's page on GitHub, click the "Code" button and copy the repository's URL (it will look like `https://github.com/`<mark style="color:orange;">`your-username`</mark>`/my-project.git` or `git@github.com:your-username/my-project.git`).
   * Open a terminal or Git Bash on your local machine.
   * Navigate to the directory where you want to store your project (e.g., `cd`` `<mark style="color:orange;">**`Your-Working-Directory/projects`**</mark>).
   * Use the `git clone` command

     ```bash
     git clone <repository_url>
     ```

     (Replace `<`<mark style="color:orange;">`repository_url`</mark>`>` with the URL you copied). This creates a local copy of your empty repository.
3. **Copy Your Files and Folders:**
   * Copy the files and folders you want to upload into the newly created local repository directory (e.g., `my-project`).
4. **Stage the Changes:**
   * In your terminal, navigate to the local repository directory (e.g., `cd`` `<mark style="color:orange;">`my-project`</mark>).
   * Use the `git add` command to stage the changes. You can add individual files:

     ```bash
     git add file1.txt
     git add folder1/file2.txt
     ```
   * Or, to add all changes (including new files and folders), use:

     ```bash
     git add .
     ```
5. **Commit the Changes:**
   * Use the `git commit` command to create a commit. A commit is like a snapshot of your changes. Always include a descriptive message:

     ```bash
     git commit -m "Initial commit: Added project files"
     ```
6. **Push the Changes to GitHub:**
   * Use the `git push` command to upload your local commits to the remote GitHub repository:

     ```bash
     git push origin main  # or git push origin master, depending on your default branch name
     ```

     (You might be prompted for your GitHub credentials.)

**Method 2: Initializing&#x20;*****Without*****&#x20;a README.md (For Existing Local Projects)**

This method is for when you already have a project on your computer that you want to put on GitHub.

**Steps:**

1. **Create a Repository on GitHub (**<mark style="color:red;">Without README</mark>**):**
   * Follow the same steps as in Method 1, *but do not* check the "Add a README file" box. Click "Create repository."
2. **Initialize a Git Repository Locally:**
   * In your terminal, navigate to your project's root directory.
   * Use the `git init` command to initialize a new Git repository in your project:Bash

     ```bash
     git init
     ```
3. **Add Your Files and Folders:**
   * Same as Step 3 in Method 1: Copy your files and folders into your project directory.
4. **Stage the Changes:**
   * Same as Step 4 in Method 1: Use `git add .` (or add files individually).
5. **Commit the Changes:**
   * Same as Step 5 in Method 1: Use `git commit -m "Initial commit"` (or a more descriptive message).
6. **Add the Remote Repository:**
   * On your GitHub repository page, copy the repository URL.
   * In your terminal, use the `git remote add` command to link your local repository to the remote one:

     ```bash
     git remote add origin <repository_url>
     ```

     (Replace `<repository_url>` with the URL you copied.)
7. **Push the Changes to GitHub:**
   * Same as Step 6 in Method 1: Use `git push origin main` (or `git push origin master`). You might need to use the `-u` flag for the first push to set the upstream branch:

     ```bash
     git push -u origin main
     ```

**Key Explanations:**

* **`git clone`:** Copies a repository from GitHub to your local machine.
* **`git init`:** Initializes a new Git repository in a local directory.
* **`git add`:** Stages changes for the next commit. The `.` adds all changes in the current directory and its subdirectories.
* **`git commit`:** Creates a snapshot of the staged changes with a descriptive message.
* **`git push`:** Uploads local commits to the remote GitHub repository.
* **`origin`:** A common name for the remote repository you cloned from or added.
* **`main` or `master`:** The default branch name on GitHub.

Remember to replace placeholders like `<repository_url>` and commit messages with your actual values. If you encounter errors, carefully read the error messages in your terminal, as they often provide clues for troubleshooting.
