mcpField
G
git-essentials

git-essentials

github.com/sundial-org开发670126 次安装34 周前更新
代码仓库

关于 git-essentials

git-essentials 是介绍常用 Git 命令与协作流程的参考技能,帮助开发者处理仓库变更、分支、远程仓库、历史记录及恢复操作。

主要功能

  1. 01暂存、提交和检查变更
  2. 02管理分支与合并
  3. 03与远程仓库同步
  4. 04搜索历史并查看日志
  5. 05撤销变更并恢复工作
  6. 06使用变基、标签和子模块

适用场景

  1. 01学习常用 Git 命令
  2. 02通过合并管理功能分支
  3. 03将 Fork 与上游仓库同步
  4. 04恢复误提交或删除的内容

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/sundial-org/awesome-openclaw-skills --skill git-essentials

安装后在 Claude Code 中输入/git-essentials确认已加载。

详细介绍

Git 基础知识

用于版本控制和协作的必备 Git 命令。

初始设置

# Configure user
git config --global user.name "Your Name"
git config --global user.email "[email protected]"

# Initialize repository
git init

# Clone repository
git clone https://github.com/user/repo.git
git clone https://github.com/user/repo.git custom-name

基本工作流

暂存和提交
# Check status
git status

# Add files to staging
git add file.txt
git add .
git add -A  # All changes including deletions

# Commit changes
git commit -m "Commit message"

# Add and commit in one step
git commit -am "Message"

# Amend last commit
git commit --amend -m "New message"
git commit --amend --no-edit  # Keep message
查看更改
# Show unstaged changes
git diff

# Show staged changes
git diff --staged

# Show changes in specific file
git diff file.txt

# Show changes between commits
git diff commit1 commit2

分支与合并

分支管理
# List branches
git branch
git branch -a  # Include remote branches

# Create branch
git branch feature-name

# Switch branch
git checkout feature-name
git switch feature-name  # Modern alternative

# Create and switch
git checkout -b feature-name
git switch -c feature-name

# Delete branch
git branch -d branch-name
git branch -D branch-name  # Force delete

# Rename branch
git branch -m old-name new-name
合并
# Merge branch into current
git merge feature-name

# Merge with no fast-forward
git merge --no-ff feature-name

# Abort merge
git merge --abort

# Show merge conflicts
git diff --name-only --diff-filter=U

远程操作

管理远程仓库
# List remotes
git remote -v

# Add remote
git remote add origin https://github.com/user/repo.git

# Change remote URL
git remote set-url origin https://github.com/user/new-repo.git

# Remove remote
git remote remove origin
与远程仓库同步
# Fetch from remote
git fetch origin

# Pull changes (fetch + merge)
git pull

# Pull with rebase
git pull --rebase

# Push changes
git push

# Push new branch
git push -u origin branch-name

# Force push (careful!)
git push --force-with-lease

历史记录与日志

查看历史记录
# Show commit history
git log

# One line per commit
git log --oneline

# With graph
git log --graph --oneline --all

# Last N commits
git log -5

# Commits by author
git log --author="Name"

# Commits in date range
git log --since="2 weeks ago"
git log --until="2024-01-01"

# File history
git log -- file.txt
搜索历史记录
# Search commit messages
git log --grep="bug fix"

# Search code changes
git log -S "function_name"

# Show who changed each line
git blame file.txt

# Find commit that introduced bug
git bisect start
git bisect bad
git bisect good commit-hash

撤销更改

工作目录
# Discard changes in file
git restore file.txt
git checkout -- file.txt  # Old way

# Discard all changes
git restore .
暂存区
# Unstage file
git restore --staged file.txt
git reset HEAD file.txt  # Old way

# Unstage all
git reset
提交
# Undo last commit (keep changes)
git reset --soft HEAD~1

# Undo last commit (discard changes)
git reset --hard HEAD~1

# Revert commit (create new commit)
git revert commit-hash

# Reset to specific commit
git reset --hard commit-hash

暂存更改

# Stash changes
git stash

# Stash with message
git stash save "Work in progress"

# List stashes
git stash list

# Apply latest stash
git stash apply

# Apply and remove stash
git stash pop

# Apply specific stash
git stash apply stash@{2}

# Delete stash
git stash drop stash@{0}

# Clear all stashes
git stash clear

变基

# Rebase current branch
git rebase main

# Interactive rebase (last 3 commits)
git rebase -i HEAD~3

# Continue after resolving conflicts
git rebase --continue

# Skip current commit
git rebase --skip

# Abort rebase
git rebase --abort

标签

# List tags
git tag

# Create lightweight tag
git tag v1.0.0

# Create annotated tag
git tag -a v1.0.0 -m "Version 1.0.0"

# Tag specific commit
git tag v1.0.0 commit-hash

# Push tag
git push origin v1.0.0

# Push all tags
git push --tags

# Delete tag
git tag -d v1.0.0
git push origin --delete v1.0.0

高级操作

拣选提交
# Apply specific commit
git cherry-pick commit-hash

# Cherry-pick without committing
git cherry-pick -n commit-hash
子模块
# Add submodule
git submodule add https://github.com/user/repo.git path/

# Initialize submodules
git submodule init

# Update submodules
git submodule update

# Clone with submodules
git clone --recursive https://github.com/user/repo.git
清理
# Preview files to be deleted
git clean -n

# Delete untracked files
git clean -f

# Delete untracked files and directories
git clean -fd

# Include ignored files
git clean -fdx

常见工作流

功能分支工作流:

git checkout -b feature/new-feature
# Make changes
git add .
git commit -m "Add new feature"
git push -u origin feature/new-feature
# Create PR, then after merge:
git checkout main
git pull
git branch -d feature/new-feature

热修复工作流:

git checkout main
git pull
git checkout -b hotfix/critical-bug
# Fix bug
git commit -am "Fix critical bug"
git push -u origin hotfix/critical-bug
# After merge:
git checkout main && git pull

同步派生仓库:

git remote add upstream https://github.com/original/repo.git
git fetch upstream
git checkout main
git merge upstream/main
git push origin main

实用别名

添加到 ~/.gitconfig:

[alias]
    st = status
    co = checkout
    br = branch
    ci = commit
    unstage = reset HEAD --
    last = log -1 HEAD
    visual = log --graph --oneline --all
    amend = commit --amend --no-edit

提示

  • 经常提交,之后再完善(使用交互式变基)
  • 编写有意义的提交信息
  • 使用 .gitignore 排除文件
  • 切勿强制推送到共享分支
  • 开始工作前先拉取
  • 使用功能分支,而不是 main
  • 合并前先对功能分支进行变基
  • 使用 --force-with-lease 代替 --force

常见问题

撤销意外提交:

git reset --soft HEAD~1

恢复已删除的分支:

git reflog
git checkout -b branch-name <commit-hash>

修正错误的提交信息:

git commit --amend -m "Correct message"

解决合并冲突:

# Edit files to resolve conflicts
git add resolved-files
git commit  # Or git merge --continue

文档

官方文档:https://git-scm.com/doc Pro Git 电子书:https://git-scm.com/book Git 可视化指南:https://marklodato.github.io/visual-git-guide/

评论

支持 Markdown