Pulled, pushed, merged? I used to feel lost too


Hi Reader,

Have you ever felt lost while asking your engineers if they have already pulled, pushed, or merged their code? I have πŸ™‹πŸ»β€β™€οΈ What if I tell you that learning this once and for all will take you only 20 mins? And much more confidence going forward. If you like that, today's issue is for you.

Today in 20 minutes you will:

  • Why code repositories matter to PMs (even if you never write code)
  • What Git and GitHub are (and why they're not the same thing)
  • The 9 words your developers use every day, and what they sound like in standup
  • Create your first repo, open a pull request, and merge it
    ​

Why PMs even need to care about code repositories?

Depending on your context you might work less or more with code repos. In my context of small understaffed teams, I had to learn and interact much with it.

Because as a PM you care

β†’ that all work gets properly stored

β†’ versions do not get mixed up

β†’ we can always trace back to what caused an issue in the code

β†’ if new teammate joins, they are able to understand the software

β†’ your engineers can work simultaneously

β†’ and you can also understand what's the current status, next step, and issue when it arises.

And all of these things you care about are done by code repositories like GitHub, which allow you to store your code, do history versioning, and have a code change review process.

Once you can read your repo:

β†’ You see what actually changed, not just what the ticket said

β†’ You can use PR descriptions to write release notes

β†’ You can keep up with AI tools like GitHub Copilot, which can now open pull requests on their own. Someone still decides what gets merged

What's even GitHub (Git, GitLab, etc.)?

Start with the problem these tools solve.

Imagine five engineers changing the same product at the same time.

Without a system, someone overwrites someone else's work. Nobody knows which version is the latest. And when something breaks, nobody can tell what changed.

That's why teams use two things together.

A code repository is one shared place where all the code for a product lives. Plus everything around it, like docs and configuration.

Version control (or history versioning) records every change to that code: what changed, who changed it, when, and why.

Think of Google Docs version history, but for a whole product, and much stricter.

Now the tools. Each one covers part of that job.

Git does the version control. It's the tool that records every change, and it's by far the most common one.

GitHub hosts the repository online, so the whole team works from one shared place. On top of that, it adds what a team needs to work together: reviews, comments, tickets, automation.

GitLab, Bitbucket, and Azure DevOps Repos do the same job as GitHub. Your company might use one of those instead.

The buttons have different names. The concepts are identical. So everything you learn today carries over.

Simple way to think about it:

β†’ Repository = where the code lives

β†’ Git = records every change (version control)

β†’ GitHub (or GitLab, etc.) = the online home for the repo, plus a place for the team to discuss and approve changes

The 9 words your developers use every day

If you've used Google Docs, you already understand most of this.

Repository (repo): The project folder where the code and its full history live.

README: The front page of a repo. A text file explaining what the project is and how to use it. Always the first thing to read.

Branch: Your own copy of the project, so you can work without touching the real thing. Like duplicating a doc before a big rewrite.

Main: The official version. What's on main is what the team treats as the truth.

Commit: A saved change with a short message explaining what changed and why. One entry in version history, with a note attached.

Push: Uploading your commits from your laptop to GitHub so the team can see them. The opposite is pull: downloading the changes others pushed.

Pull request (PR): A request to bring the changes from your branch into main. This is where review happens. Think "suggesting mode": nothing changes until someone accepts.

Merge: Accepting the pull request. The changes become part of main.

Merge conflict: Two people changed the same lines in different ways, and Git can't decide which version wins. A human has to pick.

What this sounds like in standup

The flow your team runs every day:

Branch β†’ Commits β†’ Push β†’ Pull request β†’ Review β†’ Merge β†’ Deploy

Each step has a status you hear about:

β†’ "I'm working on a branch" = work in progress, nobody else sees it yet

β†’ "I pushed it" = it's online on a branch, but not in main yet

β†’ "The PR is open" = done from the developer's side, waiting for review

β†’ "It's in review" = a teammate is checking it. Comments can send it back

β†’ "It's merged" = it's in main. But merged doesn't always mean live. Depending on your pipeline, deployment can be a separate step

β†’ "I have a merge conflict" = someone else changed the same thing. Usually a small delay, sometimes a bigger conversation

Your turn: build your first repo

15 minutes. No code. Everything happens in the browser.

Before you start:

β†’ Create a free account at github.com if you don't have one

β†’ Use a personal account, and keep company information out of it

The idea: you'll create a repo for a pretend product, write a short product brief in the README, and then change it the way developers change code.

Branch. Commit. Pull request. Merge.

Step 1: Create a repository

β†’ In the top right corner, click the + icon, then New repository

β†’ Name it pm-playground

β†’ Choose Private (only you can see it)

β†’ Select "Add a README file"

β†’ Click Create repository

You now have a repo with one file and one branch: main.

Step 2: Make your first commit

β†’ Click README.md, then the pencil icon to edit it

β†’ Write a 3-line product brief for anything you like. A coffee ordering app, a team lunch planner. Problem, user, goal

β†’ Click Commit changes

β†’ Commit message: "Add first product brief"

β†’ Keep "Commit directly to the main branch" selected and confirm

That's a commit. A saved change, with a note on why.

Because you're working on github.com, there's no separate push. Commit and push happen in one click.

Step 3: Create a branch

β†’ Click the dropdown above the file list that says main

β†’ Type update-brief

β†’ Click "Create branch: update-brief from main"

You're now on your own copy. Main is untouched.

Step 4: Change something on your branch

β†’ Check the dropdown says update-brief

β†’ Open README.md and click the pencil

β†’ Add one line: a success metric. For example, "Success: half the team uses it every week"

β†’ Commit changes with the message "Add success metric"

Step 5: Open a pull request

β†’ Go to the Pull requests tab and click New pull request

β†’ Compare update-brief with main

β†’ Look at the diff. Green lines were added, red lines were removed. This is exactly what your developers review

β†’ Click Create pull request, add a title and a one-line description, then click Create pull request again

Tip: GitHub often shows a yellow "Compare & pull request" banner right after you commit to a new branch. It takes you to the same place.

Step 6: Review your own PR

β†’ Open the Files changed tab

β†’ Hover over your new line, click the blue +, and leave a comment. For example: "Is half the team realistic?"

That's a code review. Someone reads the change line by line and asks questions before it goes in.

Step 7: Merge

β†’ Go back to the Conversation tab

β†’ Click Merge pull request, then Confirm merge

β†’ Click Delete branch. The work is in main now, the branch did its job

β†’ Open the Code tab. Your success metric is on main

That's it.

You just ran the same workflow your developers use every day. YOU DIT IT!

​
​
​

What do you think?

Did you try the exercise?

Hit reply and tell me how far you got. Or send me a screenshot of your first merged PR, I'd love to see it.

See you next week,

Maria

Frankfurt am Main, 60311, Germany
​Unsubscribe Β· Preferences​

Maria Korteleva

Hi, I’m Maria. For the past 7 years, I’ve been building internal products across FMCG and tech companies.Now, I share everything I’ve learned to help junior PMs master delivery from technical skills to stakeholder communication. Join 200+ Internal PMs who get weekly insights from the Build Internal Products newsletter.

Read more from Maria Korteleva

Hi Reader, You know that feeling of β€œyou don’t know what you don’t know”? You get it always when you start building a new system or a complex feature. And you’re just thinking: how are we supposed to know how to build this if we’ve never built it before? As someone who likes to control things (yes, that’s me), I tried my best to find an answer. Of course, very predictably, there is no answer. We can’t predict many of the technical issues that will come our way. But that doesn’t mean we should...

Hi Reader, Have you ever heard of the Jobs-to-be-Done framework? You probably did. And like you, I have heard of the interpretations of it, and I thought I got it. It's an easy concept. But with the new small internal tool I am building, I have decided to actually implement it, and see if it could help me organize messy requirements into a clear picture. So if you are currently managing a product, and need some ability to actually map out what it's meant for, this newsletter is for you! P.S....

Hi Reader, Building apps has never been easier. I can prove it. I built a working app for the hands-on API workshop I held two weeks ago. Took me 3 hours, spread across 4 rounds of getting it right. If you've ever wanted to do a quick, scrappy first build and actually put it in front of other people, this one's for you. Today in 10 minutes you will: See why I built my own app instead of grabbing something off the shelf Get the process I actually followed, from idea to a public link See the...