{
  "schemaVersion": "1.0",
  "item": {
    "slug": "git-essentials",
    "name": "Git Essentials",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/Arnarsson/git-essentials",
    "canonicalUrl": "https://clawhub.ai/Arnarsson/git-essentials",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/git-essentials",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=git-essentials",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "slug": "git-essentials",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-05-03T16:32:18.046Z",
      "expiresAt": "2026-05-10T16:32:18.046Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=git-essentials",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=git-essentials",
        "contentDisposition": "attachment; filename=\"git-essentials-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null,
        "slug": "git-essentials"
      },
      "scope": "item",
      "summary": "Item download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this item.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/git-essentials"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/git-essentials",
    "agentPageUrl": "https://openagent3.xyz/skills/git-essentials/agent",
    "manifestUrl": "https://openagent3.xyz/skills/git-essentials/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/git-essentials/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "Git Essentials",
        "body": "Essential Git commands for version control and collaboration."
      },
      {
        "title": "Initial Setup",
        "body": "# Configure user\ngit config --global user.name \"Your Name\"\ngit config --global user.email \"your@email.com\"\n\n# Initialize repository\ngit init\n\n# Clone repository\ngit clone https://github.com/user/repo.git\ngit clone https://github.com/user/repo.git custom-name"
      },
      {
        "title": "Staging and committing",
        "body": "# Check status\ngit status\n\n# Add files to staging\ngit add file.txt\ngit add .\ngit add -A  # All changes including deletions\n\n# Commit changes\ngit commit -m \"Commit message\"\n\n# Add and commit in one step\ngit commit -am \"Message\"\n\n# Amend last commit\ngit commit --amend -m \"New message\"\ngit commit --amend --no-edit  # Keep message"
      },
      {
        "title": "Viewing changes",
        "body": "# Show unstaged changes\ngit diff\n\n# Show staged changes\ngit diff --staged\n\n# Show changes in specific file\ngit diff file.txt\n\n# Show changes between commits\ngit diff commit1 commit2"
      },
      {
        "title": "Branch management",
        "body": "# List branches\ngit branch\ngit branch -a  # Include remote branches\n\n# Create branch\ngit branch feature-name\n\n# Switch branch\ngit checkout feature-name\ngit switch feature-name  # Modern alternative\n\n# Create and switch\ngit checkout -b feature-name\ngit switch -c feature-name\n\n# Delete branch\ngit branch -d branch-name\ngit branch -D branch-name  # Force delete\n\n# Rename branch\ngit branch -m old-name new-name"
      },
      {
        "title": "Merging",
        "body": "# Merge branch into current\ngit merge feature-name\n\n# Merge with no fast-forward\ngit merge --no-ff feature-name\n\n# Abort merge\ngit merge --abort\n\n# Show merge conflicts\ngit diff --name-only --diff-filter=U"
      },
      {
        "title": "Managing remotes",
        "body": "# List remotes\ngit remote -v\n\n# Add remote\ngit remote add origin https://github.com/user/repo.git\n\n# Change remote URL\ngit remote set-url origin https://github.com/user/new-repo.git\n\n# Remove remote\ngit remote remove origin"
      },
      {
        "title": "Syncing with remote",
        "body": "# Fetch from remote\ngit fetch origin\n\n# Pull changes (fetch + merge)\ngit pull\n\n# Pull with rebase\ngit pull --rebase\n\n# Push changes\ngit push\n\n# Push new branch\ngit push -u origin branch-name\n\n# Force push (careful!)\ngit push --force-with-lease"
      },
      {
        "title": "Viewing history",
        "body": "# Show commit history\ngit log\n\n# One line per commit\ngit log --oneline\n\n# With graph\ngit log --graph --oneline --all\n\n# Last N commits\ngit log -5\n\n# Commits by author\ngit log --author=\"Name\"\n\n# Commits in date range\ngit log --since=\"2 weeks ago\"\ngit log --until=\"2024-01-01\"\n\n# File history\ngit log -- file.txt"
      },
      {
        "title": "Searching history",
        "body": "# Search commit messages\ngit log --grep=\"bug fix\"\n\n# Search code changes\ngit log -S \"function_name\"\n\n# Show who changed each line\ngit blame file.txt\n\n# Find commit that introduced bug\ngit bisect start\ngit bisect bad\ngit bisect good commit-hash"
      },
      {
        "title": "Working directory",
        "body": "# Discard changes in file\ngit restore file.txt\ngit checkout -- file.txt  # Old way\n\n# Discard all changes\ngit restore ."
      },
      {
        "title": "Staging area",
        "body": "# Unstage file\ngit restore --staged file.txt\ngit reset HEAD file.txt  # Old way\n\n# Unstage all\ngit reset"
      },
      {
        "title": "Commits",
        "body": "# Undo last commit (keep changes)\ngit reset --soft HEAD~1\n\n# Undo last commit (discard changes)\ngit reset --hard HEAD~1\n\n# Revert commit (create new commit)\ngit revert commit-hash\n\n# Reset to specific commit\ngit reset --hard commit-hash"
      },
      {
        "title": "Stashing",
        "body": "# Stash changes\ngit stash\n\n# Stash with message\ngit stash save \"Work in progress\"\n\n# List stashes\ngit stash list\n\n# Apply latest stash\ngit stash apply\n\n# Apply and remove stash\ngit stash pop\n\n# Apply specific stash\ngit stash apply stash@{2}\n\n# Delete stash\ngit stash drop stash@{0}\n\n# Clear all stashes\ngit stash clear"
      },
      {
        "title": "Rebasing",
        "body": "# Rebase current branch\ngit rebase main\n\n# Interactive rebase (last 3 commits)\ngit rebase -i HEAD~3\n\n# Continue after resolving conflicts\ngit rebase --continue\n\n# Skip current commit\ngit rebase --skip\n\n# Abort rebase\ngit rebase --abort"
      },
      {
        "title": "Tags",
        "body": "# List tags\ngit tag\n\n# Create lightweight tag\ngit tag v1.0.0\n\n# Create annotated tag\ngit tag -a v1.0.0 -m \"Version 1.0.0\"\n\n# Tag specific commit\ngit tag v1.0.0 commit-hash\n\n# Push tag\ngit push origin v1.0.0\n\n# Push all tags\ngit push --tags\n\n# Delete tag\ngit tag -d v1.0.0\ngit push origin --delete v1.0.0"
      },
      {
        "title": "Cherry-pick",
        "body": "# Apply specific commit\ngit cherry-pick commit-hash\n\n# Cherry-pick without committing\ngit cherry-pick -n commit-hash"
      },
      {
        "title": "Submodules",
        "body": "# Add submodule\ngit submodule add https://github.com/user/repo.git path/\n\n# Initialize submodules\ngit submodule init\n\n# Update submodules\ngit submodule update\n\n# Clone with submodules\ngit clone --recursive https://github.com/user/repo.git"
      },
      {
        "title": "Clean",
        "body": "# Preview files to be deleted\ngit clean -n\n\n# Delete untracked files\ngit clean -f\n\n# Delete untracked files and directories\ngit clean -fd\n\n# Include ignored files\ngit clean -fdx"
      },
      {
        "title": "Common Workflows",
        "body": "Feature branch workflow:\n\ngit checkout -b feature/new-feature\n# Make changes\ngit add .\ngit commit -m \"Add new feature\"\ngit push -u origin feature/new-feature\n# Create PR, then after merge:\ngit checkout main\ngit pull\ngit branch -d feature/new-feature\n\nHotfix workflow:\n\ngit checkout main\ngit pull\ngit checkout -b hotfix/critical-bug\n# Fix bug\ngit commit -am \"Fix critical bug\"\ngit push -u origin hotfix/critical-bug\n# After merge:\ngit checkout main && git pull\n\nSyncing fork:\n\ngit remote add upstream https://github.com/original/repo.git\ngit fetch upstream\ngit checkout main\ngit merge upstream/main\ngit push origin main"
      },
      {
        "title": "Useful Aliases",
        "body": "Add to ~/.gitconfig:\n\n[alias]\n    st = status\n    co = checkout\n    br = branch\n    ci = commit\n    unstage = reset HEAD --\n    last = log -1 HEAD\n    visual = log --graph --oneline --all\n    amend = commit --amend --no-edit"
      },
      {
        "title": "Tips",
        "body": "Commit often, perfect later (interactive rebase)\nWrite meaningful commit messages\nUse .gitignore for files to exclude\nNever force push to shared branches\nPull before starting work\nUse feature branches, not main\nRebase feature branches before merging\nUse --force-with-lease instead of --force"
      },
      {
        "title": "Common Issues",
        "body": "Undo accidental commit:\n\ngit reset --soft HEAD~1\n\nRecover deleted branch:\n\ngit reflog\ngit checkout -b branch-name <commit-hash>\n\nFix wrong commit message:\n\ngit commit --amend -m \"Correct message\"\n\nResolve merge conflicts:\n\n# Edit files to resolve conflicts\ngit add resolved-files\ngit commit  # Or git merge --continue"
      },
      {
        "title": "Documentation",
        "body": "Official docs: https://git-scm.com/doc\nPro Git book: https://git-scm.com/book\nVisual Git guide: https://marklodato.github.io/visual-git-guide/"
      }
    ],
    "body": "Git Essentials\n\nEssential Git commands for version control and collaboration.\n\nInitial Setup\n# Configure user\ngit config --global user.name \"Your Name\"\ngit config --global user.email \"your@email.com\"\n\n# Initialize repository\ngit init\n\n# Clone repository\ngit clone https://github.com/user/repo.git\ngit clone https://github.com/user/repo.git custom-name\n\nBasic Workflow\nStaging and committing\n# Check status\ngit status\n\n# Add files to staging\ngit add file.txt\ngit add .\ngit add -A  # All changes including deletions\n\n# Commit changes\ngit commit -m \"Commit message\"\n\n# Add and commit in one step\ngit commit -am \"Message\"\n\n# Amend last commit\ngit commit --amend -m \"New message\"\ngit commit --amend --no-edit  # Keep message\n\nViewing changes\n# Show unstaged changes\ngit diff\n\n# Show staged changes\ngit diff --staged\n\n# Show changes in specific file\ngit diff file.txt\n\n# Show changes between commits\ngit diff commit1 commit2\n\nBranching & Merging\nBranch management\n# List branches\ngit branch\ngit branch -a  # Include remote branches\n\n# Create branch\ngit branch feature-name\n\n# Switch branch\ngit checkout feature-name\ngit switch feature-name  # Modern alternative\n\n# Create and switch\ngit checkout -b feature-name\ngit switch -c feature-name\n\n# Delete branch\ngit branch -d branch-name\ngit branch -D branch-name  # Force delete\n\n# Rename branch\ngit branch -m old-name new-name\n\nMerging\n# Merge branch into current\ngit merge feature-name\n\n# Merge with no fast-forward\ngit merge --no-ff feature-name\n\n# Abort merge\ngit merge --abort\n\n# Show merge conflicts\ngit diff --name-only --diff-filter=U\n\nRemote Operations\nManaging remotes\n# List remotes\ngit remote -v\n\n# Add remote\ngit remote add origin https://github.com/user/repo.git\n\n# Change remote URL\ngit remote set-url origin https://github.com/user/new-repo.git\n\n# Remove remote\ngit remote remove origin\n\nSyncing with remote\n# Fetch from remote\ngit fetch origin\n\n# Pull changes (fetch + merge)\ngit pull\n\n# Pull with rebase\ngit pull --rebase\n\n# Push changes\ngit push\n\n# Push new branch\ngit push -u origin branch-name\n\n# Force push (careful!)\ngit push --force-with-lease\n\nHistory & Logs\nViewing history\n# Show commit history\ngit log\n\n# One line per commit\ngit log --oneline\n\n# With graph\ngit log --graph --oneline --all\n\n# Last N commits\ngit log -5\n\n# Commits by author\ngit log --author=\"Name\"\n\n# Commits in date range\ngit log --since=\"2 weeks ago\"\ngit log --until=\"2024-01-01\"\n\n# File history\ngit log -- file.txt\n\nSearching history\n# Search commit messages\ngit log --grep=\"bug fix\"\n\n# Search code changes\ngit log -S \"function_name\"\n\n# Show who changed each line\ngit blame file.txt\n\n# Find commit that introduced bug\ngit bisect start\ngit bisect bad\ngit bisect good commit-hash\n\nUndoing Changes\nWorking directory\n# Discard changes in file\ngit restore file.txt\ngit checkout -- file.txt  # Old way\n\n# Discard all changes\ngit restore .\n\nStaging area\n# Unstage file\ngit restore --staged file.txt\ngit reset HEAD file.txt  # Old way\n\n# Unstage all\ngit reset\n\nCommits\n# Undo last commit (keep changes)\ngit reset --soft HEAD~1\n\n# Undo last commit (discard changes)\ngit reset --hard HEAD~1\n\n# Revert commit (create new commit)\ngit revert commit-hash\n\n# Reset to specific commit\ngit reset --hard commit-hash\n\nStashing\n# Stash changes\ngit stash\n\n# Stash with message\ngit stash save \"Work in progress\"\n\n# List stashes\ngit stash list\n\n# Apply latest stash\ngit stash apply\n\n# Apply and remove stash\ngit stash pop\n\n# Apply specific stash\ngit stash apply stash@{2}\n\n# Delete stash\ngit stash drop stash@{0}\n\n# Clear all stashes\ngit stash clear\n\nRebasing\n# Rebase current branch\ngit rebase main\n\n# Interactive rebase (last 3 commits)\ngit rebase -i HEAD~3\n\n# Continue after resolving conflicts\ngit rebase --continue\n\n# Skip current commit\ngit rebase --skip\n\n# Abort rebase\ngit rebase --abort\n\nTags\n# List tags\ngit tag\n\n# Create lightweight tag\ngit tag v1.0.0\n\n# Create annotated tag\ngit tag -a v1.0.0 -m \"Version 1.0.0\"\n\n# Tag specific commit\ngit tag v1.0.0 commit-hash\n\n# Push tag\ngit push origin v1.0.0\n\n# Push all tags\ngit push --tags\n\n# Delete tag\ngit tag -d v1.0.0\ngit push origin --delete v1.0.0\n\nAdvanced Operations\nCherry-pick\n# Apply specific commit\ngit cherry-pick commit-hash\n\n# Cherry-pick without committing\ngit cherry-pick -n commit-hash\n\nSubmodules\n# Add submodule\ngit submodule add https://github.com/user/repo.git path/\n\n# Initialize submodules\ngit submodule init\n\n# Update submodules\ngit submodule update\n\n# Clone with submodules\ngit clone --recursive https://github.com/user/repo.git\n\nClean\n# Preview files to be deleted\ngit clean -n\n\n# Delete untracked files\ngit clean -f\n\n# Delete untracked files and directories\ngit clean -fd\n\n# Include ignored files\ngit clean -fdx\n\nCommon Workflows\n\nFeature branch workflow:\n\ngit checkout -b feature/new-feature\n# Make changes\ngit add .\ngit commit -m \"Add new feature\"\ngit push -u origin feature/new-feature\n# Create PR, then after merge:\ngit checkout main\ngit pull\ngit branch -d feature/new-feature\n\n\nHotfix workflow:\n\ngit checkout main\ngit pull\ngit checkout -b hotfix/critical-bug\n# Fix bug\ngit commit -am \"Fix critical bug\"\ngit push -u origin hotfix/critical-bug\n# After merge:\ngit checkout main && git pull\n\n\nSyncing fork:\n\ngit remote add upstream https://github.com/original/repo.git\ngit fetch upstream\ngit checkout main\ngit merge upstream/main\ngit push origin main\n\nUseful Aliases\n\nAdd to ~/.gitconfig:\n\n[alias]\n    st = status\n    co = checkout\n    br = branch\n    ci = commit\n    unstage = reset HEAD --\n    last = log -1 HEAD\n    visual = log --graph --oneline --all\n    amend = commit --amend --no-edit\n\nTips\nCommit often, perfect later (interactive rebase)\nWrite meaningful commit messages\nUse .gitignore for files to exclude\nNever force push to shared branches\nPull before starting work\nUse feature branches, not main\nRebase feature branches before merging\nUse --force-with-lease instead of --force\nCommon Issues\n\nUndo accidental commit:\n\ngit reset --soft HEAD~1\n\n\nRecover deleted branch:\n\ngit reflog\ngit checkout -b branch-name <commit-hash>\n\n\nFix wrong commit message:\n\ngit commit --amend -m \"Correct message\"\n\n\nResolve merge conflicts:\n\n# Edit files to resolve conflicts\ngit add resolved-files\ngit commit  # Or git merge --continue\n\nDocumentation\n\nOfficial docs: https://git-scm.com/doc Pro Git book: https://git-scm.com/book Visual Git guide: https://marklodato.github.io/visual-git-guide/"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/Arnarsson/git-essentials",
    "publisherUrl": "https://clawhub.ai/Arnarsson/git-essentials",
    "owner": "Arnarsson",
    "version": "1.0.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/git-essentials",
    "downloadUrl": "https://openagent3.xyz/downloads/git-essentials",
    "agentUrl": "https://openagent3.xyz/skills/git-essentials/agent",
    "manifestUrl": "https://openagent3.xyz/skills/git-essentials/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/git-essentials/agent.md"
  }
}