GithubHelp home page GithubHelp logo

musical-couscous's Introduction

Connect the Dots in a GitHub Repository

This course will teach you skills for finding relevant conversations, commits, and projects in a repository.

โ›ณ Start

To start this course: Use this template

We recommend creating a public repository, as private repositories will use Actions minutes.
After you make your own repository, wait about 20 seconds and refresh. I will go to the next step.

Have you ever worked in a repository with a lot of history? Perhaps you've had to track down related issues and pull requests in the past, or you've had to find who committed a particular change. If you've ever found yourself in any of these situations, you'll know how important it is to navigate your workspace.

  • Who is this for: Developers, GitHub users, users new to Git, students, managers, teams.
  • What you'll learn:
    • Find relevant issues and pull requests
    • Search history to find context
    • Make connections within GitHub to help others find things
  • What you'll build: Reposity with existing commits, duplicated isssus and content defect to be fixed.
  • Prerequisites: Before you take this course, you may want to go through the Introduction to GitHub course on Learning Lab.
  • How long: This course is three steps long and takes less than 15 min to complete.
  • Projects Used: docsify, a magical documentation site generator

Welcome to this Learning Lab course about finding your way through the history of GitHub repositories. For example, you could be working in repositories with a lot of history, many collaborators, or many files.

Before you take this course, you may want to go through the [Introduction to GitHub]({{ host }}/{{ course.Owner.login }}/introduction-to-github) course on Learning Lab.

In this course, you'll learn how to do lots of things, like:

  • Find relevant issues and pull requests
  • Search history to find context
  • Make connections within GitHub to help others find things

Cross-linking issues and pull requests

GitHub has special capabilities to help reference other information on GitHub. For example, when you reference another issue or pull request by number, that number will be hyperlinked. At the same time, a cross-reference is created in the linked issue or pull request. This two-way reference helps people track the relationship of information across GitHub.

a screenshot of an issue linking to a PR, and a PR with a cross-reference to the issue

โšก Step 1: Resolve Duplicate Issues

Welcome to "Connect the dots in a GitHub repository"! ๐Ÿ‘‹

Below, you will see a reference to another issue. The other issue references this issue. The other issue appears to be a duplicate, so it would be a good idea to close it.

Creating references

When you link to another issue, a reference within GitHub is automatically created. In fact, you don't even need to include the full link. If you were to type #5 within a comment, that would turn into a link to issue or pull request number 5.

When you want to create a crosslink, try typing the title of an issue or pull request directly after you type the # symbol. GitHub will suggest issues or pull requests that will link to the right place. To learn even more, check out the Autolinked References and URLs article.

โŒจ๏ธ Activity: Find and close the cross-linked issue

  1. Navigate to the issue #1 (Welcome)
  2. Type "Duplicate of #2" as a comment and close issue #1
๐ŸŽฏ Step 2: Find a commit in history

You did Resolve Duplicate Issues! ๐ŸŽ‰

An important part of version control is the ability to look into the past. By using git blame, and finding the story behind a commit, we're able to do more than blame people for code. We're able to see the story around why a commit was made - what is the associated pull request? Who approved the pull request? What tests were run on that commit before it was merged?

The obvious reason to find things in history is to know about history. With issues and pull requests, we see a more complete story about history - not just the bare minimum.

What's git blame?

git blame is a Git functionality that shows what revision and author last modified each line of a file. Information like who made a commit, when, and even why can be found this way. If you aren't sure who introduced certain changes to a file, you can use git blame to find out. While git blame sounds rather accusatory, this can be used to understand the context around decisions.

What's a SHA?

A SHA is a reference to a specific object. In this case, it's a reference to a commit. On GitHub, you can look at a specific commit to see the changes introduced, by whom, and if they were a part of a pull request.

