# Git 常用命令与实战 > 📚 Git 教程系列 - 第 4 篇 > 📅 最后更新:2026-03-15 > 🛠️ 适合人群:已安装 Git,想学习实际操作 --- ## 📋 命令速查表 ### 基础命令 | 命令 | 说明 | 示例 | |------|------|------| | `git init` | 初始化仓库 | `git init` | | `git clone` | 克隆仓库 | `git clone url` | | `git status` | 查看状态 | `git status` | | `git add` | 添加到暂存区 | `git add file.txt` | | `git commit` | 提交 | `git commit -m "msg"` | | `git push` | 推送 | `git push origin main` | | `git pull` | 拉取 | `git pull origin main` | | `git log` | 查看日志 | `git log --oneline` | --- ## 🚀 实战 1:从零开始创建项目 ### 步骤 1:创建项目文件夹 ```bash # 创建项目目录 mkdir my-project cd my-project ``` ### 步骤 2:初始化 Git 仓库 ```bash # 初始化 git init # 查看状态 git status # 输出:On branch main, No commits yet, nothing to commit ``` ### 步骤 3:创建文件 ```bash # 创建 README.md cat > README.md << 'EOF' # My Project 这是我的项目说明文档。 ## 功能 - 功能 1 - 功能 2 ## 安装 ```bash npm install ``` EOF # 创建主程序文件 cat > main.py << 'EOF' #!/usr/bin/env python3 # -*- coding: utf-8 -*- def hello(): print("Hello, Git!") if __name__ == "__main__": hello() EOF # 创建 .gitignore cat > .gitignore << 'EOF' # Python __pycache__/ *.py[cod] *.so .Python venv/ env/ # IDE .vscode/ .idea/ *.swp *.swo # OS .DS_Store Thumbs.db EOF ``` ### 步骤 4:添加并提交 ```bash # 查看所有文件状态 git status # 输出:Untracked files: README.md, main.py, .gitignore # 添加所有文件 git add . # 或单独添加 git add README.md git add main.py git add .gitignore # 查看暂存区状态 git status # 输出:Changes to be committed: new file: ... # 提交 git commit -m "初始化项目:添加 README、主程序和.gitignore" # 查看提交日志 git log git log --oneline # 输出:a1b2c3d 初始化项目:添加 README、主程序和.gitignore ``` ### 步骤 5:连接远程仓库 ```bash # 在 GitHub/Gitee 创建空仓库后 # 添加远程仓库 git remote add origin git@github.com:Deshill/my-project.git # 查看远程仓库 git remote -v # 输出:origin git@github.com:Deshill/my-project.git (fetch) # origin git@github.com:Deshill/my-project.git (push) # 推送 git push -u origin main # 如果远程是 master 分支 git branch -M main git push -u origin main ``` --- ## 📥 实战 2:克隆现有项目 ### 克隆公开仓库 ```bash # 克隆 GitHub 仓库 git clone https://github.com/username/project.git # 克隆 Gitee 仓库 git clone https://gitee.com/username/project.git # 克隆到指定目录 git clone git@github.com:username/project.git my-folder # 克隆特定分支 git clone -b dev git@github.com:username/project.git ``` ### 克隆私有仓库 ```bash # 使用 SSH(推荐) git clone git@github.com:username/project.git # 首次连接会提示确认 The authenticity of host 'github.com' can't be established. Are you sure you want to continue connecting (yes/no)? yes ``` ### 查看克隆的项目 ```bash cd project # 查看远程仓库 git remote -v # 查看分支 git branch -a # 查看提交历史 git log --oneline # 查看文件 ls -la ``` --- ## 📝 实战 3:日常开发流程 ### 开始新工作 ```bash # 1. 切换到项目目录 cd my-project # 2. 拉取最新代码(避免冲突) git pull origin main # 3. 创建新分支(可选,推荐) git checkout -b feature/new-feature # 4. 开始编码... ``` ### 保存进度 ```bash # 1. 查看修改 git status git diff # 2. 添加修改 git add . # 或单独添加 git add file1.py file2.py # 3. 提交 git commit -m "feat: 添加用户登录功能" # 提交信息规范: # feat: 新功能 # fix: 修复 bug # docs: 文档更新 # style: 格式调整 # refactor: 重构 # test: 测试 # chore: 构建/工具 ``` ### 推送到远程 ```bash # 1. 推送当前分支 git push origin feature/new-feature # 2. 如果是第一次推送 git push -u origin feature/new-feature # 3. 推送所有分支 git push --all origin ``` --- ## 🔍 查看状态和日志 ### 查看状态 ```bash # 基本状态 git status # 简短输出 git status -s # 输出示例: # M main.py # 修改 # A new.txt # 新增 # D old.txt # 删除 # ?? temp.txt # 未跟踪 ``` ### 查看修改内容 ```bash # 查看所有修改 git diff # 查看特定文件 git diff main.py # 查看暂存区的修改 git diff --staged # 查看某次提交的修改 git show a1b2c3d ``` ### 查看日志 ```bash # 完整日志 git log # 简洁日志 git log --oneline # 带图形的日志 git log --oneline --graph # 限制条数 git log -n 5 # 查看特定文件 git log -- main.py # 查看某人的提交 git log --author="Deshill" # 按日期 git log --since="2 weeks ago" git log --until="2026-03-01" # 组合使用 git log --oneline --graph --all -n 20 ``` --- ## ⏮️ 实战 4:撤销与回退 ### 撤销工作区的修改 ```bash # 撤销单个文件的修改 git checkout -- main.py # 或(Git 2.23+) git restore main.py # 撤销所有修改 git checkout -- . git restore . ``` ### 撤销暂存区 ```bash # 从暂存区移除(保留工作区修改) git reset HEAD main.py # 或(Git 2.23+) git restore --staged main.py # 查看状态 git status ``` ### 修改最后一次提交 ```bash # 修改提交信息 git commit --amend -m "新的提交信息" # 添加遗漏的文件 git add forgotten-file.py git commit --amend --no-edit ``` ### 回退到某个版本 ```bash # 查看提交历史 git log --oneline # 软回退(保留修改) git reset --soft a1b2c3d # 混合回退(默认,保留工作区修改) git reset --mixed a1b2c3d git reset a1b2c3d # 硬回退(丢弃所有修改,危险!) git reset --hard a1b2c3d # 回退到上一个版本 git reset --hard HEAD~1 # 回退到上上个版本 git reset --hard HEAD~2 ``` ### 使用 revert(安全回退) ```bash # 撤销某次提交(创建新提交) git revert a1b2c3d # 撤销最近 3 次提交 git revert HEAD~2..HEAD # 不编辑提交信息 git revert -n a1b2c3d ``` --- ## 🌿 实战 5:分支操作 ### 创建和切换分支 ```bash # 查看分支 git branch # 查看所有分支(包括远程) git branch -a # 创建新分支 git branch feature-login # 切换分支 git checkout feature-login # 或(Git 2.23+) git switch feature-login # 创建并切换 git checkout -b feature-login # 或 git switch -c feature-login ``` ### 合并分支 ```bash # 1. 切换到目标分支 git checkout main # 2. 合并功能分支 git merge feature-login # 3. 解决冲突(如果有) # 编辑冲突文件,然后: git add conflicted-file.py git commit -m "解决合并冲突" # 4. 删除功能分支 git branch -d feature-login ``` ### 删除分支 ```bash # 删除本地分支 git branch -d feature-login # 强制删除(未合并) git branch -D feature-login # 删除远程分支 git push origin --delete feature-login ``` --- ## 🌐 实战 6:远程仓库操作 ### 查看远程仓库 ```bash # 查看远程仓库 git remote -v # 查看详情 git remote show origin # 重命名远程仓库 git remote rename origin upstream ``` ### 添加多个远程仓库 ```bash # 添加另一个远程仓库(如 Gitee 镜像) git remote add gitee git@gitee.com:Deshill/my-project.git # 查看所有远程 git remote -v # 推送到多个远程 git push origin main git push gitee main ``` ### 拉取和推送 ```bash # 拉取并合并 git pull origin main # 拉取但不合并(只下载) git fetch origin # 查看远程分支 git branch -r # 推送 git push origin main # 强制推送(危险!) git push -f origin main ``` ### 跟踪远程分支 ```bash # 创建并跟踪远程分支 git checkout -b feature origin/feature # 设置上游分支 git branch --set-upstream-to=origin/main main # 简写 git branch -u origin/main main ``` --- ## 📦 实战 7:标签管理 ### 创建标签 ```bash # 查看标签 git tag # 创建轻量标签 git tag v1.0.0 # 创建带注释的标签 git tag -a v1.0.0 -m "发布版本 1.0.0" # 给特定提交打标签 git tag -a v1.0.0 a1b2c3d -m "发布版本 1.0.0" ``` ### 标签操作 ```bash # 查看标签详情 git show v1.0.0 # 删除本地标签 git tag -d v1.0.0 # 推送标签到远程 git push origin v1.0.0 # 推送所有标签 git push --tags # 删除远程标签 git push origin --delete v1.0.0 ``` --- ## 🔧 实用技巧 ### 配置别名 ```bash # 添加别名 git config --global alias.st status git config --global alias.co checkout git config --global alias.br branch git config --global alias.ci commit git config --global alias.last "log -1 HEAD" git config --global alias.unstage "reset HEAD --" # 使用别名 git st # 代替 git status git co main # 代替 git checkout main git br # 代替 git branch ``` ### 暂存修改 ```bash # 暂存当前修改 git stash # 查看暂存列表 git stash list # 恢复最近的暂存 git stash pop # 恢复特定暂存 git stash apply stash@{1} # 删除暂存 git stash drop stash@{0} # 清空所有暂存 git stash clear ``` ### 查找和搜索 ```bash # 查找包含某内容的提交 git log --all --grep="login" # 查找修改过某文件的提交 git log -- main.py # 搜索代码 git grep "function_name" # 在某版本搜索 git grep "function_name" v1.0.0 ``` --- ## 🎯 小结 | 场景 | 命令 | |------|------| | 初始化项目 | `git init` | | 克隆项目 | `git clone url` | | 查看状态 | `git status` | | 添加文件 | `git add .` | | 提交 | `git commit -m "msg"` | | 推送 | `git push origin main` | | 拉取 | `git pull origin main` | | 创建分支 | `git checkout -b name` | | 合并分支 | `git merge name` | | 撤销修改 | `git checkout -- file` | | 回退版本 | `git reset --hard commit` | | 创建标签 | `git tag -a v1.0.0 -m "msg"` | --- > 💡 **下一步**:继续学习 [05-分支管理](./05-分支管理.md)