Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/mor10/a-new-castle

Exercise project for the GitHub for the Rest of Us workshop
https://github.com/mor10/a-new-castle

Last synced: about 2 months ago
JSON representation

Exercise project for the GitHub for the Rest of Us workshop

Awesome Lists containing this project

README

        

# A New Castle for the King

Once upon a time, in a quaint little village nestled between rolling hills and meandering rivers of Norway, lived three siblings. The eldest was strong and stern, the middle one was swift and sharp, but the youngest, was clever and imaginative. They lived in a humble cottage by the woods, where they spent their days working the lands to feed themselves and their animals.

In this peaceful land, there was a wise and just King who ruled from a grand castle perched high on a hill. His kingdom was prosperous and people lived in harmony. But his castle had started to show the signs of age, and the King dreamt of a majestic new palace; one that would stand through the ages as a testament to the skill and creativity of his subjects.

One bright morning, heralds on horseback spread out from the King's court, trumpeting news of a grand competition. The King sought designs for a new palace, one that would be the marvel of the age. The prize for this monumental task was beyond anyone's wildest dreams: a dinner date with the heir to the Kingdom!

The three siblings decided to pool their unique talents to answer the King’s challenge. They knew this task required meticulous organization, and being children of a humble carpenter, they were well versed in the principles of planning and precision. They agreed to use Git, the mystical tool with the power of version control, to manage their monumental endeavor.

They envisioned a palace of splendor, with towering spires that kissed the skies, majestic gates that welcomed all with a promise of warmth, and enchanting gardens where nature and art danced in a perfect melody. But each sibling had their own vision of beauty and function, and they agreed to work on different parts of the palace.

The eldest would forge the towering spires and strong walls, a symbol of strength and safety. The middle sibling, with their keen eye for detail, decided to craft the gates and the outer defenses, ensuring a welcoming yet secure abode. The youngest, with their boundless imagination, dreamt of lush gardens and serene waterfalls, where people could find joy and peace amidst the beauty of nature.

With the first light of dawn, they set forth on this ambitious journey, their hands itching to create. And with the power of Git, they began the build process...

## The Castle Workshop

### 1. Fork this repository
The journey begins with each participant forking this repository. You can do so using the "fork" button in the top-right corner.
fork
Forking a repository creates a new connected duplicate of the original repository under your own account.

### 2. Open your repo in GitHub Desktop
Click the green `Code` button, select the `Local` tab, and select `Open with GitHub Desktop`.

### 3. Open the project in VS Code
In VS Code, navigate to the project folder.

### 4. Create a branch for the first part of your castle
The castle has three main projects: towers, gates, and gardens. To work on each project in isolation, create a new [branch](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-branches) for each of them.

***Hot tip:*** Make one branch, do all the necessary work for the first project in it, then switch back to the main branch, make the next branch for the next project, etc.

1. Click the "Source Control" icon in the sidebar of the editor
sc

2. In the sidebar, click the three dots to open the context menu, then select "Branch" and "Create Branch"
branch

3. Give the branch a descriptive name (ie the name of the part of the castle you're building)
branch-name

4. In the modal popup, choose "Switch to new branch"
switch

5. Make sure you're in the new branch by looking at the branch name in the bottom left corner.
current-branch

### 5. Building the features of the castle
Build the features of the castle in the `/Castle` folder. Start by creating a new file titled corresponding to the part you're working on (`towers.md`, `gates.md`, `gardens.md`) and then add a description of the part you're building. Here you can be as simple or as creative as you like. See [this documentation](https://docs.github.com/en/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax) for information about writing and formatting in Markdown on GitHub.

- Write text across multiple lines.
- Add a couple of links.
- Add an image or other graphic.
- Be creative (or not).

### 6. Staging and committing your changes
As you work on your project, use Git to stage and save your changes:

1. The version contol icon will show you how many files have changes, and in the file browser you'll see an "A" next to any added files.

changes

2. Click the version control icon to open the version control sidebar panel.
3. To stage a new file, click the + symbol next to it. The file now moves from the "Changes" section to the "Staged Changes" section.

changes2staged

4. At this point, Git is actively monitoring the staged files and is ready to committ them to memory.

5. To commit the changes to memory, first add a committ message in the text field describing what you're adding.

message

6. Click the blue "Committ & Push" button to commit the change to memory and push it immediately to the GitHub repository.

### 7. Make additional changes to your file
Add additional changes to your project file, then stage and commit them to get used to the process of saving your work.

### 8. Switch to the next project branch
When you're finished with one project, stage and commit any final changes, then click the branch indicator in the bottom left corner to open the branch panel. Switch back to the `main` branch.

branch-selector

branch-panel

### 9. Notice what changed
When you switch to the `main` branch, the file you've been working on disappears from the `Castles` folder. This is because it only exists in your project branch. You'll merge everything together later.

### 10. Finish the other two projects
Go back through steps 4-8 to finish the two other projects, creating one branch and one file for each and staging and committing changes as you go.

### 11. Create a conflict
In the `main` branch, go to the `/Castle` folder and create a file named `gardens.md`. Add some content to it and stage and commit it to the `main` branch as normal. This will create a problem later on, and that's what we want.

### 12. Merge branches
Now it's time to bring all the projects together in the `main` branch. This is done by merging branches.

**Note:** Leave the `gardens` branch for last as it will create a conflict.

1. In the version control panel, click the three dots and then select `Branch` and `Merge Branch` from the dropdowns.

merge

2. Select the branch you want to merge from the panel.

merge-select

3. If there are no conflicts, the branches are now merged and you'll see the file from the merged branch in the `main` branch.

### 13. Resolve a conflict!
When you try to merge the `gardens` branch, you'll get a warning that there's a conflict.

conflict

This is because the `gardens.md` file in the `main` branch and your `gardens` branch are different. The conflicting file(s) will open in the editor and you get a visual representation of where the conflict is. In practice, the system adds all conflicting text into the file and you have to decide what you want to keep and what you want to delete.

conflict-viz

Once you've resolve the conflict, add the file from the "Merge changes" section in the version control panel and click Commit again. The commit will now complete as normal.

merge-changes

## The End
Once all your project files are in the `main` branch, the workshop is complete and you now have to argue with your workshop mates about who gets to sit next to the heir to the kingdom at the aforementioned dinner.