🚧 Under construction — VoTechWorks is being built. A free tech program — complimentary, as our commitment to get America working.
voTechWorksGrade 13 · a vocational technology learning center, by urbanicity
newSchoolWorks.com › VoTechWorks › Technology & Design › Web & Software Development › Git Version Control for Web & Software Development › Lesson 12
TEC-WEB46-05 · Lesson 12 · 16 clock hours · practice

Integrated Git Workflow Simulation

Objective. Students execute a complete team development workflow from repository setup through tagged release, including branching, conflict resolution, pull request review, and final merge, demonstrating proficiency across all course skills.

⚠ Pending professional review

This lesson, its worked examples and its practice questions has not yet been verified by an industry-certified professional or by a certification or approval body. It is a study draft and may contain errors. Do not use it as instructions for work on a job site or on live equipment. Always follow your instructor, your supervising professional, and current official references and regulations.

VoTechWorks program approval and accreditation are still in progress. Credentials are issued only by the certifying bodies named in each program, after their own exams.

Integrated Git Workflow Simulation

This lesson brings together every Git skill from the course into one realistic team exercise. You will act as a three-person development team, taking a project from an empty repository all the way to a published, versioned release on GitHub. Professional teams follow this kind of workflow every day, and being able to execute it smoothly is what employers expect.

Setting Up the Shared Repository

One team member creates the GitHub repository and adds the others as collaborators with write access. Immediately after creation, protect the `main` branch: go to Settings → Branches → Branch protection rules, add a rule for `main`, and enable Require a pull request before merging and Require approvals (set to at least one reviewer). This single step enforces code review and prevents anyone from pushing directly to production history—a practice used in nearly every professional shop.

All three members then clone the repository locally:

```

git clone https://github.com/team/project.git

```

Each member creates their own feature branch from `main` before writing a single line of code:

```

git checkout -b feature/header

git checkout -b feature/main-content

git checkout -b feature/footer

```

Working on Feature Branches and Opening Pull Requests

Each member builds their assigned section of `index.html` on their branch, commits frequently with clear messages, and pushes to GitHub:

```

git add index.html

git commit -m "Add navigation links to header section"

git push origin feature/header

```

On GitHub, each member opens a pull request (PR) targeting `main`. Write a short PR description explaining what changed and why. A teammate then reviews the PR: read the diff carefully, leave inline comments if something looks wrong, and approve or request changes. The PR author addresses any feedback with additional commits—GitHub automatically updates the PR. Only merge when at least one reviewer approves, satisfying the branch protection rule.

Resolving a Deliberate Merge Conflict

Your instructor will edit the same line in `index.html` on two different branches to produce a conflict. When the second PR attempts to merge, GitHub will flag it as conflicted and block the merge. This is normal; conflicts are an expected part of team development, not a sign that something is broken.

To resolve locally:

1. Fetch the latest state and check out the conflicting branch:

```

git fetch origin

git checkout feature/main-content

```

2. Merge `main` into your branch to bring in the already-merged changes:

```

git merge origin/main

```

3. Open the file. Git marks conflicts with `<<<<<<<`, `=======`, and `>>>>>>>` delimiters. Everything between `<<<<<<< HEAD` and `=======` is your version; everything between `=======` and `>>>>>>> origin/main` is the incoming version. Decide what the final content should be, delete all conflict markers, and save.

4. Stage the resolved file and complete the merge:

```

git add index.html

git commit -m "Resolve merge conflict: reconcile header link order"

git push origin feature/main-content

```

5. Document every command you ran and your resolution decision in your lab log before moving on.

Communication is the real solution to merge conflicts—talk to your teammate first so you understand what each version intended.

Creating a Develop Branch and Final Release

After all feature PRs are merged into `main`, create a `develop` branch to represent ongoing integration work. Open one final PR from `develop` into `main` and merge it. This simulates a release-candidate workflow.

Now apply a semantic version annotated tag. Semantic versioning follows `MAJOR.MINOR.PATCH`—`v1.0.0` means first stable release:

```

git tag -a v1.0.0 -m "Release v1.0.0: initial site with header, content, footer"

git push origin v1.0.0

```

Annotated tags store the tagger's name, date, and message, making them far more useful for release history than lightweight tags.

On GitHub, go to Releases → Draft a new release, select the `v1.0.0` tag, and write a changelog listing every feature merged and any known issues. Publish the release. Your project now has a permanent, citable snapshot.

Presenting the Repository History

Your team presents a 10-minute walkthrough using:

```

git log --graph --oneline --all

```

