Costa Rica
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.
Tip
For current Azure DevOps users, Microsoft suggest moving your repositories over to GitHub so you can make the most of the latest agentic AI features
. You can still keep using Azure Boards, Pipelines, and other tools like Test Plans thanks to our integrations.
Also, Azure DevOps basic usage rights now come with GitHub Enterprise
, and Microsoft working on making the migration process and integrations between GitHub and Azure DevOps even smoother.
List of References (Click to expand)
- GitHub Docs: Comprehensive documentation for all GitHub features and workflows.
- GitHub Actions: Learn how to automate workflows with GitHub Actions.
- GitHub Pages: Official guide to hosting static websites with GitHub Pages.
- Git Reference: Official documentation for Git commands and workflows.
- GitHub CLI: Command-line interface for GitHub.
- Pro Git Book: Free book on Git and version control.
- GitHub Security Features: Overview of GitHub's security tools.
- Dependabot: Automate dependency updates.
- CodeQL: Learn about GitHub's code scanning technology.
- GitHub Discussions: Community forum for GitHub users.
- GitHub Support: Contact GitHub support for help.
Table of content (Click to expand)
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 |
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 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
- 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
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 are flexible Kanban-style boards for organizing work and tracking progress across GitHub issues and pull requests.
Expand for more details
- 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.
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 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
- 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
- Create repository with content
- Go to repository Settings → Pages
- Select source branch/folder
- (Optional) Configure custom domain
- Site is published at username.github.io/repository
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>
&
A7FB
lt;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>
GitHub provides a comprehensive suite of security tools to identify and fix vulnerabilities in your code and dependencies.
Expand for more details
- 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
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 security@example.com.
We will acknowledge receipt of your vulnerability report within 24 hours and send a more detailed response within 48 hours indicating next steps.
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
- 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
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
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. |