一、基础操作
-
初始化仓库
git init
- 场景:新建项目时初始化本地仓库。
-
配置用户信息
git config --global user.name "Your Name" git config --global user.email "your@email.com"
- 场景:首次使用 Git 前设置全局用户名和邮箱。
-
查看文件状态
git status
- 场景:查看哪些文件被修改、暂存或未跟踪。
-
添加文件到暂存区
git add <file> # 添加单个文件 git add . # 添加所有修改
- 场景:将修改后的文件提交到暂存区,准备提交。
-
提交更改
git commit -m "commit message"
- 场景:保存当前工作进度,记录修改描述。
-
查看提交历史
git log git log --oneline # 简化日志格式
- 场景:追溯代码变更历史,查看提交记录。
二、分支管理
-
创建分支
git branch <branch-name>
- 场景:开发新功能或修复 Bug 时创建独立分支。
-
切换分支
git checkout <branch-name>
- 场景:切换到其他分支继续工作。
-
创建并切换分支
git checkout -b <new-branch>
- 场景:快速创建并切换到新分支(如
git checkout -b feature/login
)。
- 场景:快速创建并切换到新分支(如
-
合并分支
git checkout main # 切换到目标分支 git merge <source-branch>
- 场景:将开发分支的代码合并到主分支(如
main
或master
)。
- 场景:将开发分支的代码合并到主分支(如
-
删除分支
git branch -d <branch-name> # 删除已合并的分支 git branch -D <branch-name> # 强制删除未合并的分支
- 场景:清理已合并的无用分支。
三、远程仓库协作
-
添加远程仓库
git remote add origin <repository-url>
- 场景:将本地仓库关联到 GitHub/GitLab 等远程仓库。
-
推送代码到远程
git push origin <branch-name>
- 场景:将本地分支提交到远程仓库。
-
拉取远程更新
git pull origin <branch-name> # 拉取并合并远程分支
- 场景:同步团队成员的代码更新。
-
克隆远程仓库
git clone <repository-url>
- 场景:下载远程仓库到本地。
四、撤销与回退
-
撤销工作区修改
git restore <file> # 丢弃未暂存的修改 git restore . # 丢弃所有未暂存修改
- 场景:取消对文件的修改,恢复到最近一次提交的状态。
-
撤回提交
git reset HEAD~1 # 撤回上一次提交(保留修改) git reset --hard HEAD~1 # 强制撤回提交(丢弃修改)
- 场景:修复错误的提交或回退到某个版本。
-
生成新提交撤销旧提交
git revert <commit-hash>
- 场景:保留历史记录的同时撤销指定提交的修改。
五、其他实用命令
-
暂存当前工作
git stash git stash pop # 恢复暂存的修改
- 场景:临时保存当前进度,切换到其他任务。
-
查看文件差异
git diff <file> # 查看未暂存的修改 git diff --staged # 查看已暂存但未提交的修改
-
标签管理(发布版本)
git tag v1.0.0 # 创建轻量标签 git tag -a v1.0.0 -m "Release note" # 创建带注释的标签 git push origin v1.0.0 # 推送标签到远程
- 场景:标记软件版本或重要里程碑。
应用场景示例
-
场景 1:修复 Bug 分支
git checkout -b bugfix/login-error # 创建 Bug 修复分支 # 修改代码后提交 git commit -m "Fix login error" git checkout main # 切回主分支 git merge bugfix/login-error # 合并修复分支
-
场景 2:解决合并冲突
当多人修改同一文件的同一部分时,Git 会提示冲突。手动编辑冲突文件后:git add <resolved-file> # 标记冲突已解决 git commit # 完成合并
-
场景 3:回退错误提交
发现某次提交有问题:git log # 找到要回退的 commit hash git reset --hard <commit-hash> # 回退到该版本