generated from skills/resolve-merge-conflicts
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
0 parents
commit 52317c6
Showing
17 changed files
with
671 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
version: 2 | ||
updates: | ||
- package-ecosystem: "github-actions" | ||
directory: "/" | ||
schedule: | ||
interval: "monthly" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
0 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
<!-- readme --> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
<!-- | ||
<<< Author notes: Step 1 >>> | ||
Choose 3-5 steps for your course. | ||
The first step is always the hardest, so pick something easy! | ||
Link to docs.github.com for further explanations. | ||
Encourage users to open new tabs for steps! | ||
--> | ||
|
||
## Step 1: Create a pull request | ||
|
||
_Welcome to "Managing Merge Conflicts"! :wave:_ | ||
|
||
**What is a _merge conflict_?**: A **merge conflict** occurs when changes are made to the same part of the same file on two different branches. You usually find out about conflicts in a pull request so let's start by creating one. | ||
|
||
### :keyboard: Activity: Create a pull request | ||
|
||
1. Open a new browser tab, and work on the steps in your second tab while you read the instructions in this tab. | ||
1. We made a small change to a file in the repository in the `my-resume` branch. | ||
1. [Create a pull request](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request) setting `my-resume` as the head branch and `main` as the base branch. You can enter `Resolving merge conflicts` for the pull request title and body. | ||
1. Wait about 20 seconds then refresh this page (the one you're following instructions from). [GitHub Actions](https://docs.github.com/en/actions) will automatically update to the next step. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
<!-- | ||
<<< Author notes: Step 2 >>> | ||
Start this step by acknowledging the previous step. | ||
Define terms and link to docs.github.com. | ||
--> | ||
|
||
## Step 2: Resolve a merge conflict | ||
|
||
_Good start! Now let's look deeper at a merge conflict! :mag:_ | ||
|
||
This can be intimidating, but have no fear, Git is smart when it comes to merging! Git only needs a human to decide how to [resolve the conflict](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/addressing-merge-conflicts/resolving-a-merge-conflict-using-the-command-line). Sometimes, the best way to resolve a merge conflict is to add content that's from both branches, or even something that isn't on either! This is why Git needs a human to look at the code and make the proper fixes. | ||
|
||
### :keyboard: Activity: Resolve a merge conflict | ||
|
||
1. Open the pull request that you just created, we created a conflict for you. Have no fear! | ||
1. At the bottom of the page, under "This branch has conflicts that must be resolved", click the **Resolve conflicts** button. | ||
1. Look for the highlighted sections that begins with `<<<<<<< my-resume` and ends with `>>>>>>> main`. These markers are added by Git to show you the content that is in conflict. | ||
1. Remove the changes made on the main branch by deleting all of the content below the `=======` and above `>>>>>>> main`. | ||
1. Next, remove the merge conflict markers by deleting the following lines: | ||
``` | ||
<<<<<<< my-resume | ||
======= | ||
>>>>>>> main | ||
``` | ||
1. With the merge conflict markers removed, click **Mark as resolved**. | ||
1. Finally, click **Commit merge**. | ||
1. Wait about 20 seconds then refresh this page (the one you're following instructions from). [GitHub Actions](https://docs.github.com/en/actions) will automatically update to the next step. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,25 @@ | ||
<!-- | ||
<<< Author notes: Step 3 >>> | ||
Start this step by acknowledging the previous step. | ||
Define terms and link to docs.github.com. | ||
--> | ||
|
||
## Step 3: Create your own conflict | ||
|
||
_Good job! You've solved a merge conflict! :tada:_ | ||
|
||
Resolving a conflict doesn't automatically merge the pull request in GitHub. Instead, it stores the resolution of the conflict in a merge commit and allows you and your team to keep working. To resolve a conflict, GitHub performs what is known as a _reverse merge_. This means that the changes from the `main` branch were merged into your `my-resume` branch. With a reverse merge, only the `my-resume` branch is updated. This allows you to test the resolved changes on your branch before you merge it into `main`. | ||
|
||
Now, let's get a little evil. (It's for educational purposes!) | ||
|
||
### :keyboard: Activity: Create your own conflict | ||
|
||
We went ahead and added a new file called `references.md` and pushed that change to `main`, without updating your `my-resume` branch. | ||
|
||
1. Browse to the `my-resume` branch. | ||
1. Click the `Add file` dropdown menu and then on `Create new file`. | ||
1. Create a file named `references.md`. | ||
1. Enter some text that conflicts with what we added for `references.md` in the `main` branch. | ||
1. Scroll to the bottom of the page and enter a commit message for your change. | ||
1. Click the **Commit new file** button, making sure the "Commit directly to the `my-resume` branch" option is selected. | ||
1. Wait about 20 seconds then refresh this page (the one you're following instructions from). [GitHub Actions](https://docs.github.com/en/actions) will automatically update to the next step. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
<!-- | ||
<<< Author notes: Step 4 >>> | ||
Start this step by acknowledging the previous step. | ||
Define terms and link to docs.github.com. | ||
--> | ||
|
||
## Step 4: Merge your pull request | ||
|
||
_Almost there! :heart:_ | ||
|
||
You can now [merge](https://docs.github.com/en/get-started/quickstart/github-glossary#merge) your pull request! | ||
|
||
### :keyboard: Activity: Merge your pull request | ||
|
||
1. First, resolve any remaining conflicts in your pull request. | ||
> Look back at step one if you need help. | ||
1. Click **Merge pull request**. | ||
1. Delete the branch `my-resume` (optional). | ||
1. Wait about 20 seconds then refresh this page (the one you're following instructions from). [GitHub Actions](https://docs.github.com/en/actions) will automatically update to the next step. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,24 @@ | ||
<!-- | ||
<<< Author notes: Finish >>> | ||
Review what we learned, ask for feedback, provide next steps. | ||
--> | ||
|
||
## Finish | ||
|
||
_Congratulations friend, you've completed this course!_ | ||
|
||
<img src=https://octodex.github.com/images/benevocats.jpg alt=celebrate width=300 align=right> | ||
|
||
Here's a recap of all the tasks you've accomplished in your repository: | ||
|
||
- You learned why merge conflicts happen. | ||
- You resolved a simple merge conflict. | ||
- You created a merge conflict, and resolved it! | ||
|
||
### What's next? | ||
|
||
- Make your own Markdown resume site with GitHub Pages! Learn how in our [GitHub Pages](https://github.com/skills/github-pages) course. | ||
- We'd love to hear what you thought of this course [in our discussion board](https://github.com/orgs/skills/discussions/categories/resolve-merge-conflicts). | ||
- [Take another GitHub Skills course](https://github.com/skills). | ||
- [Read the GitHub Getting Started docs](https://docs.github.com/en/get-started). | ||
- To find projects to contribute to, check out [GitHub Explore](https://github.com/explore). |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,91 @@ | ||
name: Step 0, Welcome | ||
|
||
# This step triggers after the learner creates a new repository from the template. | ||
# This workflow updates from step 0 to step 1. | ||
|
||
# This will run every time we create push a commit to `main`. | ||
# Reference: https://docs.github.com/en/actions/learn-github-actions/events-that-trigger-workflows | ||
on: | ||
workflow_dispatch: | ||
push: | ||
branches: | ||
- main | ||
|
||
# Reference: https://docs.github.com/en/actions/security-guides/automatic-token-authentication | ||
permissions: | ||
# Need `contents: read` to checkout the repository. | ||
# Need `contents: write` to update the step metadata. | ||
contents: write | ||
|
||
jobs: | ||
# Get the current step to only run the main job when the learner is on the same step. | ||
get_current_step: | ||
name: Check current step number | ||
runs-on: ubuntu-latest | ||
steps: | ||
- name: Checkout | ||
uses: actions/checkout@v4 | ||
- id: get_step | ||
run: | | ||
echo "current_step=$(cat ./.github/steps/-step.txt)" >> $GITHUB_OUTPUT | ||
outputs: | ||
current_step: ${{ steps.get_step.outputs.current_step }} | ||
|
||
on_start: | ||
name: On start | ||
needs: get_current_step | ||
|
||
# We will only run this action when: | ||
# 1. This repository isn't the template repository. | ||
# 2. The step is currently 0. | ||
# Reference: https://docs.github.com/en/actions/learn-github-actions/contexts | ||
# Reference: https://docs.github.com/en/actions/learn-github-actions/expressions | ||
if: >- | ||
${{ !github.event.repository.is_template | ||
&& needs.get_current_step.outputs.current_step == 0 }} | ||
# We'll run Ubuntu for performance instead of Mac or Windows. | ||
runs-on: ubuntu-latest | ||
|
||
steps: | ||
# We'll need to check out the repository so that we can edit the README. | ||
- name: Checkout | ||
uses: actions/checkout@v4 | ||
with: | ||
fetch-depth: 0 # Let's get all the branches. | ||
|
||
- name: Prepare a branch | ||
run: | | ||
echo "Make sure we are on step 0" | ||
if [ "$(cat .github/steps/-step.txt)" != 0 ] | ||
then | ||
echo "Current step is not 0" | ||
exit 0 | ||
fi | ||
echo "Make a branch" | ||
BRANCH=my-resume | ||
git checkout -b $BRANCH | ||
echo "Update resume.md" | ||
sed -i.bak 's/Experience/Job History/' resume.md | ||
echo "Make a commit" | ||
git config user.name github-actions | ||
git config user.email github-actions@github.com | ||
git add resume.md | ||
git commit --message="Update resume.md in my-resume" | ||
echo "Push" | ||
git push --set-upstream origin $BRANCH | ||
env: | ||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||
|
||
# In README.md, switch step 0 for step 1. | ||
- name: Update to step 1 | ||
uses: skills/action-update-step@v2 | ||
with: | ||
token: ${{ secrets.GITHUB_TOKEN }} | ||
from_step: 0 | ||
to_step: 1 | ||
branch_name: my-resume |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,93 @@ | ||
name: Step 1, Create a pull request | ||
|
||
# This step triggers after the learner creates a pull request for the my-resume branch | ||
# This workflow updates from step 1 to step 2. | ||
|
||
# This will run every time we open a pull request. | ||
# Reference: https://docs.github.com/en/actions/learn-github-actions/events-that-trigger-workflows | ||
on: | ||
workflow_dispatch: | ||
pull_request: | ||
types: [opened] | ||
|
||
# Reference: https://docs.github.com/en/actions/security-guides/automatic-token-authentication | ||
permissions: | ||
# Need `contents: read` to checkout the repository. | ||
# Need `contents: write` to update the step metadata. | ||
contents: write | ||
|
||
jobs: | ||
# Get the current step to only run the main job when the learner is on the same step. | ||
get_current_step: | ||
name: Check current step number | ||
runs-on: ubuntu-latest | ||
steps: | ||
- name: Checkout | ||
uses: actions/checkout@v4 | ||
- id: get_step | ||
run: | | ||
echo "current_step=$(cat ./.github/steps/-step.txt)" >> $GITHUB_OUTPUT | ||
outputs: | ||
current_step: ${{ steps.get_step.outputs.current_step }} | ||
|
||
on_create_pr: | ||
name: On create PR | ||
needs: get_current_step | ||
|
||
# We will only run this action when: | ||
# 1. This repository isn't the template repository. | ||
# 2. The step is currently 1. | ||
# Reference: https://docs.github.com/en/actions/learn-github-actions/contexts | ||
# Reference: https://docs.github.com/en/actions/learn-github-actions/expressions | ||
if: >- | ||
${{ !github.event.repository.is_template | ||
&& needs.get_current_step.outputs.current_step == 1 }} | ||
# We'll run Ubuntu for performance instead of Mac or Windows. | ||
runs-on: ubuntu-latest | ||
|
||
steps: | ||
# We'll need to check out the repository so that we can edit the README. | ||
- name: Checkout | ||
uses: actions/checkout@v4 | ||
with: | ||
fetch-depth: 0 # Let's get all the branches. | ||
|
||
- name: Prepare a merge conflict | ||
run: | | ||
echo "Make sure we are on step 1" | ||
if [ "$(cat .github/steps/-step.txt)" != 1 ] | ||
then | ||
echo "Current step is not 1" | ||
exit 0 | ||
fi | ||
echo "Manually update step in my-resume to match step in main branch" | ||
git checkout my-resume | ||
git config user.name github-actions | ||
git config user.email github-actions@github.com | ||
sed -i.bak 's/1/2/' .github/steps/-step.txt | ||
git add .github/steps/-step.txt | ||
git commit --message="Update step in my-resume" | ||
echo "Push" | ||
git push origin my-resume | ||
echo "Create a merge conflict in main" | ||
git checkout main | ||
sed -i.bak 's/Experience/Jobs/' resume.md | ||
git add resume.md | ||
git commit --message="Update resume.md in main" | ||
echo "Push" | ||
git push origin main | ||
env: | ||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||
|
||
# In README.md, switch step 1 for step 2. | ||
- name: Update to step 2 | ||
uses: skills/action-update-step@v2 | ||
with: | ||
token: ${{ secrets.GITHUB_TOKEN }} | ||
from_step: 1 | ||
to_step: 2 | ||
branch_name: my-resume |
Oops, something went wrong.