forked from LengKundee/MQL5-Google-Onedrive
437 lines
12 KiB
Markdown
437 lines
12 KiB
Markdown
# GitHub Gists Guide
|
|
|
|
## Overview
|
|
|
|
GitHub Gists provide a simple way to share code snippets, notes, and other text content with others. Every gist is a Git repository, which means it can be forked, cloned, and versioned just like a regular repository.
|
|
|
|
## What are Gists?
|
|
|
|
Gists are useful for:
|
|
- Sharing code snippets quickly
|
|
- Creating simple documentation
|
|
- Storing configuration files
|
|
- Embedding code examples in blogs or websites
|
|
- Collaborating on small pieces of code
|
|
- Creating quick demos or examples
|
|
- Saving command-line scripts
|
|
|
|
## Types of Gists
|
|
|
|
### Public Gists
|
|
- Visible to everyone and searchable
|
|
- Show up in GitHub's [Discover](https://gist.github.com/discover) section
|
|
- Can be found through search engines
|
|
- Good for sharing examples you want others to find
|
|
|
|
### Secret Gists
|
|
- Not searchable or discoverable (unless you're logged in and are the author)
|
|
- Anyone with the URL can view the gist
|
|
- **Not truly private** - if someone discovers the URL, they can see it
|
|
- Good for sharing with specific people via direct link
|
|
- For truly private code, use a [private repository](https://docs.github.com/en/repositories/creating-and-managing-repositories/creating-a-new-repository) instead
|
|
|
|
**Important:** GitHub automatically scans secret gists for leaked secrets (API keys, passwords, etc.) and notifies the relevant partners if detected.
|
|
|
|
## Creating a Gist
|
|
|
|
### Method 1: Via GitHub Website
|
|
|
|
1. **Sign in** to your GitHub account
|
|
|
|
2. **Navigate** to your gist home page: [https://gist.github.com/](https://gist.github.com/)
|
|
|
|
3. **Click** the "+" icon in the top right corner
|
|
|
|
4. **Fill in the gist details:**
|
|
- **Gist description** (optional): A brief description of what the gist contains
|
|
- **Filename including extension**: Give your file a name with the appropriate extension (e.g., `script.py`, `config.json`, `notes.md`)
|
|
- **File contents**: Paste or type your code/content
|
|
|
|
5. **Add more files** (optional): Click "Add file" to include multiple files in one gist
|
|
|
|
6. **Choose visibility:**
|
|
- Click **"Create secret gist"** for a secret gist (default)
|
|
- Or click the dropdown and select **"Create public gist"**
|
|
|
|
### Method 2: Via GitHub CLI
|
|
|
|
You can also create gists using the GitHub CLI (`gh`):
|
|
|
|
```bash
|
|
# Create a public gist from a file
|
|
gh gist create myfile.py --public
|
|
|
|
# Create a secret gist from a file
|
|
gh gist create myfile.py
|
|
|
|
# Create a gist from stdin
|
|
echo "print('Hello, World!')" | gh gist create --filename hello.py
|
|
|
|
# Create a gist with description
|
|
gh gist create myfile.py --desc "My awesome Python script"
|
|
|
|
# Create a multi-file gist
|
|
gh gist create file1.py file2.py file3.py
|
|
```
|
|
|
|
For more information, see [`gh gist create`](https://cli.github.com/manual/gh_gist_create) in the GitHub CLI documentation.
|
|
|
|
### Method 3: Drag and Drop
|
|
|
|
You can drag and drop a text file from your desktop directly into the gist editor on the GitHub website.
|
|
|
|
## Managing Your Gists
|
|
|
|
### Viewing Your Gists
|
|
|
|
1. Go to [https://gist.github.com/](https://gist.github.com/)
|
|
2. Click your profile picture in the top right
|
|
3. Select "Your gists" to see all your gists
|
|
|
|
Or visit: `https://gist.github.com/[your-username]`
|
|
|
|
### Editing a Gist
|
|
|
|
1. Navigate to the gist you want to edit
|
|
2. Click the **"Edit"** button in the top right
|
|
3. Make your changes
|
|
4. Click **"Update secret gist"** or **"Update public gist"**
|
|
|
|
### Deleting a Gist
|
|
|
|
1. Navigate to the gist you want to delete
|
|
2. Click the **"Delete"** button in the top right
|
|
3. Confirm the deletion
|
|
|
|
**Note:** Deleting a gist cannot be undone.
|
|
|
|
### Making a Secret Gist Public
|
|
|
|
Secret gists can be converted to public gists:
|
|
1. Open the secret gist
|
|
2. Click **"Edit"**
|
|
3. Change the visibility to public
|
|
4. Save the changes
|
|
|
|
**Note:** You cannot convert a public gist to secret.
|
|
|
|
## Advanced Gist Features
|
|
|
|
### Viewing Commit History
|
|
|
|
Since gists are Git repositories:
|
|
1. Click the **"Revisions"** tab on any gist
|
|
2. View the full commit history with diffs
|
|
3. Click any revision to see what changed
|
|
|
|
### Forking Gists
|
|
|
|
To create your own copy of someone else's gist:
|
|
1. Open the gist you want to fork
|
|
2. Click the **"Fork"** button in the top right
|
|
3. You now have your own copy to modify
|
|
|
|
### Cloning Gists
|
|
|
|
Clone a gist to your local machine:
|
|
|
|
```bash
|
|
# Clone via HTTPS
|
|
git clone https://gist.github.com/[gist-id].git
|
|
|
|
# Clone via SSH
|
|
git clone git@gist.github.com:[gist-id].git
|
|
|
|
# Example
|
|
git clone https://gist.github.com/123abc456def.git my-gist
|
|
cd my-gist
|
|
```
|
|
|
|
### Starring Gists
|
|
|
|
To save gists you find useful:
|
|
1. Open the gist
|
|
2. Click the **"Star"** button
|
|
3. View your starred gists at: `https://gist.github.com/[username]/starred`
|
|
|
|
### Embedding Gists
|
|
|
|
Embed gists in websites, blogs, or documentation:
|
|
|
|
1. Open the gist
|
|
2. Click the **"Embed"** button
|
|
3. Copy the embed code (JavaScript snippet)
|
|
4. Paste into your HTML
|
|
|
|
```html
|
|
<script src="https://gist.github.com/[username]/[gist-id].js"></script>
|
|
```
|
|
|
|
To embed a specific file from a multi-file gist:
|
|
```html
|
|
<script src="https://gist.github.com/[username]/[gist-id].js?file=filename.ext"></script>
|
|
```
|
|
|
|
### Downloading Gists
|
|
|
|
Download a gist as a ZIP file:
|
|
1. Open the gist
|
|
2. Click **"Download ZIP"** in the top right
|
|
|
|
Or download via command line:
|
|
```bash
|
|
# Using GitHub CLI
|
|
gh gist view [gist-id] > myfile.py
|
|
|
|
# Using wget
|
|
wget https://gist.githubusercontent.com/[username]/[gist-id]/raw/[commit-hash]/[filename]
|
|
|
|
# Using curl
|
|
curl https://gist.githubusercontent.com/[username]/[gist-id]/raw/[filename]
|
|
```
|
|
|
|
### Subscribing to Gists
|
|
|
|
Receive notifications about gist updates:
|
|
1. Open the gist
|
|
2. Click **"Subscribe"** at the top
|
|
3. You'll be notified when the gist is updated or someone comments
|
|
|
|
## Notifications
|
|
|
|
You'll receive notifications when:
|
|
- You are the author of a gist
|
|
- Someone mentions you in a gist comment
|
|
- You subscribe to a gist
|
|
|
|
## Special Features
|
|
|
|
### GeoJSON Mapping
|
|
|
|
Gists support GeoJSON files and will display them as interactive maps:
|
|
1. Create a gist with a `.geojson` file
|
|
2. GitHub will automatically render it as a map
|
|
|
|
### Syntax Highlighting
|
|
|
|
Gists automatically apply syntax highlighting based on file extension:
|
|
- `.py` - Python
|
|
- `.js` - JavaScript
|
|
- `.mq5` - MQL5 (MetaQuotes Language)
|
|
- `.json` - JSON
|
|
- `.yaml` or `.yml` - YAML
|
|
- And many more...
|
|
|
|
## Using Gists with GitHub CLI
|
|
|
|
The GitHub CLI provides powerful gist management:
|
|
|
|
```bash
|
|
# List your gists
|
|
gh gist list
|
|
|
|
# View a gist
|
|
gh gist view [gist-id]
|
|
|
|
# Edit a gist
|
|
gh gist edit [gist-id]
|
|
|
|
# Delete a gist
|
|
gh gist delete [gist-id]
|
|
|
|
# Clone a gist
|
|
gh gist clone [gist-id]
|
|
```
|
|
|
|
## Practical Examples for This Project
|
|
|
|
### Example 1: Share MQL5 Strategy Snippet
|
|
|
|
Create a gist to share a small MQL5 trading strategy:
|
|
|
|
```mql5
|
|
//+------------------------------------------------------------------+
|
|
//| Quick SMC BOS Detection Snippet |
|
|
//+------------------------------------------------------------------+
|
|
bool DetectBOS(double currentHigh, double currentLow,
|
|
double prevHigh, double prevLow)
|
|
{
|
|
// Bullish BOS: current high breaks previous high
|
|
if(currentHigh > prevHigh)
|
|
return true;
|
|
|
|
// Bearish BOS: current low breaks previous low
|
|
if(currentLow < prevLow)
|
|
return true;
|
|
|
|
return false;
|
|
}
|
|
```
|
|
|
|
Save as: `smc_bos_detection.mq5`
|
|
Description: "Quick Break of Structure (BOS) detection for MQL5"
|
|
|
|
### Example 2: Share Configuration File
|
|
|
|
Share your MT5 startup configuration:
|
|
|
|
```json
|
|
{
|
|
"mt5_path": "C:\\Program Files\\MetaTrader 5\\terminal64.exe",
|
|
"auto_login": true,
|
|
"enable_alerts": true,
|
|
"risk_percent": 1.0,
|
|
"max_positions": 3
|
|
}
|
|
```
|
|
|
|
Save as: `mt5_config.json`
|
|
Description: "MT5 startup configuration template"
|
|
|
|
### Example 3: Share Automation Script
|
|
|
|
Share a useful automation script:
|
|
|
|
```bash
|
|
#!/bin/bash
|
|
# Quick MT5 deployment helper
|
|
MT5_DATA_FOLDER="$1"
|
|
|
|
if [ -z "$MT5_DATA_FOLDER" ]; then
|
|
echo "Usage: $0 <MT5_DATA_FOLDER>"
|
|
exit 1
|
|
fi
|
|
|
|
echo "Deploying to: $MT5_DATA_FOLDER"
|
|
cp -v mt5/MQL5/Indicators/*.mq5 "$MT5_DATA_FOLDER/MQL5/Indicators/"
|
|
cp -v mt5/MQL5/Experts/*.mq5 "$MT5_DATA_FOLDER/MQL5/Experts/"
|
|
echo "Deployment complete!"
|
|
```
|
|
|
|
Save as: `quick_deploy.sh`
|
|
Description: "Quick MT5 indicator and EA deployment script"
|
|
|
|
## Discovering Public Gists
|
|
|
|
Find useful gists created by others:
|
|
|
|
1. **All Gists:** Visit [gist.github.com](https://gist.github.com/) and click "All Gists"
|
|
2. **Discover:** Browse [gist.github.com/discover](https://gist.github.com/discover) for featured gists
|
|
3. **Search:** Use [Gist Search](https://gist.github.com/search) to find specific content
|
|
4. **By Language:** Filter gists by programming language
|
|
|
|
## Pinning Gists to Your Profile
|
|
|
|
You can pin gists to your GitHub profile:
|
|
|
|
1. Go to your GitHub profile page
|
|
2. Click **"Customize your pins"**
|
|
3. Select gists you want to showcase
|
|
4. Rearrange them as desired
|
|
|
|
Pinned gists appear alongside pinned repositories on your profile.
|
|
|
|
## Best Practices
|
|
|
|
1. **Use Descriptive Names:** Give your files meaningful names with proper extensions
|
|
2. **Add Descriptions:** Help others understand what your gist contains
|
|
3. **Keep It Focused:** Each gist should contain related files for a single purpose
|
|
4. **Use Comments:** Add comments to explain complex code
|
|
5. **Update Rather Than Delete:** Edit existing gists instead of creating duplicates
|
|
6. **Choose Visibility Wisely:** Use secret for drafts, public for sharing
|
|
7. **Version Control:** Gists maintain history, so don't be afraid to update them
|
|
8. **No Secrets:** Never put passwords, API keys, or sensitive data in gists (even secret ones)
|
|
|
|
## Common Use Cases
|
|
|
|
### For Traders and Developers
|
|
|
|
1. **Share Trading Signals:** Post formatted market analysis or trade ideas
|
|
2. **Configuration Snippets:** Share EA settings or indicator parameters
|
|
3. **Helper Functions:** Share reusable MQL5 functions
|
|
4. **Installation Instructions:** Create step-by-step guides
|
|
5. **Troubleshooting Notes:** Document solutions to common problems
|
|
6. **Script Collections:** Organize related automation scripts
|
|
7. **API Examples:** Show how to integrate with trading APIs
|
|
|
|
## Gists vs Repositories
|
|
|
|
| Feature | Gists | Repositories |
|
|
|---------|-------|--------------|
|
|
| Purpose | Small snippets | Full projects |
|
|
| Size | Best for small files | Any size |
|
|
| Visibility | Public or Secret | Public, Private, or Internal |
|
|
| Issues/PRs | No | Yes |
|
|
| Projects | No | Yes |
|
|
| Wiki | No | Yes |
|
|
| Releases | No | Yes |
|
|
| Complexity | Simple | Full-featured |
|
|
|
|
**Use Gists when:** You want to quickly share small snippets or notes
|
|
**Use Repositories when:** You're building a full project with multiple collaborators
|
|
|
|
## GitHub CLI Reference
|
|
|
|
Quick reference for common gist operations:
|
|
|
|
```bash
|
|
# Create
|
|
gh gist create file.py --public --desc "Description"
|
|
|
|
# List
|
|
gh gist list --limit 10
|
|
gh gist list --public
|
|
gh gist list --secret
|
|
|
|
# View
|
|
gh gist view [gist-id]
|
|
gh gist view [gist-id] --web # Open in browser
|
|
gh gist view [gist-id] --files # List files
|
|
|
|
# Edit
|
|
gh gist edit [gist-id]
|
|
gh gist edit [gist-id] --add file.py # Add file
|
|
gh gist edit [gist-id] --remove file.py # Remove file
|
|
|
|
# Delete
|
|
gh gist delete [gist-id]
|
|
|
|
# Clone
|
|
gh gist clone [gist-id] [directory]
|
|
```
|
|
|
|
## Resources
|
|
|
|
- [GitHub Gists Official Guide](https://docs.github.com/en/get-started/writing-on-github/editing-and-sharing-content-with-gists/creating-gists)
|
|
- [Forking and Cloning Gists](https://docs.github.com/en/get-started/writing-on-github/editing-and-sharing-content-with-gists/forking-and-cloning-gists)
|
|
- [GitHub CLI Manual](https://cli.github.com/manual/)
|
|
- [GitHub Gist Home](https://gist.github.com/)
|
|
|
|
## Troubleshooting
|
|
|
|
**Q: My gist isn't showing syntax highlighting**
|
|
- Make sure you've included the correct file extension
|
|
- Some languages may not be supported
|
|
|
|
**Q: Can I make a public gist private?**
|
|
- No, you can only convert secret gists to public, not the reverse
|
|
- For private code, use a private repository
|
|
|
|
**Q: How do I delete all my gists at once?**
|
|
- There's no bulk delete feature
|
|
- You can use the GitHub API or CLI to automate deletion if needed
|
|
|
|
**Q: Can I password-protect a gist?**
|
|
- No, gists cannot be password-protected
|
|
- Use a private repository for sensitive content
|
|
|
|
**Q: Is there a size limit for gists?**
|
|
- Individual files should be reasonable in size
|
|
- For large files, use a repository instead
|
|
|
|
---
|
|
|
|
**Next Steps:**
|
|
- Create your first gist with a useful code snippet
|
|
- Explore the [GitHub Profile README Guide](GitHub_Profile_README_Guide.md) to showcase your work
|
|
- Check out the [GitHub CLI Setup Guide](GitHub_CLI_setup.md) for command-line gist management
|