git命令入门
Git 命令完整手册
🔧 基础配置(最先做)
# 设置用户名和邮箱gitconfig--globaluser.name"你的名字"gitconfig--globaluser.email"你的邮箱"# 中文文件名正常显示(不显示八进制)gitconfig--globalcore.quotepathfalse# 查看所有配置gitconfig--global--list1️⃣ 初始化
# 方式一:全新项目初始化gitinit# 在当前目录初始化Git仓库gitinit 项目名# 新建文件夹并初始化# 方式二:关联已有远程仓库gitremoteaddorigin https://github.com/用户名/仓库名.git# 查看远程仓库地址gitremote-v# 修改远程仓库地址gitremote set-url origin https://github.com/用户名/新仓库名.git# 删除远程关联gitremote remove origin2️⃣ 推送到远程
📌 首次推送
# 第一步:初始化gitinit# 第二步:添加所有文件gitadd.# 第三步:首次提交gitcommit-m"first commit"# 第四步:关联远程仓库gitremoteaddorigin https://github.com/用户名/仓库名.git# 第五步:推送(首次用 -u 绑定分支)gitpush-uorigin main📌 日常更新推送
# 查看哪些文件改动了gitstatus# 添加指定文件gitadd文件名# 添加所有改动文件gitadd.# 提交(写清楚改了什么)gitcommit-m"修改说明"# 推送到远程gitpush origin main3️⃣ 克隆与拉取更新
📌 首次克隆
# 克隆远程仓库到本地gitclone https://github.com/用户名/仓库名.git# 克隆到指定文件夹gitclone https://github.com/用户名/仓库名.git 自定义文件夹名# 克隆指定分支gitclone-b分支名 https://github.com/用户名/仓库名.git📌 更新拉取(本地无修改)
# 直接拉取gitpull origin main📌 更新拉取(本地有修改)⭐️
# 第一步:备份(最保险)cp-r项目目录 备份目录_$(date+%Y%m%d_%H%M%S)# 第二步:把本地修改藏起来gitstash# 第三步:拉取远程最新代码gitpull origin main# 如果第三步效果满意,不需要本地修改了:gitstash drop# 彻底删除暂存的本地修改# 如果需要合并本地修改:gitstash pop# 把本地修改拿出来合并📌 stash 相关命令
gitstash# 暂存本地修改gitstash list# 查看所有暂存记录gitstash pop# 恢复最近一次暂存(并删除记录)gitstash apply# 恢复最近一次暂存(保留记录)gitstash drop# 删除最近一次暂存记录gitstashclear# 删除所有暂存记录4️⃣ 分支管理
# 查看所有本地分支gitbranch# 查看所有分支(含远程)gitbranch-a# 新建分支gitbranch 分支名# 切换分支gitcheckout 分支名# 新建并切换(常用)gitcheckout-b分支名# 合并分支(把xxx合并到当前分支)gitmerge 分支名# 删除本地分支gitbranch-d分支名# 删除远程分支gitpush origin--delete分支名5️⃣ 查看状态与历史
# 查看文件状态gitstatus# 查看提交历史gitlog# 精简版历史(好看)gitlog--oneline# 图形化历史gitlog--oneline--graph--all# 查看某个文件的改动内容gitdiff文件名# 查看暂存区和上次提交的差异gitdiff--staged6️⃣ 撤销与回退
# 撤销工作区修改(未add)gitrestore 文件名# 撤销暂存区(已add,未commit)gitrestore--staged文件名# 回退到上一次提交(保留改动)gitreset--softHEAD~1# 回退到上一次提交(丢弃改动)⚠️危险gitreset--hardHEAD~1# 强制推送(回退后用)⚠️危险gitpush origin main--force📊 日常工作流程总结
新项目 git init → git add . → git commit → git push -u origin main 日常更新 git add . → git commit -m "说明" → git push origin main 拉取更新(本地无改动) git pull origin main 拉取更新(本地有改动) 备份 → git stash → git pull → git stash pop(或drop) 查看状态 git status → git log --oneline📋 命令速查表
| 场景 | 命令 |
|---|---|
| 初始化 | git init |
| 关联远程 | git remote add origin URL |
| 添加文件 | git add . |
| 提交 | git commit -m "说明" |
| 首次推送 | git push -u origin main |
| 日常推送 | git push origin main |
| 克隆 | git clone URL |
| 拉取 | git pull origin main |
| 暂存修改 | git stash |
| 恢复暂存 | git stash pop |
| 删除暂存 | git stash drop |
| 查看状态 | git status |
| 查看历史 | git log --oneline |
| 查看分支 | git branch -a |
注:关于分支、stash、rebase等高级操作后续继续
Git Branch 常用命令总结
一、查看分支
# 查看本地所有分支gitbranch# 查看远程所有分支gitbranch-r# 查看本地 + 远程所有分支gitbranch-a# 查看每个分支最后一次提交信息gitbranch-v# 查看已合并到当前分支的分支gitbranch--merged# 查看未合并到当前分支的分支gitbranch --no-merged二、创建分支
# 创建新分支(不切换)gitbranch<branch-name># 创建并立即切换到新分支gitcheckout-b<branch-name># 基于某个 commit / tag 创建并切换gitcheckout-b<branch-name><commit-id># 新版写法(Git 2.23+)gitswitch-c<branch-name>三、切换分支
# 切换到已有分支gitcheckout<branch-name># 新版写法(Git 2.23+)gitswitch<branch-name># 切换到上一个分支(类似 cd -)gitcheckout -gitswitch -四、重命名分支
# 重命名当前分支gitbranch-m<new-name># 重命名指定分支gitbranch-m<old-name><new-name># 重命名后同步到远程gitpush origin--delete<old-name>gitpush origin<new-name>五、删除分支
# 删除本地分支(已合并才能删)gitbranch-d<branch-name># 强制删除本地分支(未合并也能删)gitbranch-D<branch-name># 删除远程分支gitpush origin--delete<branch-name># 清理本地已失效的远程追踪分支gitremote prune origin# 查看哪些远程追踪分支已失效gitremote prune origin --dry-run六、合并分支
# 将指定分支合并到当前分支gitmerge<branch-name># 禁用 fast-forward,保留合并记录gitmerge --no-ff<branch-name># 合并但不提交(暂存到工作区)gitmerge --no-commit<branch-name># 放弃本次合并(冲突时回退)gitmerge--abort七、变基 Rebase
# 将当前分支变基到目标分支gitrebase<branch-name># 交互式变基(整理提交历史)gitrebase-iHEAD~<N># N 为最近几次提交# 变基时发生冲突,解决后继续gitrebase--continue# 放弃变基,回到变基前状态gitrebase--abort八、追踪远程分支
# 拉取远程分支并在本地创建追踪分支gitcheckout-b<branch-name>origin/<branch-name># 新版写法gitswitch-c<branch-name>--trackorigin/<branch-name># 设置已有本地分支追踪远程分支gitbranch-uorigin/<branch-name>gitbranch --set-upstream-to=origin/<branch-name># 查看本地和远程的追踪关系gitbranch-vv# 推送并建立追踪关系gitpush-uorigin<branch-name>九、cherry-pick(摘取提交)
# 将某个 commit 应用到当前分支gitcherry-pick<commit-id># 摘取多个 commitgitcherry-pick<commit-id1><commit-id2># 摘取一段连续 commit(不含起点)gitcherry-pick<start-id>..<end-id># 摘取一段连续 commit(含起点)gitcherry-pick<start-id>^..<end-id># 冲突后继续gitcherry-pick--continue# 放弃 cherry-pickgitcherry-pick--abort十、常用场景速查
| 场景 | 命令 |
|---|---|
| 新建并切换分支 | git checkout -b <name> |
| 从远程拉一个新分支到本地 | git checkout -b <name> origin/<name> |
| 把 dev 合并到 main | 切到 main →git merge dev |
| 删除已合并的本地分支 | git branch -d <name> |
| 强制删除未合并分支 | git branch -D <name> |
| 删除远程分支 | git push origin --delete <name> |
| 整理最近 3 次提交 | git rebase -i HEAD~3 |
| 推送并追踪远程 | git push -u origin <name> |
| 查看所有分支追踪关系 | git branch -vv |
| 清理失效远程分支 | git remote prune origin |
📌 建议:
- 功能开发始终在新分支上进行,不要直接在
main/master上提交- 合并前先
git fetch更新远程信息- 用
--no-ff合并保留完整历史,方便回溯
注:本博文为个人自学记录留存
推荐技术爬爬虾讲解的这部分内容很清晰
附一个截图
