一、Git 是什么?
简单来说,Git 是一个分布式版本控制系统。
可以把它理解成一个超级强大的“时光机”和“协作工具”。
-
版本控制:它能记录你对文件(通常是代码)的所有修改历史。你可以回溯到任何一个历史版本,看看某一天谁修改了哪行代码,并且可以轻松地比较不同版本之间的差异。
-
分布式:每个参与项目的开发者电脑上都有一个完整的代码仓库副本(包括全部历史记录)。这样即使中央服务器宕机了,你也可以在本地继续工作,之后再同步。
核心概念:
-
仓库(Repository):一个被 Git 管理的文件夹,里面包含了你的项目文件以及 Git 的版本历史记录。可以是本地的,也可以是远程的(如 GitHub, Gitee)。
-
工作区(Working Directory):你电脑上能看到的项目目录,你在这里编辑文件。
-
暂存区(Staging Area):一个中间区域。你可以选择将工作区的哪些修改(新增、更改、删除)放到这里,准备下一次提交。它就像是一个“购物车”。
-
提交(Commit):将暂存区的内容作为一个新的版本快照,永久地保存到 Git 仓库的历史记录中。每次提交都需要一个说明信息(commit message)。
二、常用 Git 命令
这里按照操作流程来分类介绍最核心的命令。
1. 初始化和克隆
-
git init-
作用:在当前目录创建一个新的 Git 仓库。
-
场景:开始一个全新的本地项目。
-
-
git clone <url>-
作用:从远程仓库(如 GitHub)下载一个完整的项目副本到本地。
-
场景:获取一个已存在的项目。
-
例子:
git clone git仓库地址
-
2. 查看状态和差异
-
git status-
作用:查看工作区和暂存区的当前状态。它会告诉你哪些文件被修改了,哪些文件已经暂存了,哪些文件未被跟踪。
-
这是你最常用的命令之一!
-
-
git diff-
作用:查看工作区与暂存区文件的差异(具体修改了什么内容)。
-
-
git diff --staged-
作用:查看暂存区与上一次提交的差异。
-
3. 跟踪和提交更改
-
git add <file>-
作用:将文件的修改添加到暂存区。
-
例子:
-
git add main.py(添加单个文件) -
git add .(添加所有变化的文件,包括新增、修改和删除,但不包括未被跟踪的新文件) -
git add -A(添加所有变化的文件,功能更全面)
-
-
-
git commit -m "commit message"-
作用:将暂存区的内容提交到仓库历史中。
-m后面跟的是本次提交的说明,必须清晰易懂。 -
例子:
git commit -m "修复了用户登录的bug"
-
4. 查看历史记录
-
git log-
作用:查看提交历史。
-
常用选项:
-
git log --oneline(以一行的简洁方式显示) -
git log --graph(以图形方式显示分支合并历史)
-
-
5. 分支管理
分支是 Git 的“杀手级”功能,让你能在不同的线上并行开发。
-
git branch-
作用:列出所有本地分支。当前分支前面会有一个
*号。
-
-
git branch <branch-name>-
作用:创建一个新分支。
-
例子:
git branch new-feature
-
-
git checkout <branch-name>-
作用:切换到指定分支。
-
例子:
git checkout new-feature
-
-
git checkout -b <branch-name>-
作用:创建并立即切换到新分支(上面两条命令的合并)。
-
例子:
git checkout -b new-feature
-
-
git merge <branch-name>-
作用:将指定分支合并到当前分支。
-
例子:你在
main分支上,执行git merge new-feature,就会把new-feature的修改合并到main。
-
-
git branch -d <branch-name>-
作用:删除一个已合并的分支。
-
6. 与远程仓库交互
-
git remote add origin <url>-
作用:将本地仓库与一个远程仓库关联起来。
-
例子:
git remote add origin git仓库地址
-
-
git push -u origin <branch-name>-
作用:将本地分支的提交推送到远程仓库。
-u参数在第一次推送时使用,它会建立本地分支与远程分支的关联,之后可以直接用git push。 -
例子:
git push -u origin main
-
-
git pull-
作用:从远程仓库获取更新并合并到当前分支(相当于
git fetch+git merge)。
-
-
git fetch-
作用:仅从远程仓库下载最新的变更,但不会自动合并到你的工作区。
-
三、怎么操作:一个典型的工作流程
假设你要参与一个在 GitHub 上的项目。
场景:为项目添加一个新功能
-
获取项目
bash
git clone git仓库地址 cd project
-
创建功能分支(永远不要在主分支
main上直接开发新功能)bash
git checkout -b my-new-feature
-
开始开发
-
在本地编辑代码,修改文件。
-
-
提交更改
bash
# 查看哪些文件被修改了 git status # 查看具体修改了哪些代码(可选,但推荐) git diff # 将所有修改添加到暂存区 git add . # 提交到本地仓库 git commit -m "实现了XXX新功能"
(第4步可能会重复多次,完成一个小的功能点就提交一次)
-
推送到远程仓库
bash
# 将你的功能分支推送到 GitHub git push -u origin my-new-feature
-
发起 Pull Request (PR) / Merge Request (MR)
-
在 GitHub/GitLab 等网站上,对你的分支发起一个 PR,请求项目管理员将你的代码合并到主分支。
-
-
代码评审和合并
-
管理员会审查你的代码,提出意见。你可能会需要根据意见修改代码,然后再次
add,commit,push。 -
审查通过后,管理员会在网站上点击合并按钮。
-
-
更新本地主分支
-
功能合并后,你可以切换回主分支并拉取最新的代码。
bash
# 切换回主分支 git checkout main # 拉取远程最新的更新(包括你刚被合并的代码) git pull # 可以删除本地已经合并的功能分支 git branch -d my-new-feature
-
总结
| 操作 | 常用命令 |
|---|---|
| 开始 | git clone, git init |
| 日常状态 | git status, git diff |
| 保存进度 | git add, git commit |
| 查看历史 | git log |
| 并行开发 | git branch, git checkout, git merge |
| 团队协作 | git push, git pull |
最佳实践建议:
-
提交信息要清晰:用一句话说明这次提交做了什么。
-
频繁提交:每个提交只做一件小事,便于回溯和定位问题。
-
多用分支:任何新功能或 Bug 修复都应在独立分支上进行。
-
推送到远程前先拉取:在
git push之前,先git pull一下,确保本地代码是最新的,避免冲突。
希望这个指南能帮助你快速上手 Git!多加练习,你就会越来越熟练。
3996

被折叠的 条评论
为什么被折叠?



