feat: clean roadmap content and sync scripts (#10181)

* refactor: clean to roadmap content

* refactor: move shared helpers into scripts/lib
This commit is contained in:
Arik Chakma
2026-07-28 05:45:17 +06:00
committed by GitHub
parent 6f745dc1ea
commit 274082fd77
12643 changed files with 440 additions and 537705 deletions
@@ -0,0 +1,7 @@
# --hard
`git reset --hard` moves the branch pointer to a specified commit and resets both the staging area and working directory to match it exactly. Any changes in commits after that point, as well as any uncommitted work, get permanently discarded. This is one of the more destructive Git commands, so it should be used carefully since undone changes can be difficult to recover.
Visit the following resources to learn more:
- [@official@--hard documentation](https://git-scm.com/docs/git-reset#Documentation/git-reset.txt---hard)
@@ -0,0 +1,7 @@
# --mixed
When using mixed mode, the HEAD pointer is moved to the specified commit. However, files in your working directory remain as they were before the reset. The staging area (index) is updated to match the specified commit.
Visit the following resources to learn more:
- [@official@--mixed documentation](https://git-scm.com/docs/git-reset#Documentation/git-reset.txt---mixed)
@@ -0,0 +1,7 @@
# --soft
`git reset --soft` moves the branch pointer to a specified commit while leaving the staging area and working directory untouched. This means all changes from the undone commits remain staged, ready to be recommitted differently. It's useful for combining multiple commits into one without losing any changes.
Visit the following resources to learn more:
- [@official@--soft documentation](https://git-scm.com/docs/git-reset#Documentation/git-reset.txt---soft)
@@ -0,0 +1,8 @@
# Adding / Updating
To add a submodule to a repository, use `git submodule add https://github.com/user/submodule-repo.git`, which is the typical format for specifying the URL of the submodule repository. This creates a new folder for the submodule and checks it out at the specified revision. To update an existing submodule to its latest commit, run `git submodule update`. If you want to pull in changes from upstream while keeping your submodule's history intact, use `git submodule sync` followed by `git submodule update`.
Visit the following resources to learn more:
- [@article@Git submodules](https://www.atlassian.com/git/tutorials/git-submodule)
- [@article@Working with submodules](https://github.blog/open-source/git/working-with-submodules/)
@@ -0,0 +1,8 @@
# Automations
To add automation to your GitHub project, use built-in workflows that can trigger actions such as setting fields on item changes or archiving items meeting specific criteria, and also configure automatic item addition from repositories based on matching criteria.
Visit the following resources to learn more:
- [@official@Automating your project](https://docs.github.com/en/issues/planning-and-tracking-with-projects/automating-your-project)
- [@video@GitHub Project Management - Create GitHub Project Board & Automations](https://www.youtube.com/watch?v=oPQgFxHcjAw&t=600s)
@@ -0,0 +1,8 @@
# Between Branches
When comparing the differences between two branches, such as a feature branch and its upstream parent branch, use `git diff <branch1>..<branch2>`. This command displays the changes made on the feature branch relative to the parent branch. It's useful for reviewing the impact of new features or changes before merging them into your mainline.
Visit the following resources to learn more:
- [@article@How to compare branches in Git diff](https://scribehow.com/shared/How_to_Compare_Branches_in_GitHub__xsotezV-S1O-GL0PquqJwQ)
- [@article@How can I see the differences between two branches?](https://stackoverflow.com/questions/9834689/how-can-i-see-the-differences-between-two-branches)
@@ -0,0 +1,8 @@
# Between Commits
To compare two specific commits in your Git history, use git diff followed by the hashes of the commits. This will show you the changes made between those two points, including added, modified, and deleted lines.
Visit the following resources to learn more:
- [@article@Comparing changes with Git diff](https://refine.dev/blog/git-diff-command/)
- [@video@Git Diff 2 Different Commits, Tags or Branches](https://www.youtube.com/watch?v=uq5VWPDCtFo)
@@ -0,0 +1,8 @@
# Branch Naming
Branch naming conventions give structure to how branches are labeled, often including a prefix like `feature/`, `bugfix/`, or `hotfix/` followed by a short description. Consistent naming makes it easy to identify a branch's purpose at a glance and helps automate workflows that trigger based on branch name patterns. Teams often document their convention in a contributing guide so everyone follows the same format.
Visit the following resources to learn more:
- [@article@Naming conventions for Git Branches — a Cheatsheet](https://medium.com/@abhay.pixolo/naming-conventions-for-git-branches-a-cheatsheet-8549feca2534)
- [@article@Git Branching Naming Convention: Best Practices to Follow](https://phoenixnap.com/kb/git-branch-name-convention)
@@ -0,0 +1,9 @@
# Branching Basics
Branches in Git serve as separate lines of development that allow multiple features or changes to be worked on simultaneously without affecting the main codebase. With branches, you can create isolated environments for different tasks, collaborate with others, and manage complex workflows.
Visit the following resources to learn more:
- [@official@Git Branching - Basic Branching and Merging](https://git-scm.com/book/en/v2/Git-Branching-Basic-Branching-and-Merging)
- [@article@Learn Git Branching](https://learngitbranching.js.org/)
- [@video@Git Branches Tutorial](https://www.youtube.com/watch?v=e2IbNHi4uCI)
@@ -0,0 +1,8 @@
# Caching Dependencies
Caching dependencies in GitHub Actions stores files like package manager directories between workflow runs, avoiding the need to reinstall them from scratch every time. The `actions/cache` action saves and restores these files based on a key, often derived from a lockfile's hash. This significantly speeds up workflows that install the same dependencies repeatedly across multiple runs.
Visit the following resources to learn more:
- [@official@Caching dependencies to speed up workflows](https://docs.github.com/en/actions/writing-workflows/choosing-what-your-workflow-does/caching-dependencies-to-speed-up-workflows)
- [@video@Cache Management with GitHub actions](https://www.youtube.com/watch?v=7PVUjRXUY0o)
@@ -0,0 +1,7 @@
# Campus Program
The GitHub Campus Program offers GitHub Enterprise Cloud and GitHub Enterprise Server free-of-charge for schools that want to make the most of GitHub for their community. This program provides access to a comprehensive set of developer tools, as well as resources and support to help students and educators build projects, collaborate, and develop skills in software development.
Visit the following resources to learn more:
- [@official@About GitHub Campus Program](https://docs.github.com/en/education/explore-the-benefits-of-teaching-and-learning-with-github-education/use-github-at-your-educational-institution/about-github-campus-program)
@@ -0,0 +1,9 @@
# Checkout Branch
In Git, to "checkout" from a branch means to switch your working directory to that branch, making it the active branch. This updates your files to match the state of that branch and allows you to work on it.
Visit the following resources to learn more:
- [@official@git-checkout](https://git-scm.com/docs/git-checkout)
- [@article@git-commands-checkout](https://www.git-tower.com/learn/git/commands/git-checkout)
- [@video@Git Checkout. Different ways of using the checkout command in the Git Project](https://youtu.be/h_PIHOFUYuw?si=tebKCCb5U3ues0Io)
@@ -0,0 +1,9 @@
# Checkout Tags
Tags in Git are typically used to mark specific points in history, such as a release version. Checking out a tag means switching your working directory to the state of the repository at the point in time when that tag was created.
Visit the following resources to learn more:
- [@article@How To Checkout Git Tags](https://devconnected.com/how-to-checkout-git-tags/)
- [@article@What is git tag, How to create tags & How to checkout git remote tag(s)](https://stackoverflow.com/questions/35979642/what-is-git-tag-how-to-create-tags-how-to-checkout-git-remote-tags)
- [@video@Git Tag Tutorial | Create, Checkout, and Delete Git Tags | Learn Git](https://youtu.be/spkUevg1NqM?si=UXRwJEOI6bpN30nM)
@@ -0,0 +1,9 @@
# Cherry Picking Commits
Cherry-picking in Git allows you to apply a specific commit from one branch to another, without merging the entire branch. This is useful when you want to bring in a specific feature or fix from one branch to another without incorporating all the changes from the source branch.
Visit the following resources to learn more:
- [@official@git-cherry-pick docs](https://git-scm.com/docs/git-cherry-pick)
- [@article@Git Cherry Pick](https://www.atlassian.com/git/tutorials/cherry-pick)
- [@video@Git Cherry Pick - Tutorial](https://youtu.be/i657Bg_HAWI?si=3jjn2X8Hi1na--F4)
@@ -0,0 +1,7 @@
# CITATION files
You can add a CITATION.cff file to the root of a repository to let others know how you would like them to cite your work. The citation file format is plain text with human- and machine-readable citation information.
Visit the following resources to learn more:
- [@official@CITATION Files Documentation](https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-citation-files)
@@ -0,0 +1,8 @@
# Clean Git History
A clean Git history means commits are logically organized, well described, and free of unnecessary noise like "fix typo" or "WIP" messages. Techniques like squashing commits, rebasing, and writing clear commit messages all contribute to keeping history readable. A clean history makes it easier to trace when and why a specific change was introduced.
Visit the following resources to learn more:
- [@article@Clean GIT history — a Step by Step Guide](https://medium.com/@catalinaturlea/clean-git-history-a-step-by-step-guide-eefc0ad8696d)
- [@video@Git Best Practice Tip: Clean Commit History](https://youtu.be/bZpiVijzd2g?si=8lJTlR3LfY9ZUd77)
@@ -0,0 +1,9 @@
# Client vs Server Hooks
Like many other Version Control Systems, Git has a way to fire off custom scripts when certain important actions occur. There are two groups of these hooks: client-side and server-side. Client-side hooks are triggered by operations such as committing and merging, while server-side hooks run on network operations such as receiving pushed commits.
Visit the following resources to learn more:
- [@official@Git Hooks](https://git-scm.com/book/en/v2/Customizing-Git-Git-Hooks#:~:text=There%20are%20two%20groups%20of,for%20all%20sorts%20of%20reasons.)
- [@article@Git Hooks: The Powerful Tool You're Probably Not Using](https://dev.to/algodame/git-hooks-the-powerful-tool-youre-probably-not-using-but-should-be-1lec)
- [@video@Client vs Server Hooks](https://youtu.be/egfuwOe8nXc?si=IkbLCr-3eGE9x6cY)
@@ -0,0 +1,10 @@
# Cloning Repositories
Cloning a repository in Git and GitHub involves creating a local copy of a remote repository on your computer. This allows you to work on the project locally, commit changes, and later push those changes back to the remote repository.
Visit the following resources to learn more:
- [@official@git clone](https://git-scm.com/docs/git-clone)
- [@official@Cloning a Repository](https://docs.github.com/en/repositories/creating-and-managing-repositories/cloning-a-repository)
- [@article@Clone a Git Repository](https://www.atlassian.com/git/tutorials/setting-up-a-repository/git-clone)
- [@video@Cloning Remote Repository into local machine](https://youtu.be/xeQih8LVtZM?si=djlyTDpLNS0oyqQH)
@@ -0,0 +1,8 @@
# Code Reviews
A code review is the process of examining proposed changes in a pull request before they get merged, checking for bugs, style issues, or design concerns. Reviewers can leave comments on specific lines, approve the changes, or request modifications before approval. Code reviews help catch problems early and share knowledge of the codebase across a team.
Visit the following resources to learn more:
- [@article@A practical guide for better, faster code reviews](https://github.com/mawrkus/pull-request-review-guide)
- [@article@How to improve code with code reviews](https://github.com/resources/articles/software-development/how-to-improve-code-with-code-reviews)
@@ -0,0 +1,9 @@
# Collaboration on GitHub
Collaboration on GitHub is a powerful way for multiple people to work together on the same project, using Git as the version control system. GitHub provides various tools and workflows that make collaboration efficient and organized.
Visit the following resources to learn more:
- [@official@How to collaborate in a GitHub project](https://gist.github.com/neklaf/9002d3acccf6b6e448db5c4c4e8764c0)
- [@article@Best Practices for collaborating in github](https://www.gitkraken.com/blog/collaborate-on-github)
- [@article@Working with GitHub in VS Code](https://code.visualstudio.com/docs/sourcecontrol/github)
@@ -0,0 +1,8 @@
# Collaborators / Members
In GitHub, collaborators and members refer to individuals who contribute to or have access to your repository. Collaborators are users who have been granted permission to contribute code, make changes, and push updates to your repository, whereas members are the owners of a repository, including organization owners who have full control over their team's repositories. Members can be either individual collaborators or part of an organization team, with varying levels of access and permissions based on their role within the team.
Visit the following resources to learn more:
- [@official@REST API endpoints for collaborators](https://docs.github.com/en/rest/collaborators/collaborators?apiVersion=2022-11-28)
- [@article@Inviting collaborators to a personal repository](https://docs.github.com/en/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-access-to-your-personal-repositories/inviting-collaborators-to-a-personal-repository)
@@ -0,0 +1,10 @@
# Collaborators
Collaborators in GitHub are users who have been granted direct access to a repository by the repository owner or organization administrators. Collaborators can perform actions like pushing commits, creating branches, and managing issues or pull requests, depending on the permissions granted to them. They are typically added to private repositories or to public repositories where more control over contributions is needed.
Visit the following resources to learn more:
- [@official@How to add collaborators to your personal projects](https://docs.github.com/en/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-access-to-your-personal-repositories/inviting-collaborators-to-a-personal-repository)
- [@official@Adding outside collaborators to repositories in your organization](https://docs.github.com/en/organizations/managing-user-access-to-your-organizations-repositories/managing-outside-collaborators/adding-outside-collaborators-to-repositories-in-your-organization)
- [@article@How to Add Collaborators to Your GitHub Repository](https://www.blinkops.com/blog/how-to-add-collaborators-to-your-github-repository)
- [@video@Using GitHub for Team collaboration](https://youtu.be/4nyIS58ORWw?si=yK5LCONNVm9OIUK5)
@@ -0,0 +1,10 @@
# Commit Messages
A Git commit message is a brief explanation of the changes introduced in a particular commit. It helps others (and your future self) understand the purpose of the changes and the context behind them. Writing clear and informative commit messages is an important practice for maintaining a well-organized and easily navigable project history.
Visit the following resources to learn more:
- [@article@How to Write Better Git Commit Messages](https://www.freecodecamp.org/news/how-to-write-better-git-commit-messages/)
- [@article@Writing good commit messages](https://www.theodinproject.com/lessons/foundations-commit-messages)
- [@video@Write git commit messages like a PRO with Conventional Commits](https://youtu.be/OJqUWvmf4gg?si=Fgl3isZpP13jYXHP)
- [@video@How to Make Actually Good Commits in Git](https://youtu.be/Dy5t_H2PRrk?si=0V-JEbqphpJX5OLl)
@@ -0,0 +1,8 @@
# commit-msg
The commit-msg hook is a client-side hook that runs after you enter a commit message, but before the commit is finalized in your repository. It's typically used to validate or modify the commit message before it's recorded in the Git history.
Visit the following resources to learn more:
- [@article@A Git-Hook for Commit Messages Validation - No Husky, Just JS](https://dev.to/mbarzeev/a-git-hook-for-commit-messages-validation-no-husky-just-js-1hni)
- [@video@Git Hooks Made Easy: Create a Custom 'commit-msg' Hook Script](https://www.youtube.com/watch?v=yH1lBm5t97s)
@@ -0,0 +1,10 @@
# Committing Changes
Committing saves a snapshot of the staged changes to the repository's history, along with a message describing what was changed and why. Each commit gets a unique hash that identifies it and allows Git to track the exact state of the project at that point. Commits build the timeline that developers can browse, compare, or revert to later.
Visit the following resources to learn more:
- [@course@Staging Area (Interactive Lesson)](https://inter-git.com/lessons/adding-files-to-index)
- [@course@Making a Commit (Interactive Lesson)](https://inter-git.com/lessons/making-a-commit)
- [@official@How git commit works](https://github.com/git-guides/git-commit)
- [@article@Git commit](https://www.atlassian.com/git/tutorials/saving-changes/git-commit)
@@ -0,0 +1,10 @@
# Contribution Guidelines
Contribution guidelines are essential for collaborative projects on GitHub as they help streamline collaboration, set expectations for contributions, and maintain the project's quality and consistency.
Visit the following resources to learn more:
- [@official@Setting Guidelines for Repository Contributors](https://docs.github.com/articles/setting-guidelines-for-repository-contributors)
- [@official@Contributing Guidelines](https://github.blog/news-insights/contributing-guidelines/)
- [@official@Contributing Guides: A Template](https://github.com/nayafia/contributing-template)
- [@article@How to Build a CONTRIBUTING.md](https://mozillascience.github.io/working-open-workshop/contributing/)
@@ -0,0 +1,7 @@
# Creating Account
To get started with GitHub, you'll need to create a free personal account on [GitHub.com](http://GitHub.com) and verify your email address. Every person who uses [GitHub.com](http://GitHub.com) signs in to a personal account. Your personal account is your identity on [GitHub.com](http://GitHub.com) and has a username and profile.
Visit the following resources to learn more:
- [@official@Creating an Account on GitHub](https://docs.github.com/en/get-started/start-your-journey/creating-an-account-on-github)
@@ -0,0 +1,7 @@
# Creating Apps
GitHub Apps are a way to integrate with the GitHub platform programmatically, using either the REST API or GraphQL API. They allow developers to create custom integrations that can automate tasks, provide real-time notifications, and build custom workflows.
Visit the following resources to learn more:
- [@official@Creating GitHub Apps](https://docs.github.com/en/apps/creating-github-apps)
@@ -0,0 +1,8 @@
# Creating Branch
Creating a branch in Git is a fundamental part of working with version control, allowing you to work on different features or fixes without affecting the main codebase. You can create branches either through the terminal or github interface
Visit the following resources to learn more:
- [@official@Git branch documentation](https://git-scm.com/docs/git-branch)
- [@article@Git branch](https://www.atlassian.com/git/tutorials/using-branches)
@@ -0,0 +1,7 @@
# Creating Repositories
Creating a Git repository means setting up a system to track changes in your project's files over time. This is crucial for version control, allowing you to manage, review, and collaborate on code efficiently.
Visit the following resources to learn more:
- [@official@Quickstart for repositories - GitHub Docs](https://docs.github.com/en/repositories/creating-and-managing-repositories/quickstart-for-repositories)
@@ -0,0 +1,8 @@
# Custom Domains
On GitHub Pages, users can customize their site's URL by connecting a custom domain to their repository. This feature allows users to use their own domain name instead of the default [GitHub.io](http://GitHub.io) subdomain, giving their site a more professional and personalized look.
Visit the following resources to learn more:
- [@official@Configuring a Custom Domain for Your GitHub Pages Site](https://docs.github.com/en/pages/configuring-a-custom-domain-for-your-github-pages-site)
- [@video@How to Host a Website on GitHub Pages Free (Custom Domain Setup Included)](https://www.youtube.com/watch?v=e5AwNU3Y2es&t=156s)
@@ -0,0 +1,8 @@
# Deleting Branch
Deleting a Git branch means removing a line of development from your Git repository. A branch in Git is essentially a pointer to a specific commit, representing an independent line of development. When you delete a branch, you’re removing this pointer, making that line of development no longer accessible through the branch name.
Visit the following resources to learn more:
- [@official@Creating and deleting branches within your repository](https://docs.github.com/articles/creating-and-deleting-branches-within-your-repository)
- [@article@How to Delete a Git Branch Both Locally and Remotely](https://www.freecodecamp.org/news/how-to-delete-a-git-branch-both-locally-and-remotely/)
@@ -0,0 +1,7 @@
# Deploying Static Websites
Deploying static websites on GitHub Pages involves uploading and serving website content that is generated beforehand, without dynamic functionality. This approach allows for fast deployment, low maintenance, and improved security.
Visit the following resources to learn more:
- [@video@How to Host a Website on GitHub Pages Free (Custom Domain Setup Included)](https://www.youtube.com/watch?v=e5AwNU3Y2es)
@@ -0,0 +1,8 @@
# Detached HEAD
A detached HEAD state occurs when HEAD points directly to a specific commit instead of a branch, typically after checking out a commit hash or tag. Any new commits made in this state aren't attached to a branch, so they can be lost once another branch is checked out unless a new branch is created to save them. This state is often used to inspect old commits without affecting the current branch.
Visit the following resources to learn more:
- [@article@How to resolve detached HEAD state in Git](https://graphite.dev/guides/how-to-resolve-detached-head-state-in-git)
- [@video@Head & Detached Head](https://www.youtube.com/watch?v=HvDjbAa9ZsY)
@@ -0,0 +1,7 @@
# Documentation
Documentation covers the written materials that explain how a project works, how to use it, and how to contribute to it. This includes README files, wikis, and citation files, all of which help users and contributors understand a repository without needing to read through all the source code. Good documentation is often what determines whether an open source project gets adopted or contributed to.
Visit the following resources to learn more:
- [@article@How to Manage Documentation in a GitHub Repository: A Guide for Junior Developers](https://dev.to/mochafreddo/how-to-manage-documentation-in-a-github-repository-a-guide-for-junior-developers-pgo)
@@ -0,0 +1,10 @@
# Fast-Forward vs Non-FF
A fast-forward merge happens when the target branch has no new commits since the feature branch was created, so Git simply moves the branch pointer forward without creating a new commit. A non-fast-forward merge occurs when both branches have diverged, requiring Git to create a dedicated merge commit that ties the two histories together. Developers can force a merge commit even when a fast-forward is possible by using `git merge --no-ff`, which some teams prefer for a clearer history.
Visit the following resources to learn more:
- [@article@Git Fast-Forward VS Non-Fast-Forward](https://leimao.github.io/blog/Git-Fast-Forward-VS-Non-Fast-Forward/)
- [@article@Difference between a git fast forward and no fast forward](https://gist.github.com/moraisaugusto/1fa02c49b6d9833fcdf665505595ac2e)
- [@video@GIT Fast Forward Visualized](https://youtu.be/DN1fNYoJgDw?si=_TZKACj4SCOuESGm)
- [@video@git merge no fast forward](https://youtu.be/X_8atqzsO8U?si=e9hMQg_aWLRMWf4O)
@@ -0,0 +1,9 @@
# Fetch without Merge
`git fetch` downloads new commits, branches, and tags from a remote repository without merging them into the local branch. It updates the remote-tracking branches, like `origin/main`, so the developer can inspect incoming changes before deciding to merge or rebase them. This makes fetch a safer way to check for updates compared to `git pull`, which fetches and merges in one step.
Visit the following resources to learn more:
- [@official@Git Fetch](https://git-scm.com/docs/git-fetch)
- [@article@Git fetch](https://www.atlassian.com/git/tutorials/syncing/git-fetch)
- [@video@Git Fetch | What is Git Fetch and How to Use it | Learn Git](https://www.youtube.com/watch?v=uEEcw1s_wWk)
@@ -0,0 +1,10 @@
# Forking vs Cloning
Forking creates a personal copy of someone else's repository under the user's own GitHub account, allowing changes without affecting the original project. Cloning downloads a copy of a repository, whether it's the original or a fork, to a local machine for editing. Contributors typically fork a repository first, then clone their fork locally, so changes can eventually be proposed back to the original project through a pull request.
Visit the following resources to learn more:
- [@official@The difference between forking and cloning a repository](https://github.com/orgs/community/discussions/35849)
- [@article@Git fork vs. clone: What's the difference?](https://www.theserverside.com/answer/Git-fork-vs-clone-Whats-the-difference)
- [@video@Git Fork vs. Git Clone: What's the Difference?](https://youtu.be/6YQxkxw8nhE?si=mJNvcaB4lQccsU57)
- [@video@GitHub Forking vs Cloning: Key Differences Explained](https://youtu.be/yQSjqYs2UBE?si=3BKYtWmkLIMWvA6G)
@@ -0,0 +1,9 @@
# Git Attributes
Git attributes are settings stored in the .gitattributes file, controlling how Git handles files in your repository. They can influence filtering (e.g., ignoring specific files), conversion (formatting or transforming files during Git operations), and formatting (applying consistent styles). These settings can be applied to specific file types (like \*.txt) or filter files based on content patterns. Attributes also define smudge patterns (highlighting differences) and ignore patterns, helping maintain a clean repository by automatically applying intended settings for certain file types.
Visit the following resources to learn more:
- [@official@Customizing Git - Git Attributes](https://git-scm.com/book/en/v2/Customizing-Git-Git-Attributes)
- [@opensource@gitattributes/gitattributes](https://github.com/gitattributes/gitattributes)
- [@article@The benefits of git attributes and how to set them up](https://medium.com/@cloudwala/the-benefits-of-git-attributes-and-how-to-set-them-up-87f90251b8e0)
@@ -0,0 +1,9 @@
# Git Bisect
Git Bisect is an interactive tool used to identify which commit in your project's history introduced a bug or regression. You start by identifying two commits: one where the issue isn't present (the "good" commit) and another where it is (the "bad" commit). Then, run `git bisect start`, followed by `git bisect good` for the good commit and `git bisect bad` for the bad commit. Git Bisect will guide you through a binary search process, asking you to test the midpoint of your current range until it identifies the exact commit that introduced the bug or regression.
Visit the following resources to learn more:
- [@official@Git Bisect](https://git-scm.com/docs/git-bisect)
- [@article@Using git bisect to find the faulty commit](https://dev.to/alvesjessica/using-git-bisect-to-find-the-faulty-commit-25gf)
- [@video@Git Bisect | How to use Git Bisect | Learn Git](https://www.youtube.com/watch?v=z-AkSXDqodc)
@@ -0,0 +1,9 @@
# git commit --amend
`git commit --amend` is a command used to modify the most recent commit in your repository's history by updating its message, adding or removing files, or changing the commit's metadata. This allows you to correct mistakes or improve the commit's description after it has been made. When using --amend, Git will replace the existing commit with a new one that includes any changes made since the last commit, effectively "amending" the previous commit.
Visit the following resources to learn more:
- [@article@Changing a commit message](https://docs.github.com/en/enterprise-cloud@latest/pull-requests/committing-changes-to-your-project/creating-and-editing-commits/changing-a-commit-message)
- [@article@Rewriting history](https://www.atlassian.com/git/tutorials/rewriting-history)
- [@video@Git Amend Tutorial: Rewrite Git History](https://www.youtube.com/watch?v=q53umU5vMkk)
@@ -0,0 +1,10 @@
# git config
`git config` sets configuration values that control how Git behaves, such as the user's name, email, and default editor. These settings can apply at different levels: system-wide, per user, or per repository. Git attaches this information to every commit, which is why setting a name and email is one of the first steps after installing Git.
Visit the following resources to learn more:
- [@official@Git - git-config Documentation](https://git-scm.com/docs/git-config)
- [@article@git config | Atlassian Git Tutorial](https://www.atlassian.com/git/tutorials/setting-up-a-repository/git-config)
- [@article@Setting your username in Git](https://docs.github.com/en/get-started/getting-started-with-git/setting-your-username-in-git)
- [@article@Git config commands | Git tutorial](https://nulab.com/learn/software-development/git-tutorial/git-commands-settings/git-config-commands/)
@@ -0,0 +1,9 @@
# git filter-branch
`git filter-branch` rewrites a large portion of a repository's history, often used to remove sensitive files or restructure the project after the fact. It applies a filter across many or all commits, such as deleting a specific file from every point in history. Because it's slow and error-prone, Git's documentation now recommends the `git filter-repo` tool as a faster, safer alternative for the same kind of history rewriting.
Visit the following resources to learn more:
- [@official@git filter-branch](https://git-scm.com/docs/git-filter-branch)
- [@official@git filter-repo](https://github.com/newren/git-filter-repo)
- [@article@Removing sensitive data from a repository](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/removing-sensitive-data-from-a-repository)
@@ -0,0 +1,9 @@
# Git hooks
Git hooks are scripts that run automatically at specific points in the Git workflow, such as before a commit or after a push. They live in the `.git/hooks` directory and can be written in any scripting language the system supports. Hooks are commonly used to enforce rules, like running tests before allowing a commit, or triggering actions like deployments after a push.
Visit the following resources to learn more:
- [@official@Customizing Git - Git Hooks](https://git-scm.com/book/en/v2/Customizing-Git-Git-Hooks)
- [@article@Git hooks](https://www.atlassian.com/git/tutorials/git-hooks)
- [@video@What are GitHooks? Explained in 5 minutes](https://www.youtube.com/watch?v=1OFiiPretCM)
@@ -0,0 +1,9 @@
# git init
The `git init` command creates a new Git repository. It can be used to convert an existing, unversioned project to a Git repository or initialize a new, empty repository. Most other Git commands are not available outside of an initialized repository, so this is usually the first command you'll run in a new project.
Visit the following resources to learn more:
- [@course@Creating Repository (Interactive Lesson)](https://inter-git.com/lessons/creating-repository)
- [@official@Git - git-init Documentation](https://git-scm.com/docs/git-init)
- [@article@git init | Atlassian Git Tutorial](https://www.atlassian.com/git/tutorials/setting-up-a-repository/git-init#:~:text=The%20git%20init%20command%20creates,run%20in%20a%20new%20project.)
@@ -0,0 +1,8 @@
# Git LFS
Git Large File Storage (LFS) is an extension that helps manage large files by tracking metadata, not storing entire files. It allows storing and tracking binary assets like images, videos, audio files separately from your regular Git repository. By storing only metadata in your Git repository, you improve clone and push times, reducing storage usage. This approach is particularly useful for media repositories, large dataset storage, and binary asset management in game development. Note that Git LFS requires a separate server or storage system to store actual file content.
Visit the following resources to learn more:
- [@article@Learning About Git Large File System (LFS)](https://medium.com/swlh/learning-about-git-large-file-system-lfs-72e0c86cfbaf)
- [@video@Git LFS (Large File Storage) | Learn Git](https://www.youtube.com/watch?v=jXsvFfksvd0)
@@ -0,0 +1,8 @@
# git log options
`git log` accepts many options to customize how commit history is displayed, such as `--oneline` for a condensed view or `--graph` to visualize branching and merging. Filters like `--author` or `--since` narrow results to specific contributors or time ranges. These options make it easier to search through large histories for exactly the information needed.
Visit the following resources to learn more:
- [@official@Git Log](https://git-scm.com/docs/git-log)
- [@article@Git Log Cheatsheet](https://elijahmanor.com/blog/git-log)
@@ -0,0 +1,8 @@
# Git Patch
In Git, a patch is a file that contains a set of changes made to a project's codebase. It's essentially a diff (difference) file that shows the modifications between two versions of a commit or a branch. However, despite its usefulness in certain contexts, the use of Git patches has declined somewhat with the advent of more modern and efficient ways to manage code changes.
Visit the following resources to learn more:
- [@article@Git Patch](https://www.gitkraken.com/learn/git/git-patch)
- [@article@How to generate and apply patches with git?](https://gist.github.com/nepsilon/22bc62a23f785716705c)
@@ -0,0 +1,8 @@
# git push --force
`git push --force` overwrites the remote branch's history with the local branch's history, even if they've diverged. This is necessary after rewriting local commits, like through a rebase, since a normal push would be rejected due to mismatched history. Because it can overwrite others' work on a shared branch, `git push --force-with-lease` is often recommended instead, since it fails if the remote has changes the local branch doesn't know about.
Visit the following resources to learn more:
- [@article@Git Push Force](https://www.gitkraken.com/learn/git/problems/git-push-force)
- [@video@How to force push to GitHub?](https://www.youtube.com/watch?v=wgXbfLn-zkI)
@@ -0,0 +1,10 @@
# git rebase
Git rebase is a powerful command in Git that allows you to integrate changes from one branch into another. Unlike git merge, which creates a new commit to combine the histories of two branches, git rebase moves or applies commits from one branch on top of another, effectively re-writing the commit history.
Visit the following resources to learn more:
- [@official@Git - git-rebase Documentation](https://git-scm.com/docs/git-rebase)
- [@article@git rebase](https://www.atlassian.com/git/tutorials/rewriting-history/git-rebase)
- [@video@git rebase - Why, When & How to fix conflicts](https://youtu.be/DkWDHzmMvyg?si=59jauQgkL-sMewzo)
- [@video@Git Rebase --interactive: EXPLAINED](https://youtu.be/H7RFt0Pxxp8?si=gLhfkVW_PmWHBQSs)
@@ -0,0 +1,10 @@
# Git Reflog
Git reflog is a powerful tool in Git that keeps a record of all the changes made to the branches and commits in your repository, including actions that are not part of the regular commit history, such as resetting branches or checking out commits. It's particularly useful for recovering lost commits or understanding the history of changes in your repository, even if those changes are not reflected in the normal commit history.Reflog stands for "reference log." It records when the tip of branches or other references (like HEAD) is updated in your repository.
Visit the following resources to learn more:
- [@official@Git - git-reflog Documentation](https://git-scm.com/docs/git-reflog)
- [@article@What is the Git Reflog? | Learn Version Control with Git](https://www.git-tower.com/learn/git/faq/what-is-git-reflog)
- [@video@Learn Git Essentials 12: Git Reflog](https://youtu.be/RVu8lpS7JFY?si=eNGBpsYfHtlyPClj)
- [@video@Git Reflog Command. Get all log details of the reference using git reflog show command](https://youtu.be/I4f4pddD16g?si=0Ny7xOJgiPgdfuh6)
@@ -0,0 +1,8 @@
# Git Remotes
A remote is a version of a repository hosted somewhere other than the local machine, such as on GitHub. Remotes let developers push their local commits to a shared location and pull down changes made by others. A repository can have multiple remotes, though most projects use a single one, conventionally named `origin`.
Visit the following resources to learn more:
- [@official@About Remote Repositories](https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories)
- [@video@What is a Remote Repository? \[Beginner Git Tutorial\]](https://www.youtube.com/watch?v=Lb4yvfrX_7I)
@@ -0,0 +1,8 @@
# git reset
Git reset is a command that allows you to "undo" or reset your current branch to a previous state by moving its HEAD pointer, effectively discarding changes made since then. When using git reset, it's essential to specify one of the three modes: soft, hard, or mixed. The mode you choose will determine how Git interacts with files in your working directory and staging area.
Visit the following resources to learn more:
- [@article@git reset](https://www.atlassian.com/git/tutorials/undoing-changes/git-reset)
- [@video@Git Reset | How to Use Git Reset | Learn Git](https://www.youtube.com/watch?v=s1idhUiCk38)
@@ -0,0 +1,8 @@
# git revert
`git revert` creates a new commit that undoes the changes made by a previous commit, without altering existing history. This makes it a safe way to undo changes on a branch that others have already pulled, since it doesn't rewrite any commits. Running `git revert <commit-hash>` applies the inverse of that commit's changes and prompts for a new commit message.
Visit the following resources to learn more:
- [@article@Git Revert](https://medium.com/@meghasharmaa704/git-revert-84727b543c17)
- [@video@Git Revert - Visualised](https://www.youtube.com/watch?v=XJqQPNudPSY)
@@ -0,0 +1,8 @@
# Git Stash Basics
Git stash temporarily saves uncommitted changes so the working directory can be cleaned without committing incomplete work. The command `git stash` saves the current changes and reverts the working directory to match the last commit, while `git stash pop` restores them later. This is useful when a developer needs to quickly switch branches or pull updates without losing in-progress work.
Visit the following resources to learn more:
- [@article@Git stash](https://www.atlassian.com/git/tutorials/saving-changes/git-stash)
- [@article@A practical guide to using the git stash command](https://opensource.com/article/21/4/git-stash)
@@ -0,0 +1,7 @@
# Git vs Other VCS
Git is a distributed version control system, meaning every developer has a full copy of the project history on their own machine, not just the latest snapshot. Older systems like Subversion (SVN) or CVS are centralized, so they depend on a single server for most operations and require a network connection to commit changes. Git allows commits, branching, and history browsing to happen offline, and syncing with a remote server happens only when pushing or pulling.
Visit the following resources to learn more:
- [@article@Git vs. Other VCS: A Comparative Analysis](https://medium.com/@pascalchinedu2000/git-vs-other-vcs-a-comparative-analysis-5cb03ad58e0e)
@@ -0,0 +1,8 @@
# Git Worktree
Git worktree allows multiple branches to be checked out simultaneously in separate directories, all linked to the same repository. Running `git worktree add <path> <branch>` creates a new working directory for a specific branch without needing to clone the repository again. This is useful when a developer needs to work on two branches at once, like testing a hotfix while a feature branch remains checked out elsewhere.
Visit the following resources to learn more:
- [@article@Git Worktree](https://www.gitkraken.com/learn/git/git-worktree)
- [@video@Manage Branches easily using Git Worktree](https://www.youtube.com/watch?v=cRunWRC8ye0)
@@ -0,0 +1,10 @@
# GitHub Actions
GitHub Actions is a CI/CD platform built into GitHub that automates tasks like testing, building, and deploying code in response to repository events. Workflows are defined in YAML files stored in the `.github/workflows` directory and can run on GitHub-hosted or self-hosted runners. It's widely used to automate everything from running test suites on every pull request to deploying applications after a merge.
Visit the following resources to learn more:
- [@course@Microsoft Learn: Introduction to GitHub Actions](https://learn.microsoft.com/en-us/collections/n5p4a5z7keznp5)
- [@course@YouTube: GitHub Actions Playlist](https://www.youtube.com/watch?v=-hVG9z0fCac&list=PLArH6NjfKsUhvGHrpag7SuPumMzQRhUKY&pp=iAQB)
- [@official@GitHub Actions](https://docs.github.com/en/actions)
- [@video@What are GitHub Actions](https://www.youtube.com/watch?v=URmeTqglS58)
@@ -0,0 +1,8 @@
# GitHub API
The GitHub API is a powerful tool that allows developers to interact with the GitHub platform programmatically. It provides access to various GitHub features, such as user data, repository information, and commit history, through both REST and GraphQL interfaces. The API supports authentication, implements rate limiting, and offers webhooks for real-time notifications, enabling developers to automate tasks, create custom integrations, and build applications that leverage GitHub's functionality.
Visit the following resources to learn more:
- [@official@GitHub API Docs](https://docs.github.com/en/rest?apiVersion=2022-11-28)
- [@article@Getting Started](https://docs.github.com/en/rest/using-the-rest-api/getting-started-with-the-rest-api?apiVersion=2022-11-28)
@@ -0,0 +1,7 @@
# GitHub Apps
A GitHub App is a way to integrate with the GitHub platform programmatically, using either the REST API or GraphQL API. It allows developers to create custom integrations that can automate tasks, provide real-time notifications, and build custom workflows.
Visit the following resources to learn more:
- [@official@GitHub Apps Documentation](https://docs.github.com/en/apps)
@@ -0,0 +1,8 @@
# GitHub Classroom
GitHub Classroom is an integrated feature within GitHub that allows educators to create and assign homework assignments, projects, or quizzes directly to students. This feature streamlines the process of teaching and learning by making it easy for instructors to share code, provide feedback, and track student progress all in one place. By using GitHub Classroom, teachers can focus on high-level instruction and student engagement, while also promoting collaboration and hands-on learning experiences.
Visit the following resources to learn more:
- [@official@About GitHub Classroom](https://docs.github.com/en/education/manage-coursework-with-github-classroom/get-started-with-github-classroom/about-github-classroom)
- [@video@GitHub Classroom - Getting Started Guide](https://www.youtube.com/watch?v=xVVeqIDgCvM&list=PLIRjfNq867bewk3ZGV6Z7a16YDNRCpK3u)
@@ -0,0 +1,8 @@
# GitHub CLI
GitHub CLI, or `gh`, is a command-line tool that lets developers interact with GitHub directly from the terminal instead of the web interface. It supports common tasks like creating repositories, managing issues, and opening pull requests without switching context. Being scriptable also makes it useful for automating GitHub-related tasks in scripts or CI pipelines.
Visit the following resources to learn more:
- [@official@GitHub CLI Docs](https://cli.github.com/)
- [@video@What is the GitHub CLI?](https://www.youtube.com/watch?v=uy_PEGgUF4U)
@@ -0,0 +1,8 @@
# GitHub Codespaces
GitHub Codespaces provides a cloud-based development environment that can be launched directly from a repository, complete with a configured editor and terminal. It uses a configuration file, typically a `devcontainer.json`, to define the environment's tools, extensions, and dependencies. This lets developers start coding immediately in a consistent setup without needing to install anything locally.
Visit the following resources to learn more:
- [@official@GitHub Codespaces Overview](https://docs.github.com/en/codespaces/overview)
- [@video@How to Deploy a GitHub Codespace](https://www.youtube.com/watch?v=_01iCF9sO1c)
@@ -0,0 +1,9 @@
# GitHub Copilot
GitHub Copilot is an AI-powered code-completion tool that helps developers write code faster and with less errors. It uses a combination of machine learning algorithms and access to GitHub's vast repository of open-source code to provide context-aware suggestions for coding tasks. Copilot can generate entire functions, methods, or even entire classes based on the context of the code being written. This feature aims to reduce the time spent on coding by providing immediate and relevant suggestions, allowing developers to focus more on high-level design and problem-solving.
Visit the following resources to learn more:
- [@official@Quickstart for GitHub Copilot](https://docs.github.com/en/copilot/quickstart)
- [@video@Intro to GitHob Copilot in Visual Studio](https://www.youtube.com/watch?v=z1ycDvspv8U)
- [@video@GitHub Copilot in VSCode: Top 10 Features Explained](https://www.youtube.com/watch?v=2nPoiUJpDaU)
@@ -0,0 +1,8 @@
# GitHub Discussions
GitHub Discussions is a forum-style feature for conversations that don't fit the structure of an issue, such as general questions, ideas, or announcements. Unlike issues, discussions aren't meant to track specific tasks and can be organized into categories like Q&A or ideas. Maintainers often enable discussions to separate open-ended community conversation from actionable bug reports.
Visit the following resources to learn more:
- [@official@GitHub Discussions Docs](https://docs.github.com/en/discussions)
- [@video@What is GitHub Discussions?](https://www.youtube.com/watch?v=bErGYN3Ljz8)
@@ -0,0 +1,8 @@
# GitHub Education
GitHub Education is a program that provides free and discounted access to GitHub's developer tools, services, and resources for students, teachers, and researchers. This program aims to support education and research in software development, by making it easier for students and educators to learn, collaborate, and build projects on GitHub. By using GitHub Education, students can gain hands-on experience with real-world coding challenges, while educators can create a more engaging and interactive learning environment.
Visit the following resources to learn more:
- [@official@official GitHub Education Docs](https://education.github.com/)
- [@video@GitHub GitHub Education: free programs, technology, and opportunities available for Students](https://www.youtube.com/watch?v=HIVFdN9VGgw)
@@ -0,0 +1,8 @@
# GitHub Essentials
GitHub Essentials covers the core features needed to start using GitHub as a collaboration platform on top of Git. This includes creating an account, understanding the interface, setting up a profile, and creating repositories. These basics form the starting point for hosting projects online and working with other developers.
Visit the following resources to learn more:
- [@official@GitHub Essentials - Microsoft](https://learn.microsoft.com/en-us/contribute/content/git-github-fundamentals)
- [@official@Hello World](https://docs.github.com/en/get-started/start-your-journey/hello-world)
@@ -0,0 +1,8 @@
# GitHub Gists
A GitHub Gist is a small code or text snippet that can be shared with others. It is a simple way to share code, configuration files, or other snippets of text without creating a full-fledged repository. Gists are useful for sharing examples, demos, or tutorials, and they can also serve as a starting point for larger projects. Each gist has a unique URL that can be shared with others, allowing them to view and edit the content. Gists support various file types, including code files, text files, and even images. They also provide features like syntax highlighting, line numbers, and commit history.
Visit the following resources to learn more:
- [@official@Creating Gists](https://docs.github.com/en/get-started/writing-on-github/editing-and-sharing-content-with-gists/creating-gists)
- [@official@REST API endpoints for Gists](https://docs.github.com/en/rest/gists/gists?apiVersion=2022-11-28)
@@ -0,0 +1,8 @@
# GitHub Interface
The GitHub interface is the web-based dashboard used to navigate repositories, pull requests, issues, and account settings. It includes a repository view showing files and commit history, a notifications tab, and organization or team pages for shared projects. Learning the layout helps developers find their way around features like code review, project boards, and settings without confusion.
Visit the following resources to learn more:
- [@official@GitHub Desktop App](https://github.com/apps/desktop)
- [@article@Getting Started with GitHub](https://digital.gov/resources/an-introduction-github/)
@@ -0,0 +1,8 @@
# GitHub Marketplace
GitHub Marketplace is a platform that allows developers to discover, install, and manage third-party tools and services directly within their GitHub environment. These tools can provide a range of features, such as code analysis, project management, or collaboration, making it easier for developers to work efficiently and effectively. By using the GitHub Marketplace, developers can streamline their workflow, reduce friction, and focus on writing code.
Visit the following resources to learn more:
- [@official@GitHub Marketplace](https://github.com/marketplace)
- [@official@About GitHub Marketplace for apps](https://docs.github.com/en/apps/github-marketplace/github-marketplace-overview/about-github-marketplace-for-apps)
@@ -0,0 +1,8 @@
# GitHub Models
GitHub Models is a feature that allows developers to search, explore, and use pre-trained AI models from various sources. This platform provides a way to discover and experiment with these models, making it easier to integrate AI capabilities into software projects. By using GitHub Models, developers can quickly find and try out different models, without having to train them from scratch.
Visit the following resources to learn more:
- [@official@Prototyping with AI models](https://docs.github.com/en/github-models/prototyping-with-ai-models)
- [@video@GitHub Models DEMO | AI models for developers on GitHub](https://www.youtube.com/watch?v=WiBB8Lsgl7I)
@@ -0,0 +1,8 @@
# GitHub Organizations
A GitHub organization is a shared account used by companies or groups to manage multiple repositories, members, and teams under one umbrella. It allows centralized billing, permission management, and visibility settings across all repositories owned by the organization. Organizations are commonly used instead of personal accounts when multiple people need structured, ongoing access to a set of projects.
Visit the following resources to learn more:
- [@official@About Organizations](https://docs.github.com/en/organizations/collaborating-with-groups-in-organizations/about-organizations)
- [@video@Set up a GitHub Organization](https://www.youtube.com/watch?v=XowSSIhJFuk)
@@ -0,0 +1,8 @@
# GitHub Packages
GitHub Packages is a package hosting service that lets developers publish and manage packages, like npm, Docker, or Maven artifacts, directly within GitHub. It integrates with existing repository permissions, so access to a package can follow the same rules as the repository it's tied to. Teams use it to keep both their code and its published packages within the same platform and permission system.
Visit the following resources to learn more:
- [@official@Introduction to GitHub Packages](https://docs.github.com/en/packages/learn-github-packages/introduction-to-github-packages)
- [@official@GitHub Packages documentation](https://docs.github.com/en/packages)
@@ -0,0 +1,9 @@
# GitHub Pages
GitHub Pages is a feature that allows users to host and publish web content directly from their GitHub repositories. It provides a simple way to create and deploy websites, blogs, or projects without the need for manual configuration or maintenance. Users can upload custom themes, add plugins, and use various tools to customize their pages.
Visit the following resources to learn more:
- [@official@About GitHub Pages](https://docs.github.com/en/pages/getting-started-with-github-pages/about-github-pages)
- [@official@Creating a GitHub Pages site](https://docs.github.com/en/pages/getting-started-with-github-pages/creating-a-github-pages-site)
- [@official@GitHub Pages examples](https://github.com/collections/github-pages-examples)
@@ -0,0 +1,8 @@
# GitHub Projects
GitHub Projects is a built-in project management tool that lets teams organize issues and pull requests into boards, tables, or timelines. It supports custom fields, automation rules, and different views to track work across one or multiple repositories. Teams use it to plan sprints, track progress, and visualize the status of ongoing work without leaving GitHub.
Visit the following resources to learn more:
- [@official@About Projects](https://docs.github.com/en/issues/planning-and-tracking-with-projects/learning-about-projects/about-projects)
- [@video@How to use Projects Roadmap](https://www.youtube.com/watch?v=D80u__nYYWw)
@@ -0,0 +1,8 @@
# GitHub Releases
A GitHub release packages a specific tag along with release notes, binaries, or other downloadable assets. It gives users a clear, versioned snapshot of the project they can download without cloning the entire repository. Releases are commonly used to distribute compiled software, mark milestones, and document what changed between versions.
Visit the following resources to learn more:
- [@official@About Releases](https://docs.github.com/en/repositories/releasing-projects-on-github/about-releases)
- [@article@REST API endpoints for releases](https://docs.github.com/en/rest/releases/releases?apiVersion=2022-11-28)
@@ -0,0 +1,9 @@
# GitHub Security
GitHub Security covers the built-in tools that help identify and fix vulnerabilities in a repository, such as dependency scanning, secret scanning, and code scanning. These features can flag outdated dependencies with known vulnerabilities or detect accidentally committed secrets like API keys. Security features can be enabled from the repository settings and often integrate directly with pull requests to flag issues before they get merged.
Visit the following resources to learn more:
- [@official@GitHub security features](https://docs.github.com/en/code-security/getting-started/github-security-features)
- [@official@Dependabot Quick-start Guide](https://docs.github.com/en/code-security/getting-started/dependabot-quickstart-guide)
- [@official@About user alerts](https://docs.github.com/en/code-security/secret-scanning/managing-alerts-from-secret-scanning/about-alerts#about-user-alerts)
@@ -0,0 +1,8 @@
# GitHub Sponsors
GitHub Sponsors lets developers and organizations receive financial support directly from users who want to fund their open source work. Sponsors can choose a one-time or recurring monthly contribution, and maintainers can offer different sponsorship tiers with specific perks. This gives open source maintainers a way to earn income for their work directly through the platform.
Visit the following resources to learn more:
- [@official@Sponsoring an open source contributor through GitHub](https://docs.github.com/en/sponsors/sponsoring-open-source-contributors/sponsoring-an-open-source-contributor-through-github)
- [@official@Receiving sponsorships through GitHub Sponsors](https://docs.github.com/en/sponsors/receiving-sponsorships-through-github-sponsors)
@@ -0,0 +1,8 @@
# GitHub Wikis
A GitHub wiki is a separate space attached to a repository for writing longer-form documentation, tutorials, or notes that don't belong in the main README. Wikis support Markdown and have their own version history, similar to the main repository. They're often used for detailed guides, FAQs, or design documents that would otherwise clutter the codebase.
Visit the following resources to learn more:
- [@official@About Wikis](https://docs.github.com/en/communities/documenting-your-project-with-wikis/about-wikis)
- [@official@Documenting your project with Wikis](https://docs.github.com/en/communities/documenting-your-project-with-wikis)
@@ -0,0 +1,10 @@
# .gitignore
Ignored files are tracked in a special file named `.gitignore` that is checked in at the root of your repository. There is no explicit git ignore command: instead the `.gitignore` file must be edited and committed by hand when you have new files that you wish to ignore. `.gitignore` files contain patterns that are matched against file names in your repository to determine whether or not they should be ignored.
Visit the following resources to learn more:
- [@official@gitignore Documentation](https://git-scm.com/docs/gitignore)
- [@opensource@gitignore - A collection of useful .gitignore templates](https://github.com/github/gitignore)
- [@article@.gitignore file - ignoring files in Git | Atlassian Git Tutorial](https://www.atlassian.com/git/tutorials/saving-changes/gitignore)
- [@article@Ignoring files - GitHub Docs](https://docs.github.com/en/get-started/getting-started-with-git/ignoring-files)
@@ -0,0 +1,9 @@
# GraphQL API
The GitHub GraphQL API is a set of APIs that provides access to various GitHub features, such as user data, repository information, and commit history. It allows developers to interact with the GitHub platform programmatically using GraphQL queries.
Visit the following resources to learn more:
- [@roadmap@Visit the Dedicated GraphQL Roadmap](https://roadmap.sh/graphql)
- [@official@GitHub GraphQL API documentation](https://docs.github.com/en/graphql)
- [@official@Forming calls with GraphQL](https://docs.github.com/en/graphql/guides/forming-calls-with-graphql)
@@ -0,0 +1,9 @@
# Handling Conflicts
When multiple developers work on the same project simultaneously, conflicts can arise during the merging process. This occurs when changes made by different individuals overlap or contradict each other in a specific code file. In such situations, Git's conflict resolution mechanism comes into play, allowing users to manually resolve these issues and merge the conflicting changes.
Visit the following resources to learn more:
- [@article@Resolving a merge conflict using the command line](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/addressing-merge-conflicts/resolving-a-merge-conflict-using-the-command-line)
- [@article@Resolve merge conflicts in Visual Studio](https://learn.microsoft.com/en-us/visualstudio/version-control/git-resolve-conflicts?view=vs-2022)
- [@video@Resolve Git MERGE CONFLICTS: The Definitive Guide](https://www.youtube.com/watch?v=Sqsz1-o7nXk)
@@ -0,0 +1,8 @@
# HEAD
The `HEAD` file is at the core of how Git knows the SHA-1 of the last commit when running commands like `git branch <branch>`. It serves as a symbolic reference, pointing to the current branch. However, in rare cases, HEAD can contain the actual SHA-1 value of a Git object, such as when checking out a tag, commit, or remote branch, which puts your repository in a "detached HEAD" state.
Visit the following resources to learn more:
- [@official@Git Internals - Git References - The HEAD](https://git-scm.com/book/en/v2/Git-Internals-Git-References#:~:text=want%20to%20create.-,The%20HEAD,-The%20question%20now)
- [@video@Learn Git Essentials: Head & Detached Head](https://www.youtube.com/watch?v=HvDjbAa9ZsY)
@@ -0,0 +1,7 @@
# History
The history of a Git repository is a record of all commits made over time, including changes to files, commit messages, and metadata. This history is stored as a series of snapshots, with each commit representing a new version of the codebase.
Visit the following resources to learn more:
- [@official@Git Basics - Viewing the Commit History](https://git-scm.com/book/en/v2/Git-Basics-Viewing-the-Commit-History)
@@ -0,0 +1,9 @@
# Installation and Setup
Installing GitHub CLI involves downloading the `gh` tool through a package manager like Homebrew, apt, or winget, depending on the operating system. After installation, running `gh auth login` connects the tool to a GitHub account through browser or token-based authentication. Once authenticated, `gh` commands can be run from any repository to interact with GitHub directly.
Visit the following resources to learn more:
- [@official@GitHub CLI - Installation](https://github.com/cli/cli?tab=readme-ov-file#installation)
- [@official@GitHub CLI - Release](https://github.com/cli/cli/releases/)
- [@official@GitHub CLI Quickstart](https://docs.github.com/en/github-cli/github-cli/quickstart)
@@ -0,0 +1,8 @@
# Installing Git Locally
Installing Git locally means setting up the Git command-line tool on a personal machine so it can track and manage code changes. The installation process differs by operating system: Windows users typically download an installer from the official Git website, macOS users can install it through Homebrew or Xcode command line tools, and Linux users install it through their package manager. Once installed, running `git --version` in a terminal confirms the setup worked.
Visit the following resources to learn more:
- [@official@Git - Downloads](https://git-scm.com/downloads)
- [@article@Install Git](https://github.com/git-guides/install-git)
@@ -0,0 +1,8 @@
# Issue Management
GitHub CLI allows creating, listing, and closing issues directly from the terminal using commands like `gh issue create` and `gh issue list`. Filters can narrow results by label, assignee, or state, similar to searching issues on the website. This makes it possible to triage or manage issues without switching to a browser.
Visit the following resources to learn more:
- [@official@gh issue](https://cli.github.com/manual/gh_issue)
- [@video@Manage GitHub Issues From The Command Line Using GitHub CLI](https://www.youtube.com/watch?v=nuCQiP41jU0)
@@ -0,0 +1,8 @@
# Issues
Issues are used to track bugs, feature requests, or tasks related to a repository. Each issue has a title, description, and optional labels, assignees, and milestones, and it can be commented on to discuss the problem or proposed solution. Issues can be closed manually or automatically when a linked pull request that fixes them gets merged.
Visit the following resources to learn more:
- [@official@About Issues](https://docs.github.com/en/issues/tracking-your-work-with-issues/about-issues)
- [@video@What is GitHub Issues?](https://www.youtube.com/watch?v=6HWw7rhwvtY)
@@ -0,0 +1,8 @@
# Kanban Boards
A Kanban board is a visual layout that organizes tasks into columns representing different stages, such as "To Do," "In Progress," and "Done." Items move across columns as their status changes, giving a clear picture of the team's workflow at a glance. GitHub Projects supports this board view natively, letting issues and pull requests be dragged between columns.
Visit the following resources to learn more:
- [@official@Projects - Boards - Changing the layout of a view](https://docs.github.com/en/issues/planning-and-tracking-with-projects/customizing-views-in-your-project/changing-the-layout-of-a-view)
- [@video@GitHub Project Management - Create GitHub Project Board & Automations](https://www.youtube.com/watch?v=oPQgFxHcjAw)
@@ -0,0 +1,7 @@
# Labelling Issues / PRs
Labels are colored tags applied to issues and pull requests to categorize them by type, priority, or status. Common examples include "bug," "enhancement," or "help wanted," and repositories can define custom labels to match their workflow. Labels make it easier to filter and search through large numbers of issues or pull requests at a glance.
Visit the following resources to learn more:
- [@official@Managing labels](https://docs.github.com/en/issues/using-labels-and-milestones-to-track-work/managing-labels)
@@ -0,0 +1,10 @@
# Learn the Basics
A Version Control System (VCS) is a tool that helps developers manage changes to their code over time. It allows multiple versions of a project to exist simultaneously, making it easier to collaborate with others and maintain a record of all modifications.
Visit the following resources to learn more:
- [@official@Getting Started - Installing Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git)
- [@official@Creating an account on GitHub](https://docs.github.com/en/get-started/start-your-journey/creating-an-account-on-github)
- [@article@What is version control?](https://www.atlassian.com/git/tutorials/what-is-version-control)
- [@video@What is Git? Explained in 2 Minutes!](https://www.youtube.com/watch?v=2ReR1YJrNOM)
@@ -0,0 +1,8 @@
# Linear vs Non-Linear
A linear history means commits follow a single, straight sequence with no branching or merging, often achieved through rebasing instead of merging. A non-linear history includes branches that diverge and later merge back together, creating a more complex graph of commits. Teams choose between the two based on whether they prioritize a simple, readable log or a history that reflects exactly how work happened in parallel.
Visit the following resources to learn more:
- [@article@Linear vs Non-Linear History](https://idiv-biodiversity.github.io/git-knowledge-base/linear-vs-nonlinear.html)
- [@article@Linear git history - Part I](https://jun-sheng.medium.com/linear-git-history-part-i-b97184dde252#:~:text=The%20benefit%20of%20having%20a%20linear%20git%20history&text=It%20is%20easier%20to%20understand,bisect%20to%20track%20a%20bug.)
@@ -0,0 +1,8 @@
# Local vs Global Config
Git configuration can be set at the local level, which applies only to the current repository, or at the global level, which applies to every repository for that user. Local settings are stored inside a repository's `.git/config` file and override global ones when both exist. Global settings live in a file in the user's home directory, and developers typically use them to set default identity information like name and email across all their projects.
Visit the following resources to learn more:
- [@official@Customizing Git - Git Configuration](https://git-scm.com/book/en/v2/Customizing-Git-Git-Configuration)
- [@article@A step-by-step guide to setting up global Git config properties](https://medium.com/geekculture/a-step-by-step-guide-to-setting-up-git-config-global-properties-db6dbce30fa8)
@@ -0,0 +1,7 @@
# Managing Remotes
Managing remotes involves adding, renaming, or removing the remote repositories a local project is connected to. The command `git remote add <name> <url>` links a new remote, `git remote rename` changes its label, and `git remote remove` deletes the connection entirely. Running `git remote -v` lists all configured remotes along with their URLs.
Visit the following resources to learn more:
- [@official@Managing remote repositories](https://docs.github.com/en/get-started/getting-started-with-git/managing-remote-repositories)
@@ -0,0 +1,8 @@
# Managing Tags
Managing tags involves creating, listing, and deleting tags within a repository. The command `git tag <name>` creates a lightweight tag, while `git tag -a <name> -m "message"` creates an annotated one with extra details. Running `git tag` alone lists existing tags, and `git tag -d <name>` deletes one locally.
Visit the following resources to learn more:
- [@official@Git Basics - Tagging](https://git-scm.com/book/en/v2/Git-Basics-Tagging)
- [@article@Git — Use Tags for Versioning and Release Management](https://medium.com/@KeyurRamoliya/git-use-tags-for-versioning-and-release-management-09aca9631eee)
@@ -0,0 +1,8 @@
# Markdown
Markdown is a lightweight markup language used to format text with plain, readable syntax, like using asterisks for bold or a hash symbol for headings. GitHub renders Markdown automatically in README files, issues, pull requests, and comments, converting the plain text syntax into styled output. Its simplicity makes it a common choice for documentation across many platforms beyond just GitHub.
Visit the following resources to learn more:
- [@official@Basic writing and formatting syntax](https://docs.github.com/en/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax)
- [@article@Markdown Cheatsheet](https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet)
@@ -0,0 +1,7 @@
# Marketplace Actions
Marketplace Actions are pre-built, reusable workflow steps published by GitHub and the community that can be added to any workflow. Instead of writing custom scripts for common tasks like checking out code or setting up a programming language, a workflow can reference an action like `actions/checkout` or `actions/setup-node`. Using marketplace actions saves time and lets workflows benefit from tools maintained and tested by others.
Visit the following resources to learn more:
- [@official@GitHub MarketPlace - Actions](https://github.com/marketplace?type=actions)
@@ -0,0 +1,7 @@
# Mentions
Mentions on GitHub allow you to notify specific users or teams about comments, issues, pull requests, or other activities. This feature improves collaboration by encouraging participation and discussion among team members, increasing visibility of important topics, and streamlining communication within your repository. To use mentions, simply type `@username` or `@teamname` in a comment, and GitHub will auto-complete the mention as you type, automatically linking their username to the comment and notifying them about the discussion.
Visit the following resources to learn more:
- [@official@Mention Somebody](https://github.blog/news-insights/mention-somebody-they-re-notified/)
@@ -0,0 +1,8 @@
# Merge Strategies
Merge strategies are the different approaches Git offers for combining changes from one branch into another. Options include a standard merge that preserves full history, a squash merge that condenses all commits into one, and a rebase that replays commits on top of another branch. Choosing a strategy affects how clean or detailed the resulting commit history looks.
Visit the following resources to learn more:
- [@official@Git Merge Strategies](https://git-scm.com/docs/merge-strategies)
- [@article@Git Merge Options](https://www.atlassian.com/git/tutorials/using-branches/merge-strategy)
@@ -0,0 +1,8 @@
# Merging Basics
A merge in Git is the process of combining changes from one branch into another. When you want to integrate updates from one branch (the source) into another branch (the target), you need to perform a merge. This involves resolving conflicts between the two branches, if any exist. The goal of merging is to create a new commit that represents the combined changes from both branches, resulting in a single, cohesive history for your project.
Visit the following resources to learn more:
- [@official@Git Branching - Basic Merging](https://git-scm.com/book/en/v2/Git-Branching-Basic-Branching-and-Merging#:~:text=into%20master%20later.-,Basic%20Merging,-Suppose%20you%E2%80%99ve%20decided)
- [@article@Git merge](https://www.atlassian.com/git/tutorials/using-branches/git-merge)

Some files were not shown because too many files have changed in this diff Show More