Skip to content

GitHub Overview. For official guidance, support, or more detailed information, please refer to Microsoft's official documentation or contact Microsoft directly.

License

Notifications You must be signed in to change notification settings

MicrosoftCloudEssentials-LearningHub/GitHub-Overview

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

GitHub - Overview

Costa Rica

GitHub brown9804

Last updated: 2025-08-04


GitHub is a web-based platform that provides hosting for software development and version control using Git. It offers a comprehensive suite of tools for collaboration, code management, and software delivery.

List of References (Click to expand)
Table of content (Click to expand)

Overview

Concept Definition
Git A distributed version control system that tracks changes to files over time
Repository (Repo) A project's folder containing all files and their revision history
Branch A parallel version of the repository for isolated development work
Commit A snapshot of changes with a unique ID and descriptive message
Pull Request (PR) A proposal to merge changes from one branch into another
Merge The process of integrating changes from one branch into another

Development Workflow

1. Create or Clone a Repository
  • Initialize a new repository: git init my-project
  • Clone an existing repository: git clone https://github.com/username/repo.git
  • Public repos visible to everyone, private repos limited to collaborators
2. Branch Development
  • Create and switch to a new branch: git checkout -b feature-branch
  • List all branches: git branch -a
  • Work in isolation without affecting the main codebase
3. Commit Changes
  • Check status of changed files: git status
  • Stage all changes: git add .
  • Stage specific file: git add <file name>
  • Commit staged changes: git commit -m "<message>"
  • Build a detailed history of project modifications
4. Open Pull Request
  • Push branch to remote repository: git push origin <feature-branch name>
  • Use GitHub UI: Click Compare & pull request
  • Describe changes, their purpose, and impact
5. Code Review and Discussion
  • Review changes line by line in GitHub UI
  • Add comments on specific lines
  • Request changes or approve the pull request
  • Ensure code quality and catch issues early
6. Automated Testing (CI)
  • GitHub Actions run automated tests when PR is created
  • Example workflow file (.github/workflows/ci.yml):
    name: CI
    on: [push, pull_request]
    jobs:
      test:
        runs-on: ubuntu-latest
        steps:
          - uses: actions/checkout@v3
          - run: npm install
          - run: npm test
  • Check test results in Actions tab on GitHub
7. Merge Approved Changes
  • GitHub UI: Click Merge pull request
  • Or command line:
    git checkout main
    git pull
    git merge feature-branch
    git push
  • Features or fixes become part of the official project
8. Automated Deployment (CD)
  • Deploy updated applications to production environments
  • Example deployment workflow:
    name: Deploy
    on:
      push:
        branches: [main]
    jobs:
      deploy:
        runs-on: ubuntu-latest
        steps:
          - uses: actions/checkout@v3
          - run: npm install
          - run: npm run deploy
  • Release new versions to users automatically

Issues

Issues are GitHub's built-in tracking system for bugs, feature requests, and tasks. They provide a centralized location to discuss ideas, enhancements, and problems related to your project.

Expand for more details

Key Features

  • Issue Templates: Create standardized formats for bug reports, feature requests, etc.
  • Labels: Categorize issues by type, priority, status (e.g., "bug", "enhancement", "high-priority")
  • Milestones: Group issues into project phases or version releases
  • Assignees: Delegate responsibility to specific team members
  • Mentions: Tag team members using @username to request input
  • Task Lists: Create checklists within issues using - [ ] syntax

Examples

Creating an issue via GitHub CLI:

gh issue create --title "Login button doesn't work" --body "When clicking the login button, nothing happens."

Example issue template:

name: Bug Report
description: File a bug report
body:
  - type: markdown
    attributes:
      value: |
        Thanks for taking the time to fill out this bug report!
  - type: input
    id: what-happened
    attributes:
      label: What happened?
      description: Also tell us, what did you expect to happen?
    validations:
      required: true
  - type: dropdown
    id: browsers
    attributes:
      label: What browsers are you seeing the problem on?
      multiple: true
      options:
        - Firefox
        - Chrome
        - Safari
        - Microsoft Edge

Linking an issue to a pull request:

This PR fixes #123 and addresses #456

Projects

Projects are flexible Kanban-style boards for organizing work and tracking progress across GitHub issues and pull requests.

Expand for more details

Key Features

  • Boards: Customizable Kanban-style boards with columns (e.g., To Do, In Progress, Done)
  • Cards: Issues, pull requests, or notes that move between columns
  • Automation: Automatically move cards based on events like PR creation
  • Views: Table, board, or roadmap views for different perspectives
  • Custom Fields: Add metadata like priority, effort, or custom categories
  • Filters: Focus on specific aspects of the project by assignee, label, etc.

Examples

Basic project board structure:

  • To Do
  • In Progress
  • Review
  • Done

Automation rules example:

  • When issues are opened → Add to "To Do" column
  • When pull requests are opened → Move card to "In Progress" column
  • When pull requests are merged → Move card to "Done" column

GitHub CLI commands:

# Create a new project
gh project create "Q3 Feature Roadmap" --org "your-organization"

# Add an issue to a project
gh project item-add <project-number> --issue <issue-number>

GitHub Pages

GitHub Pages is a free hosting service for static websites directly from GitHub repositories, perfect for project documentation, blogs, portfolios, or simple web applications.

Expand for more details