This command shows the full branch graph in the terminal. Walk the class through each branch, the conflict resolution commit, the PRs, and the tag. Explain why you made each workflow decision, not just what you did. GitLens in VS Code can supplement the terminal view with a visual graph if that helps your audience follow along.

Safety and Professional Practices

Version control carries its own safety rules. Never force-push to `main` or any shared branch (`git push --force`) without team agreement—it rewrites shared history and can destroy teammates' work. Never commit secrets such as passwords, API keys, or private configuration files; use `.gitignore` and environment variables instead. If a secret is accidentally committed, rotate it immediately—deleting the file in a later commit does not remove it from history.

Keep commit messages honest and specific. A vague message like "fixed stuff" is a liability when a future teammate needs to understand what changed and why.

Key terms8

Branch protection ruleA GitHub repository setting that enforces policies on a branch, such as requiring pull request reviews before any merge is allowed, preventing direct pushes to protected branches.
Pull request (PR)A GitHub mechanism for proposing changes from one branch into another, enabling code review, discussion, and automated checks before the changes are merged.
Merge conflictA situation that occurs when two branches contain competing edits to the same part of a file, requiring a developer to manually decide which changes to keep before the merge can complete.
Conflict markerThe delimiter lines Git inserts into a conflicted file—`<<<<<<<`, `=======`, and `>>>>>>>`—to separate the two competing versions of the changed content.
Annotated tagA Git tag created with `git tag -a` that stores metadata including the tagger's name, date, and a message, making it suitable for marking official release points in a project's history.
Semantic versioningA widely used versioning convention expressed as MAJOR.MINOR.PATCH (for example, v1.0.0), where each number signals the type of changes made since the previous release.
GitHub ReleaseA GitHub feature that packages source code and assets at a specific tag and pairs them with a human-readable changelog, giving users and stakeholders a clear record of what each version contains.
git log --graph --oneline --allA Git command that displays the full commit history of all branches as a compact ASCII graph, making it easy to visualize branching, merging, and tagging decisions.
In class: Working in teams of three, students set up a shared GitHub repository with branch protection rules on main (requiring pull request reviews before merge), then each member creates a feature branch to contribute a distinct section of a static website (header, main content, footer), pushing branches and opening pull requests for peer review. · The instructor introduces a deliberate merge conflict between two feature branches by editing the same line of index.html; the team must communicate, resolve the conflict collaboratively, and document the resolution process in their lab logs, recording which Git commands they used at each step. · After all features are merged, students create a develop branch merge into main via a PR, apply a semantic version annotated tag (v1.0.0), publish a GitHub Release with a written changelog, and present a 10-minute walkthrough of their repository history and workflow decisions to the class using git log --graph --oneline --all.
Materials: GitHub shared team repository, terminal, VS Code with GitLens, lab log, presentation display, Pro Git book for reference
Check: Repository shows correct branch history, resolved conflicts, merged PRs, annotated tag, and published release; team walkthrough covers all required workflow steps; instructor rubric requires 80% of criteria met; each student's individual lab log is complete.

Practice check8

Answer each question, then check it. Nothing is recorded; this is your own practice.

CompTIA ITF+ – IT Concepts and Terminology
1. A team enables a branch protection rule on `main` that requires at least one pull request review before merging. What is the primary benefit of this rule?
CompTIA Linux+ – System Operation
2. After running `git merge origin/main` on a feature branch, a developer sees `<<<<<<<`, `=======`, and `>>>>>>>` markers in `index.html`. What do these markers indicate?
CompTIA Linux+ – System Operation
3. Which sequence of commands correctly resolves a merge conflict and updates the remote feature branch?
CompTIA ITF+ – IT Concepts and Terminology
4. A student creates a release tag with the command `git tag v1.0.0`. A teammate says this is insufficient for a formal release. What is the most likely reason?
CompTIA ITF+ – IT Concepts and Terminology
5. In semantic versioning, what does the version string `v2.1.3` communicate?
CompTIA Linux+ – System Operation
6. Which `git log` command displays all branches as a compact ASCII graph in the terminal, useful for presenting repository history to an audience?
CompTIA ITF+ – Security
7. A developer accidentally commits a file containing an API key to a shared repository. After deleting the file in a follow-up commit and pushing, what additional action is required?
CompTIA Linux+ – System Operation
8. A team member wants to push a new annotated tag `v1.0.0` to GitHub after creating it locally. Which command accomplishes this?
Record this lesson on my transcript. Sign in with your key and enrollment email to record lessons (enroll free if you have no key). This page stays open to read and practise.