Initial commit with translated description
This commit is contained in:
431
SKILL.md
Normal file
431
SKILL.md
Normal file
@@ -0,0 +1,431 @@
|
||||
---
|
||||
name: git-essentials
|
||||
description: "用于版本控制、分支和协作的Git基础命令和工作流。"
|
||||
homepage: https://git-scm.com/
|
||||
metadata: {"clawdbot":{"emoji":"🌳","requires":{"bins":["git"]}}}
|
||||
---
|
||||
|
||||
# Git Essentials
|
||||
|
||||
Essential Git commands for version control and collaboration.
|
||||
|
||||
## Initial Setup
|
||||
|
||||
```bash
|
||||
# Configure user
|
||||
git config --global user.name "Your Name"
|
||||
git config --global user.email "your@email.com"
|
||||
|
||||
# Initialize repository
|
||||
git init
|
||||
|
||||
# Clone repository
|
||||
git clone https://github.com/user/repo.git
|
||||
git clone https://github.com/user/repo.git custom-name
|
||||
```
|
||||
|
||||
## Basic Workflow
|
||||
|
||||
### Staging and committing
|
||||
```bash
|
||||
# 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
|
||||
```
|
||||
|
||||
### Viewing changes
|
||||
```bash
|
||||
# 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
|
||||
```
|
||||
|
||||
## Branching & Merging
|
||||
|
||||
### Branch management
|
||||
```bash
|
||||
# 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
|
||||
```
|
||||
|
||||
### Merging
|
||||
```bash
|
||||
# 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
|
||||
```
|
||||
|
||||
## Remote Operations
|
||||
|
||||
### Managing remotes
|
||||
```bash
|
||||
# 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
|
||||
```
|
||||
|
||||
### Syncing with remote
|
||||
```bash
|
||||
# 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
|
||||
```
|
||||
|
||||
## History & Logs
|
||||
|
||||
### Viewing history
|
||||
```bash
|
||||
# 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
|
||||
```
|
||||
|
||||
### Searching history
|
||||
```bash
|
||||
# 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
|
||||
```
|
||||
|
||||
## Undoing Changes
|
||||
|
||||
### Working directory
|
||||
```bash
|
||||
# Discard changes in file
|
||||
git restore file.txt
|
||||
git checkout -- file.txt # Old way
|
||||
|
||||
# Discard all changes
|
||||
git restore .
|
||||
```
|
||||
|
||||
### Staging area
|
||||
```bash
|
||||
# Unstage file
|
||||
git restore --staged file.txt
|
||||
git reset HEAD file.txt # Old way
|
||||
|
||||
# Unstage all
|
||||
git reset
|
||||
```
|
||||
|
||||
### Commits
|
||||
```bash
|
||||
# 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
|
||||
```
|
||||
|
||||
## Stashing
|
||||
|
||||
```bash
|
||||
# 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
|
||||
```
|
||||
|
||||
## Rebasing
|
||||
|
||||
```bash
|
||||
# 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
|
||||
```
|
||||
|
||||
## Tags
|
||||
|
||||
```bash
|
||||
# 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
|
||||
```
|
||||
|
||||
## Advanced Operations
|
||||
|
||||
### Cherry-pick
|
||||
```bash
|
||||
# Apply specific commit
|
||||
git cherry-pick commit-hash
|
||||
|
||||
# Cherry-pick without committing
|
||||
git cherry-pick -n commit-hash
|
||||
```
|
||||
|
||||
### Submodules
|
||||
```bash
|
||||
# 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
|
||||
```
|
||||
|
||||
### Clean
|
||||
```bash
|
||||
# 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
|
||||
```
|
||||
|
||||
## Common Workflows
|
||||
|
||||
**Feature branch workflow:**
|
||||
```bash
|
||||
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
|
||||
```
|
||||
|
||||
**Hotfix workflow:**
|
||||
```bash
|
||||
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
|
||||
```
|
||||
|
||||
**Syncing fork:**
|
||||
```bash
|
||||
git remote add upstream https://github.com/original/repo.git
|
||||
git fetch upstream
|
||||
git checkout main
|
||||
git merge upstream/main
|
||||
git push origin main
|
||||
```
|
||||
|
||||
## Useful Aliases
|
||||
|
||||
Add to `~/.gitconfig`:
|
||||
```ini
|
||||
[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
|
||||
```
|
||||
|
||||
## Tips
|
||||
|
||||
- Commit often, perfect later (interactive rebase)
|
||||
- Write meaningful commit messages
|
||||
- Use `.gitignore` for files to exclude
|
||||
- Never force push to shared branches
|
||||
- Pull before starting work
|
||||
- Use feature branches, not main
|
||||
- Rebase feature branches before merging
|
||||
- Use `--force-with-lease` instead of `--force`
|
||||
|
||||
## Common Issues
|
||||
|
||||
**Undo accidental commit:**
|
||||
```bash
|
||||
git reset --soft HEAD~1
|
||||
```
|
||||
|
||||
**Recover deleted branch:**
|
||||
```bash
|
||||
git reflog
|
||||
git checkout -b branch-name <commit-hash>
|
||||
```
|
||||
|
||||
**Fix wrong commit message:**
|
||||
```bash
|
||||
git commit --amend -m "Correct message"
|
||||
```
|
||||
|
||||
**Resolve merge conflicts:**
|
||||
```bash
|
||||
# Edit files to resolve conflicts
|
||||
git add resolved-files
|
||||
git commit # Or git merge --continue
|
||||
```
|
||||
|
||||
## Documentation
|
||||
|
||||
Official docs: https://git-scm.com/doc
|
||||
Pro Git book: https://git-scm.com/book
|
||||
Visual Git guide: https://marklodato.github.io/visual-git-guide/
|
||||
6
_meta.json
Normal file
6
_meta.json
Normal file
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"ownerId": "kn7anq2d7gcch060anc2j9cg89800dyv",
|
||||
"slug": "git-essentials",
|
||||
"version": "1.0.0",
|
||||
"publishedAt": 1769692045864
|
||||
}
|
||||
Reference in New Issue
Block a user