โŒจ๏ธ Activity: Find commit in history

  1. Navigate to the Code tab of this repository
    • Tip: start this process in a new tab, since you will need it later
  2. Click docs to navigate into the /docs directory
  3. Click _sidebar.md to view the file
  4. On the top right side of the file, click Blame to see the details of the most recent revision
  5. Click the commit message, add sidebar to documentation to see the commit details
  6. Copy the first seven characters of the SHA (the first 7 characters of the 40 character hexadecimal string listed after commit)
  7. Comment on issue #2 by adding the SHA from step 6 as a comment text and click on "Comment" button
๐Ÿ”ง Step 3: Fix a broken sidebar

Nice work finishing Find a commit in history โœจ

Thanks for finding that commit! We now know that the sidebar was indeed added, and it was done in that commit. Let's see if we can dig a little deeper to find out if any planning or conversation occurred around this change.

Context

As we've already seen, conversations in issues and pull requests can reference other work.

But the amount of context goes much further than crosslinks - Remember, Git is version control! For example, the commit that you found in the last step is connected with much more information:

  • Who made the commit
  • What other changes were included
  • When the commit was made
  • Which pull request the commit was a part of

The pull request is important because it goes beyond knowing when a commit happened - you can know why a commit happened. Finding history is not about blaming anyone, but about seeing the bigger picture. Why were decisions made? Who was involved? What were the build outputs and test results for each commit? Who requested changes, and who approved them?

A story about finding experts

Imagine you find an internal white-paper on a really exciting topic. You're looking for experts to help you research this topic for an upcoming project. When you find this article, you're ecstatic! But, there's no author referenced in the plain text.

You can see that it's written in markdown, and it's versioned in GitHub. It's already a part of the main branch, but you want to know who was involved in creating this. You use git blame to see the author(s), and you can find the pull request associated with that branch. Now, you can see who all of the authors were, who the reviewers were, and if there are any other issues or conversations related to this topic.

Just like that, you've found the people at your company who can help move your project forward. ๐ŸŽ‰

Finding a pull request from a commit

When you're looking at a commit on GitHub, you can see a lot of information. From this view, you can also find a link to the pull request in which the commit was created. We'll use this in the next step.

screenshot of a view of a commit on GitHub, highlighting the link to the pull request

โŒจ๏ธ Activity: Fix a broken sidebar

  1. In the main branch Edit the docs/_sidebar.md file
  2. Correct the spelling of the reference (doc-references__.md) on line 4 by changing it into (doc-references.md)
  3. Commit the changes on the fix-sidebar branch
  4. In the Pull requests tab, create a pull request by comparing 'main' branch to 'fix-sidebar' bramch
  5. Using the Assignees section on the right side, assign yourself to the pull request
  6. In the PR comment add 'Closing #2' and autolink issue #2
  7. Merge this pull request
  8. Delete the branch 'fix-sidebar'
๐Ÿ Finish

Congratulations friend, you've completed this course! ๐ŸŽ‰

In this course, you've learned a lot about finding and sharing information. Within a GitHub repository, you can find history about what changes were made, and more importantly, why changes were made.

What's next?


Get help: Post in our community forum โ€ข Review the GitHub status page

ยฉ 2022 GitHub โ€ข Code of Conduct โ€ข CC-BY-4.0 License

musical-couscous's People

Contributors

rmallorybpc avatar

Watchers

 avatar

musical-couscous's Issues

Welcome

GIVEN:

  • User opens _sidebar.md file

WHEN:

  • User navigates by clicking on [Documentation references] link

THEN (EXPECTED):

  • [Documentation references] page must be open successfully

OBSERVED:

  • File not found error OR GitHub reports HTTP 404 error (file not found)

Fix the sidebar

GIVEN:

  • User opens _sidebar.md file

WHEN:

  • User navigates by clicking on [Documentation references] link

THEN (EXPECTED):

  • [Documentation references] page must be open successfully

OBSERVED:

  • File not found error OR GitHub reports HTTP 404 error (file not found)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.