SovranCode
HomeCourses Git & GitHub GitHub Issues
This device
Course contentsGitHub Issues · 41 topics

1. Git Fundamentals

Git IntroductionGit Version ControlGit vs GitHubGit InstallationGit Working TreeGit RepositoryGit CommitGit .gitignoreGit Project: Learning Journal

2. Git History

Git LogGit DiffGit ResetGit RevertGit StashGit Project: Messy Repository

3. Branches & History

Git BranchGit MergeGit Merge ConflictsGit RebaseGit Cherry-PickGit TagsGit Project: Feature Branch

4. Remotes and GitHub

Git RemoteGitHub AuthenticationGitHub RepositoryGitHub ForkGitHub IssuesGitHub PagesGit Project: Two Clone Sync

5. GitHub Collaboration

GitHub Pull RequestsGitHub Code ReviewGit Branching WorkflowGitHub Branch ProtectionGitHub CollaborationGitHub ContributingGit Project: Reviewed Pull Request

6. Automation and Professional Git

GitHub ActionsGit InternalsGit RecoveryGitHub SecurityGit Project: Team Repository CIProject
Learn Git & GitHub40 complete · 1 planned

1. Git Fundamentals

Git IntroductionGit Version ControlGit vs GitHubGit InstallationGit Working TreeGit RepositoryGit CommitGit .gitignoreGit Project: Learning Journal

2. Git History

Git LogGit DiffGit ResetGit RevertGit StashGit Project: Messy Repository

3. Branches & History

Git BranchGit MergeGit Merge ConflictsGit RebaseGit Cherry-PickGit TagsGit Project: Feature Branch

4. Remotes and GitHub

Git RemoteGitHub AuthenticationGitHub RepositoryGitHub ForkGitHub IssuesGitHub PagesGit Project: Two Clone Sync

5. GitHub Collaboration

GitHub Pull RequestsGitHub Code ReviewGit Branching WorkflowGitHub Branch ProtectionGitHub CollaborationGitHub ContributingGit Project: Reviewed Pull Request

6. Automation and Professional Git

GitHub ActionsGit InternalsGit RecoveryGitHub SecurityGit Project: Team Repository CIProject
PREVIOUS LESSONGitHub Fork
NEXT LESSONGitHub Pages
4. Remotes and GitHub 55 min

GitHub Issues

Open issues that describe a problem, expected result, and reproduction steps instead of dumping a vague complaint.

What you will leave with

You will open a GitHub issue that states a problem, an expected result, and reproduction steps on a repository you own. You will not dump a vague complaint, and you will not open a pull request yet.

Issues are GitHub, not Git

GitHub Repository created a hosted project. GitHub Issues is the tracker on that GitHub page: bugs, tasks, and feature requests as conversation threads with numbers. Git stores commits. There is no git issue command. An issue does not appear in git log.

GITHUB

Issue

A numbered report on the hosted repository. It can stay open for weeks. Closing it does not rewrite history.

GIT

Commit

A snapshot in the object database. A commit message can mention #12, but Git itself does not open or close GitHub issues.

A GitHub Fork has its own Issues tab. Practice on a repository you own (the disposable remote from GitHub Repository, or your fork). Do not file practice tickets on the original project.

Do not treat Issues as a chat dump

Maintainers read reports to reproduce a failure. A one-line complaint (“broken”, “doesn’t work”) is not a lesson complete. Write enough that a stranger can see the same problem.

Search before you open a duplicate

On the GitHub Issues tab, search by keywords from the failure before you create. Duplicate reports split screenshots and workarounds across threads. If you find an existing issue, add a reproduction that is missing—do not open a second copy with the same title.

gh issue list shows open issues for the GitHub repository of the current directory. Filter before you type a new title.

QUICK CHECK

Test what you learned

Type the GitHub CLI command that lists issues for this repository.

Problem, expected result, reproduction

A useful bug issue has three parts a stranger can use:

Problem

What happens now, on which screen or command, including the exact error text if there is one.

Expected result

What should happen instead. Without this, “broken” could mean anything.

Reproduction

Numbered steps from a known starting point. Include URL, account state, and browser or OS when it matters.

Title

A specific sentence, not a mood. “Save ignores the first click on /settings” beats “help”.

## Problem
The Save button on /settings does nothing on the first click. A second click stores the name.

## Expected result
One click should save and show "Saved".

## Reproduction
1. Open https://example.test/settings while signed in.
2. Change the display name to "Ada".
3. Click Save once.
4. Reload. The name is still the previous value.

## Environment
Chrome 128, macOS, public demo account.

Feature requests still need a problem and an expected result. “Add dark mode” is thinner than “Night-shift users cannot read the contrast on the settings form; expected a theme that keeps body text above WCAG AA.” Tasks (“write the README clone section”) can be shorter, but they still name the done state.

Create the issue on a repo you own

# From a clone of a GitHub repository YOU own
gh issue create --title "Save button ignores the first click on /settings" --body "$(cat <<'EOF'
## Problem
The Save button on /settings does nothing on the first click.

## Expected result
One click should save and show Saved.