Key Features

  • Free Hosting: No cost for public repositories
  • Custom Domains: Connect your own domain name
  • HTTPS: Automatic SSL certificate provisioning
  • Jekyll Integration: Built-in support for Jekyll static site generator
  • Automatic Builds: Sites rebuilt automatically when you push changes

Setup Process

  1. Create repository with content
  2. Go to repository Settings → Pages
  3. Select source branch/folder
  4. (Optional) Configure custom domain
  5. Site is published at username.github.io/repository

Examples

Simple index.html file:

<!DOCTYPE html>
<html>
<head>
    <title>My GitHub Pages Site</title>
</head>
<body>
    <h1>Hello World!</h1>
    <p>This site is hosted with GitHub Pages.</p>
</body>
</html>

Jekyll configuration (_config.yml):

theme: jekyll-theme-minimal
title: My Project Documentation
description: Comprehensive guides for using my awesome project

Custom 404 page (404.html):

<!DOCTYPE html>
<html>
<head>
    <title>Page Not Found</title>
</head>
<body>
    <h1>404 - Page Not Found</h1>
    <p>The page you were looking for doesn't exist.</p>
    <a href="/">Go back home</a>
</body>
</html>

Security Tools

GitHub provides a comprehensive suite of security tools to identify and fix vulnerabilities in your code and dependencies.

Expand for more details

Key Features

  • Dependabot: Automatically detects vulnerable dependencies and creates PRs to update them
  • Code Scanning: Uses CodeQL to identify potential security issues in your code
  • Secret Scanning: Prevents accidental credential exposure in your repositories
  • Security Advisories: Private workspace for vulnerability reporting and fixes

Examples

Dependabot configuration (dependabot.yml):

version: 2
updates:
  - package-ecosystem: "npm"
    directory: "/"
    schedule:
      interval: "weekly"
    security-updates-only: true

Code scanning workflow (.github/workflows/codeql.yml):

name: "CodeQL"
on:
  push:
    branches: [ main ]
  pull_request:
    branches: [ main ]
jobs:
  analyze:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v3
    - uses: github/codeql-action/init@v2
      with:
        languages: javascript, python
    - uses: github/codeql-action/analyze@v2

Security policy file (SECURITY.md):

# Security Policy

## Reporting a Vulnerability

Please report security vulnerabilities to [email protected].

We will acknowledge receipt of your vulnerability report within 24 hours and send a more detailed response within 48 hours indicating next steps.

Codespaces

Codespaces provides cloud-based development environments that are fully configured and ready to code, eliminating environment setup time and works on my machine problems.

Expand for more details

Key Features

  • Pre-configured Environments: Start coding immediately without setup
  • Customization: Define dev container configuration in repository
  • Extension Support: Use VS Code extensions in the cloud
  • Port Forwarding: Test web apps with public/private URL options
  • Persistent Storage: Keep your work between sessions
  • Collaboration: Share running environments with team members

Examples

Dev container configuration (.devcontainer/devcontainer.json):

{
  "name": "Node.js & MongoDB",
  "dockerComposeFile": "docker-compose.yml",
  "service": "app",
  "workspaceFolder": "/workspace",
  "extensions": [
    "dbaeumer.vscode-eslint",
    "mongodb.mongodb-vscode"
  ],
  "forwardPorts": [3000, 27017],
  "postCreateCommand": "npm install",
  "settings": {
    "terminal.integrated.defaultProfile.linux": "bash"
  }
}

Docker Compose file (.devcontainer/docker-compose.yml):

version: '3'
services:
  app:
    build: 
      context: .
      dockerfile: Dockerfile
    volumes:
      - ..:/workspace:cached
    command: sleep infinity
    network_mode: service:db
  
  db:
    image: mongo:latest
    restart: unless-stopped
    volumes:
      - mongodb-data:/data/db

volumes:
  mongodb-data:

GitHub CLI commands:

# Create new codespace
gh codespace create

# Open an existing codespace in VS Code
gh codespace code

# Stop a codespace
gh codespace stop

Areas

Feature/Area Description Purpose
GitHub Enterprise Cloud A cloud-hosted version of GitHub for businesses, offering advanced collaboration and security tools. Provides scalability, security, and compliance for organizations using GitHub in the cloud.
GitHub Enterprise Server A self-hosted version of GitHub for businesses, deployed on-premises or in a private cloud. Offers full control over GitHub infrastructure for organizations with strict compliance needs.
GitHub Advanced Security Includes tools like Code Scanning and Secret Scanning to identify vulnerabilities in code. Helps secure codebases by detecting vulnerabilities and exposed secrets.
GitHub Copilot for Business AI-powered code completion tool tailored for teams and organizations. Boosts developer productivity by suggesting code snippets and automating repetitive tasks.
GitHub Copilot for Enterprise AI-powered code completion tool designed for large-scale enterprise use. Provides AI-driven coding assistance with enterprise-grade security and scalability.
GitHub Actions Automation platform for CI/CD workflows, enabling testing, building, and deployment. Streamlines development workflows by automating repetitive tasks.
GitHub Code Quality A forthcoming feature focused on improving code quality through automated analysis. Aims to provide insights and recommendations to improve code maintainability and readability.
Total views

Refresh Date: 2025-08-29

About

GitHub Overview. For official guidance, support, or more detailed information, please refer to Microsoft's official documentation or contact Microsoft directly.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •