跳转至

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":这是一个组合命令,相当于 addcommit 一步到位(仅适用于已跟踪的文件)。

3. 查看与对比

当你忘记改了什么,或者想看历史时:

  • git log:查看详细提交历史。

  • git log --oneline --graph --all:用简单的图形化线条显示所有分支的提交历史。

  • git diff:查看工作区和暂存区之间的差异(即:你改了哪些行还没 add)。

  • git diff --cached:查看暂存区和最后一次提交之间的差异(即:你 add 了哪些还没 commit)。

4. 撤销与“后悔药”

Git 的强大之处在于它几乎可以撤销任何错误:

  • git checkout -- <file>丢弃工作区的修改。让文件回到最近一次 addcommit 的状态(慎用,未提交的代码会丢失)。

  • git reset HEAD <file>:将文件从暂存区移出,但保留工作区的修改(取消 add)。

  • git commit --amend补丁提交。如果你刚 commit 完发现漏了一个文件或者注释写错了,可以用这个命令修补最近的一次提交。

5. 文件删除与重命名

不要直接在文件管理器里右键删除,建议使用 Git 命令:

  • git rm <file>:从工作区和版本库中同时删除文件。

  • git mv <old_name> <new_name>:重命名文件,Git 会自动记录这一重命名操作。


💡 小贴士

  1. .gitignore 文件:在项目根目录创建一个 .gitignore 文件,写进去的文件名(如 node_modules/.env)将永远不会被 Git 追踪。

  2. 频繁提交,早点推送:养成完成一个微小功能就 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 时就会产生冲突:

  1. Git 会提示 CONFLICT,并在代码里用 <<<<<<<>>>>>>> 标记出不同的内容。

  2. 手动修改:打开文件,决定保留哪部分,删掉冲突标记。

  3. 重新提交:执行 git add .git commit -m "fix: resolve conflict"


🚀 协作黄金流程 (Workflow)

如果你是团队成员,每天的标准动作如下:

  1. git pull (上班第一件事,同步同事进度)

  2. ... coding ... (开心地写代码)

  3. git add . (把改动放入暂存区)

  4. git commit -m "xxx" (存入本地仓库)

  5. git pull (下班推送前,再次确认有没有人在这期间提交了新代码)

  6. 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

git clone https://github.com/你的用户名/仓库名.git

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)

当你写好了超棒的功能,想合并进原作者的项目:

  1. Push:先将本地修改推送到你的远程仓库:

    git push origin <branch_name>

  2. PR:回到 GitHub 网页,你会看到一个按钮 "Compare & pull request"

  3. 提交:填写你的修改说明,点击提交。原作者审核通过后,你的代码就会进入原项目。


💡 Fork 核心逻辑对比

维度 Fork Clone
位置 服务器端的仓库复制 从服务器下载到本地
权限 复制后你拥有完整权限 除非你是成员,否则不能 Push
关系 两个仓库互不干扰,但有联系 本地与远程的一对一关系
目的 参与开源项目/自由修改 个人开发或团队协作

📝 常用操作清单

  • git remote add upstream <URL>:添加原作者仓库。

  • git fetch upstream:获取原作者的新代码。

  • git pull upstream <branch>:直接拉取并合并原作者的特定分支。