## Reproduction
1. Open /settings while signed in.
2. Change the display name.
3. Click Save once.
4. Reload. The previous name is still stored.
EOF
)"

The website New issue button is the same object: title plus body on that GitHub repository. Use gh issue create from a clone whose origin is a repository you can write to. If GitHub offers a template, fill the template; do not delete the sections that ask for reproduction.

QUICK CHECK

Test what you learned

Type the GitHub CLI command that opens an issue (title and body flags come after).

# Do not file this. It has no expected result and no reproduction.
gh issue create --title "broken" --body "it doesn't work please fix"

That command “works” and still fails the lesson. GitHub will store the issue. Nobody can reproduce it. Rewrite it with an expected result and numbered steps before you call the report done.

List, view, and close without a pull request

gh issue list
gh issue view 1
gh issue close 1 --comment "Cannot reproduce on main after clearing localStorage."

gh issue view 1 prints the body so you can check whether a stranger would understand it. Close an issue from the GitHub UI or with gh issue close when the problem is gone or was never real. Linking a later pull request with Closes #12 is a GitHub convention taught in GitHub Pull Requests; this workshop stops at a complete report you can close by hand.

Contribution is not this lesson

Issues track work. Returning a change through review is GitHub Pull Requests. Do not open a pull request to “finish” the issue.

What not to put in an issue

Secrets

Tokens, passwords, and private keys do not belong in a public tracker. Redact them the way Git .gitignore taught for commits.

Other people's projects

Practice tickets on a popular repository are spam. Use the disposable GitHub repository you created earlier.

Personal attacks

Describe behavior and impact. Issues are public on a public repository.

A patch disguised as a report

Paste reproduction, not a demand to merge your unreviewed change. The code review path comes later.

Guided practice: one complete report

  1. 01
    Pick a repository you own

    Use the practice remote from GitHub Repository, or another public repo under your account. Confirm git remote -v points at that URL.

  2. 02
    Search and list

    Run gh issue list. Open the Issues tab in the browser. Confirm you are not about to duplicate an existing thread.

  3. 03
    Write the three parts

    Problem, expected result, numbered reproduction. Invent a realistic bug on that disposable repo if the project has none.

  4. 04
    Create and read it back

    gh issue create or New issue. Then gh issue view and ask whether a stranger could follow the steps.

  5. 05
    Close it yourself

    This is practice. Close the issue with a one-line comment. Do not open a pull request.

Independent lab: issue report

  1. On a GitHub repository you own, search existing issues, then open one new issue.
  2. The body must include a problem, an expected result, and numbered reproduction steps.
  3. Show gh issue list including that issue, and gh issue view of its number.
  4. Write four lines: repository URL, issue number, why the title is specific, and which GitHub page is not a Git command.
  5. Close the practice issue. Do not file it on a project you do not maintain, and do not open a pull request.
Definition of done

You can explain that issues are GitHub, write a report with an expected result and reproduction, list issues with gh issue list, and keep practice tickets on a repository you own.

Common issue mistakes

Calling an issue a commit

Commits are Git. Issues are GitHub tracker items. Closing an issue does not delete a commit.

Vague complaint

“It doesn’t work” has no expected result and no reproduction. Rewrite it.

Practicing on a stranger’s repo

That is noise. Use a repository you created or a fork you control.

Opening a pull request to finish the lab

The issue is the report. Review and merge are the next collaboration lessons.

Lesson review

You can open a GitHub issue that a stranger can act on, keep Git commits distinct from the tracker, and practice without spamming another project. The next lesson publishes a static site with GitHub Pages.

  • I know a GitHub issue is a tracker item, not a Git command or a commit.
  • I can write a problem, expected result, and reproduction instead of a vague complaint.
  • I can gh issue list, gh issue create, and gh issue view on a repository I own.
  • I do not file practice issues on projects I do not maintain, and I do not open a pull request in this lesson.

Related lessons

  • GitHub Repository — Issues live on the hosted repository.
  • GitHub Fork — Practice issues on a repository you own, not on someone else's project.
  • GitHub Pull Requests — Link the change that closes the issue.
  • GitHub Pages — Issues track work; Pages hosts a static site on the same GitHub repository.
  • GitHub Collaboration — Templates keep issue reports complete without rewriting the same prompts.
KNOWLEDGE CHECK

Check your GitHub Issues model

Separate issues from Git commits, write a report with an expected result and reproduction, and practice on a repository you own.

01What is a GitHub issue?
02What three parts should a useful bug issue include?
03Where should you open practice issues for this lesson?
04Does git commit create a GitHub issue?
05Why search existing issues before opening a new one?
06What is wrong with an issue titled broken and a body that says it doesn't work?
07Which command lists issues on the GitHub repository for the current directory?
PREVIOUS LESSONGitHub Fork
NEXT LESSONGitHub Pages
ON THIS PAGEGitHub IssuesIssues are GitHub, not GitSearch before you open a duplicateProblem, expected result, reproductionCreate the issue on a repo you ownList, view, and close without a pull requestWhat not to put in an issueGuided practice: one complete reportIndependent lab: issue reportCommon issue mistakesLesson reviewKnowledge checkRelated lessons
Course contents