# 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.


---

# 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://reactjs.koida.tech/git-and-githubs/hands-on-practice.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.
