How to Merge Changes in a GitHub Classroom Starter Repo Back into the Template
For College Professors: Keep Your GitHub Classroom Templates Up-to-Date! 🚀
If you're using GitHub Classroom, you’ve probably set up a starter repository (template) for students to clone. But what happens when you improve the starter code after students have already cloned it?
Instead of manually updating the original template repository, you can merge changes from a student or instructor's copy back into the template. Here’s how! 👇
🔍 Why Might You Need This?
- ✅ You fixed a bug in a starter repo after students cloned it.
- ✅ You added better documentation or comments.
- ✅ A student or TA improved the starter code, and you want to incorporate their changes.
🛠 Method 1: Direct Merge Using Git
1️⃣ Clone the Template Repository
git clone https://github.com/your-org/original-template.git
cd original-template
2️⃣ Add the Updated Repo as a Remote
git remote add updated-repo https://github.com/student-or-instructor/repo-name.git
git remote -v
3️⃣ Fetch the Changes
git fetch updated-repo
4️⃣ Merge the Changes
git merge updated-repo/main --no-ff --allow-unrelated-histories
5️⃣ Resolve Any Merge Conflicts
If Git reports conflicts, open the files, edit them, then:
git add <resolved-file>
git commit -m "Resolved merge conflicts from updated repo"
6️⃣ Push the Updated Template
git push origin main
🧩 Method 2: Using a Pull Request (Preferred)
If you want a structured way to merge updates while reviewing changes first, follow this PR-based approach:
1️⃣ Fork the Updated Repository
If a student, TA, or instructor has made improvements, fork their repo into your GitHub organization:
- Go to their repository.
- Click Fork (top-right corner).
- Choose your organization as the fork destination.
2️⃣ Clone Your Template Repository
git clone https://github.com/your-org/original-template.git
cd original-template
3️⃣ Add the Forked Repository as a Remote
git remote add updated-repo https://github.com/your-org/forked-updated-repo.git
git remote -v
4️⃣ Create a New Branch
git checkout -b update-from-student
5️⃣ Pull Changes from the Forked Repository
git fetch updated-repo
git merge updated-repo/main --no-ff --allow-unrelated-histories
If there are conflicts, resolve them, then:
git add <resolved-files>
git commit -m "Resolved merge conflicts from updated repo"
6️⃣ Push Your Changes and Open a Pull Request
git push origin update-from-student
Now, go to your GitHub repository and:
- Click "Compare & pull request".
- Set the base branch to
main
and the compare branch toupdate-from-student
. - Add a description explaining the updates.
- Click Create Pull Request.
7️⃣ Review & Merge the PR
Now, you or another instructor can:
- ✅ Review the changes in GitHub’s PR interface.
- ✅ Request modifications if needed.
- ✅ Merge the PR when ready.
8️⃣ Clean Up the Branch
git branch -d update-from-student
git push origin --delete update-from-student
🚀 Why This Method is Better
- ✅ Track all updates with GitHub’s PR history.
- ✅ Avoid modifying `main` directly, reducing accidental mistakes.
- ✅ Review and discuss changes before merging.
- ✅ Revert changes easily if needed.
📢 Final Thoughts
By following these methods, you can keep your GitHub Classroom templates updated without starting over every semester! 🎉
💬 Have questions? Drop a comment or ask in GitHub Discussions! 🚀
No comments:
Post a Comment