git 的使用
🛠 Git 基础操作详析¶
1. 初始化与配置¶
在开始任何项目前,你需要告诉 Git 你是谁,并建立仓库。
-
git init:在当前文件夹创建一个隐藏的.git目录,使其变成 Git 仓库。 -
git config --list:检查当前的配置信息。
2. 文件状态转换(核心流程)¶
这是你每天用得最频繁的操作,理解 工作区 \(\rightarrow\) 暂存区 \(\rightarrow\) 本地仓库 的流动:
-
git status:核心命令。随时查看哪些文件变动了,以及它们处于什么状态。 -
git add <file>:将文件的修改放入“暂存区”。 -
git add .:将当前目录下所有变动(修改和新文件)放入暂存区。 -
git commit -m "feat: 增加登录功能":将暂存区的内容提交到本地仓库。提示:
-m后的注释要写得有意义,方便以后追溯。 -
git commit -am "fix: 修复搜索bug":这是一个组合命令,相当于add和commit一步到位(仅适用于已跟踪的文件)。
3. 查看与对比¶
当你忘记改了什么,或者想看历史时:
-
git log:查看详细提交历史。 -
git log --oneline --graph --all:用简单的图形化线条显示所有分支的提交历史。 -
git diff:查看工作区和暂存区之间的差异(即:你改了哪些行还没 add)。 -
git diff --cached:查看暂存区和最后一次提交之间的差异(即:你 add 了哪些还没 commit)。
4. 撤销与“后悔药”¶
Git 的强大之处在于它几乎可以撤销任何错误:
-
git checkout -- <file>:丢弃工作区的修改。让文件回到最近一次add或commit的状态(慎用,未提交的代码会丢失)。 -
git reset HEAD <file>:将文件从暂存区移出,但保留工作区的修改(取消 add)。 -
git commit --amend:补丁提交。如果你刚 commit 完发现漏了一个文件或者注释写错了,可以用这个命令修补最近的一次提交。
5. 文件删除与重命名¶
不要直接在文件管理器里右键删除,建议使用 Git 命令:
-
git rm <file>:从工作区和版本库中同时删除文件。 -
git mv <old_name> <new_name>:重命名文件,Git 会自动记录这一重命名操作。
💡 小贴士¶
-
.gitignore 文件:在项目根目录创建一个
.gitignore文件,写进去的文件名(如node_modules/或.env)将永远不会被 Git 追踪。 -
频繁提交,早点推送:养成完成一个微小功能就
commit的习惯,这会让你的回滚代价降到最低。 远程仓库(Remote Repository)是托管在网络上的项目版本库(如 GitHub, GitLab, Gitee)。它是团队协作的桥梁,让你能同步、分享和备份代码。
这里是关于远程仓库最全的操作笔记:
🌐 远程仓库核心操作¶
1. 建立连接¶
如果你是本地先建好了仓库,想关联到远程:
-
git remote add origin <url>:关联远程仓库。origin是远程库的默认别名。 -
git remote -v:查看当前关联的所有远程库地址。 -
git remote set-url origin <new_url>:如果你更换了仓库地址(比如从 GitHub 换到 Gitee),用这个修改。
2. 获取仓库 (Clone)¶
如果是加入已有项目:
git clone <url>:将远程仓库克隆到本地。它会自动为你配置好远程连接。
3. 推送代码 (Push)¶
将本地的提交记录推送到服务器:
-
git push origin <branch_name>:推送指定分支。 -
git push -u origin master:首次推送时使用-u,会将本地分支与远程分支关联。以后只需输入git push即可。 -
git push origin --delete <branch_name>:删除远程分支(危险操作,需谨慎)。
4. 拉取与更新 (Fetch & Pull)¶
这是多人协作中最容易搞混的部分:
-
git fetch origin:只拉取不合并。从远程获取最新变动,但不会修改你本地的工作区代码。你可以先看看别人改了什么,再决定是否合并。 -
git pull:拉取并合并。相当于git fetch+git merge。它会自动尝试把你本地没同步的代码和远程代码合并。避坑指南:在
push之前,务必先执行pull,确保你的本地代码是基于最新版本开发的,否则会报错。
5. 解决冲突 (Conflict)¶
当两个人在同一个文件的同一行做了不同的修改,pull 时就会产生冲突:
-
Git 会提示
CONFLICT,并在代码里用<<<<<<<和>>>>>>>标记出不同的内容。 -
手动修改:打开文件,决定保留哪部分,删掉冲突标记。
-
重新提交:执行
git add .和git commit -m "fix: resolve conflict"。
🚀 协作黄金流程 (Workflow)¶
如果你是团队成员,每天的标准动作如下:
-
git pull(上班第一件事,同步同事进度) -
... coding ... (开心地写代码)
-
git add .(把改动放入暂存区) -
git commit -m "xxx"(存入本地仓库) -
git pull(下班推送前,再次确认有没有人在这期间提交了新代码) -
git push(同步到服务器,收工!)
📝 常用查阅表¶
| 命令 | 用途 |
|---|---|
git remote show origin |
查看远程仓库分支详情 |
git checkout -b <name> origin/<name> |
拉取远程分支并在本地创建一个对应的分支 |
git remote prune origin |
清理本地失效的远程追踪分支(远程删了本地还有的情况) |
🍴 Fork 协作全流程笔记¶
1. Fork:建立你自己的“副本”¶
-
操作:在 GitHub 项目页面的右上角点击 Fork 按钮。
-
结果:你的账号下会出现一个同名的仓库(例如:
yourname/original-project)。你对这个副本拥有绝对的控制权。
2. 同步到本地¶
你需要把这个属于你的“副本”下载到电脑上开发:
Bash
3. 配置“上游”仓库 (关键步骤)¶
为了能获取原作者(项目方)的最新更新,你需要关联原仓库:
-
git remote add upstream <原作者的仓库地址>:把原作者的仓库命名为upstream(上游)。 -
git remote -v:你应该能看到两个远程地址:origin(你的副本)和upstream(原作者)。
4. 保持同步(不让你的副本落后)¶
如果原作者更新了代码,你的 Fork 副本不会自动更新。你需要手动同步:
Bash
git fetch upstream # 拉取原作者的所有更新
git checkout main # 切换到你的主分支
git merge upstream/main # 把原作者的改动合并到你的本地
5. 提交贡献 (Pull Request / PR)¶
当你写好了超棒的功能,想合并进原作者的项目:
-
Push:先将本地修改推送到你的远程仓库:
git push origin <branch_name> -
PR:回到 GitHub 网页,你会看到一个按钮 "Compare & pull request"。
-
提交:填写你的修改说明,点击提交。原作者审核通过后,你的代码就会进入原项目。
💡 Fork 核心逻辑对比¶
| 维度 | Fork | Clone |
|---|---|---|
| 位置 | 服务器端的仓库复制 | 从服务器下载到本地 |
| 权限 | 复制后你拥有完整权限 | 除非你是成员,否则不能 Push |
| 关系 | 两个仓库互不干扰,但有联系 | 本地与远程的一对一关系 |
| 目的 | 参与开源项目/自由修改 | 个人开发或团队协作 |
📝 常用操作清单¶
-
git remote add upstream <URL>:添加原作者仓库。 -
git fetch upstream:获取原作者的新代码。 -
git pull upstream <branch>:直接拉取并合并原作者的特定分支。