Git 常用工作流
理解了仓库、工作区、暂存区这套模型之后,这一节聚焦日常最高频使用的一组命令:记录改动、查看历史、以及分支操作。
初始化与查看状态
Section titled “初始化与查看状态”git init # 把当前目录初始化为一个 Git 仓库git status # 查看工作区和暂存区当前的状态git status 是使用频率最高的命令之一,它会列出哪些文件被修改过、哪些已经加入暂存区、哪些是尚未被 Git 跟踪的新文件,是每次操作前用来确认当前状态的基本手段。
记录一次改动
Section titled “记录一次改动”git add <file>:把指定文件的当前改动加入暂存区;git add .把当前目录下所有改动一次性加入git diff:查看工作区相对暂存区(或者暂存区相对上一次提交)的具体改动内容,加入暂存区之前先确认改动范围git commit -m "提交信息":把暂存区的内容写入仓库,生成一个新的提交
提交信息(Commit Message)不是可有可无的注释,而是历史记录的一部分,后续排查某个改动是什么时候、为什么引入的,主要依据就是这些信息,因此建议用简洁但明确的语句描述“这次改动做了什么”,而不是空泛的“update”、“fix”。
git log # 查看提交历史,从最新到最旧git log --oneline # 每个提交压缩成一行,只显示哈希前缀和提交信息git log -p # 显示每个提交的具体改动内容(diff)分支:并行的提交序列
Section titled “分支:并行的提交序列”分支(Branch)本质上只是一个指向某个提交的、可以移动的指针,而不是一份完整的独立文件副本。创建一个新分支的开销极小,因为它只是新建了一个指针,不会复制任何文件内容——这也是 Git 的分支操作相比其他版本控制工具明显更轻量的原因。
git branch # 列出当前所有分支git branch new-feature # 创建一个新分支,但不切换过去git checkout new-feature # 切换到指定分支git checkout -b new-feature # 创建并立即切换到新分支(等价于上面两条合并执行)git switch new-feature # 较新的切换分支命令,语义更专一HEAD 是 Git 内部用来标记“当前所在位置”的一个特殊指针,正常情况下它指向当前分支,当前分支的指针再指向该分支最新的一次提交;切换分支的操作,本质上就是把 HEAD 改指向另一个分支。
git checkout main # 先切换回目标分支(通常是 main)git merge new-feature # 把 new-feature 分支的提交合并进当前分支如果两个分支对同一个文件的同一部分做了不同的修改,git merge 无法自动判断该保留哪一方,会产生合并冲突(Merge Conflict),此时 Git 会在冲突文件中用特殊标记(<<<<<<<、=======、>>>>>>>)标出双方各自的版本,需要手动编辑文件确定最终内容,再重新 git add 并 git commit 完成合并。