Git 终极新手教学:从小白到开源贡献者**(15分钟)

1. Git 是什么?为什么要学?

问题: 为什么我们需要 Git?

  • 你辛辛苦苦写了 100 行代码,突然发现少了一段核心功能,想恢复,但已经找不到了。
  • 和队友协作时,你改了一段代码,他也改了一段,推送时居然发生了“冲突”!
  • 你的代码出了问题,老板追责,你想证明 “这不是我改的”,却没法自证清白。

Git 的作用:

  • 版本控制神器:Git 可以帮你记录代码的“时光机”,随时回到过去。
  • 协作利器:多人同时写代码,再也不会互相“打架”。
  • 代码保险柜:你可以随时上传代码到云端,保留备份。

2. 初始化仓库:Git 的第一步

场景:

小明刚开始写代码,想用 Git 把自己的代码管理起来。

操作:
# 在当前文件夹初始化一个 Git 仓库
git init

效果:

  • 运行命令后,Git 在文件夹中创建了一个 .git 隐藏目录。
  • .git 就是 Git 的“大脑”,所有版本信息都存储在里面。

举例:

  • 初始化仓库就像买了一本日记本,从今天开始记录生活。

3. 两步保存代码:git addgit commit

3.1 什么是 git add

作用:

git add 的作用是把文件放进 暂存区,告诉 Git “我要提交这些文件”。

举例:
  • 想象你要寄快递:
    1. 你把东西打包好,放进快递箱(暂存区)。
    2. 打包完成后,寄出快递(提交)。
命令:
# 添加一个文件到暂存区
git add filename

# 添加所有文件到暂存区
git add .
例子:

小明写了一个 hello.txt 文件,然后运行:

git add hello.txt

效果: hello.txt 被放进了“快递箱”,等待正式提交。


3.2 什么是 git commit

作用:

git commit 是把暂存区的文件保存到 版本库,生成一个版本快照。

举例:
  • git add 是准备好文件,git commit 是按下“保存快照”的按钮。
命令:
# 提交代码并附加提交说明
git commit -m "Added hello.txt"
例子:

小明提交了代码:

git commit -m "Added a basic hello world example"

效果:

  • Git 记录了当前版本,小明可以随时回到这一刻。

3.3 git addgit commit 的关系

  1. git add 告诉 Git 哪些文件需要提交。
  2. git commit 生成一个版本快照,把这些文件保存起来。

举例: git add 是挑选食材,git commit 是把它们做成一顿饭。


4. 推送与拉取:代码上云端,快乐协作

4.1 推送代码到远程仓库

场景:

小明想把代码传到 GitHub,与队友共享。

操作:
  1. 设置远程仓库地址(只需一次):
git remote add origin https://github.com/your-repo.git
  1. 推送代码到远程:
git push -u origin main
举例:
  • 推送代码就像把本地文件上传到云盘。

4.2 拉取远程代码

场景:

队友上传了新功能,你需要更新本地代码。

操作:
git pull origin main
举例:
  • 拉取代码就像下载云盘里的最新文件。

5. 分支:让开发更安全

场景:

小明想尝试一个新功能,但不确定会不会“搞炸”主分支。

操作:
  1. 创建一个新分支:
git branch new-feature
  1. 切换到新分支:
git checkout new-feature
举例:

分支就像平行宇宙,你可以在不同宇宙中实验,互不干扰。


6. 合并与冲突:代码“打架”了怎么办?

6.1 合并分支

操作:
  1. 切换回主分支:
git checkout main
  1. 合并分支:
git merge new-feature
举例:
  • 合并分支就像把两个宇宙合二为一。

6.2 冲突解决

场景:

小明和小李都修改了 hello.txt,合并时冲突了。

解决:
  1. Git 会提示冲突,修改冲突文件:
<<<<<<< HEAD
小明的代码
=======
小李的代码
>>>>>>> new-feature
  1. 选择保留的代码,保存文件。
  2. 提交修改:
git add hello.txt
git commit -m "Resolved conflict in hello.txt"

7. 查看历史:谁动了我的代码?

查看提交历史
git log
举例:
  • Git 记录了每个人的“指纹”,你可以随时查到谁改了什么。

8. 撤销与回滚:让时间倒流

撤销未提交的更改
git checkout -- filename
回滚到某个版本
git reset --hard commit-hash
举例:
  • Git 就像时光机,你可以随时回到过去。

9. 开源贡献:从 Fork 到 Pull Request(简称PR)

更详细内容见我另一篇教学

操作:
  1. 在 GitHub 上点击 Fork,将项目复制到自己的仓库。
  2. 克隆项目到本地:
git clone https://github.com/your-forked-repo.git
  1. 修改代码并提交:
git add .
git commit -m "Added new feature"
git push origin main
  1. 创建 Pull Request,请求合并。

10. 忽略文件:保持代码库干净

配置 .gitignore

在项目根目录创建 .gitignore 文件,写入忽略规则:

*.log
node_modules/

11. 版本发布:打标签

创建标签
git tag v1.0
推送标签
git push origin --tags

Git 知识点记忆表

知识点 命令 作用 备注/记忆方法
初始化仓库 git init 初始化一个新的 Git 仓库 开启 Git 的第一步,创建 .git 文件夹。
添加文件 git add filename 添加文件到暂存区 暂存区是待办清单,添加的文件将在提交时被保存。
添加所有文件 git add . 添加当前目录下的所有文件到暂存区 点号(.)表示“所有文件”。
提交代码 git commit -m "描述信息" 将暂存区的内容保存到版本库,生成一个快照 描述信息要清楚易懂,比如“修复登录功能”。
查看状态 git status 查看工作区和暂存区的文件状态 日常检查命令,用来了解文件是否已添加或提交。
查看历史 git log 查看提交历史 用于追踪代码的提交记录,知道谁改了什么。
设置远程仓库 git remote add origin [远程地址] 设置远程仓库地址 只需执行一次,常用于连接 GitHub。
推送代码 git push -u origin main 将本地代码上传到远程仓库 -u 表示将远程分支设置为默认分支,方便后续推送。
拉取代码 git pull origin main 从远程仓库下载最新代码到本地 常用于同步队友的更新。
创建分支 git branch 分支名 创建一个新分支 用于实现并行开发,比如 git branch feature-login
切换分支 git checkout 分支名 切换到指定分支 切换工作场景到新功能开发或 bug 修复分支。
创建并切换分支 git checkout -b 分支名 一步完成创建和切换分支 常用操作,推荐记住!
合并分支 git merge 分支名 将指定分支的内容合并到当前分支 常用于将功能分支合并到主分支。
解决冲突 手动编辑冲突文件 + git add + git commit 解决合并冲突后提交代码 Git 会提示冲突位置,手动选择保留内容。
查看分支 git branch 查看当前分支列表 当前分支前会有 * 标记。
删除分支 git branch -d 分支名 删除指定分支 删除已完成的分支,保持分支清洁。
撤销更改 git checkout -- 文件名 恢复文件到上次提交的状态 当文件修改错了,可以用这个命令撤销。
回滚版本 git reset --hard 版本号 回退到指定版本 配合 git log 查找版本号,谨慎使用!
忽略文件 .gitignore 文件 配置哪些文件不被 Git 跟踪 常用于忽略日志、临时文件等,比如 node_modules/
打标签 git tag 标签名 给版本打上标记,常用于发布大版本 比如 git tag v1.0
推送标签 git push origin --tags 将所有本地标签推送到远程仓库 发布版本时的最后一步操作。
克隆仓库 git clone [远程地址] 从远程仓库复制代码到本地 常用于获取现有项目代码。
Fork 项目 GitHub 页面点击 “Fork” 创建项目副本到自己的账户 常用于开源项目贡献。
提交 PR GitHub 上点击 “Pull Request” 请求原项目合并你的代码 贡献开源代码的重要环节。

小贴士:记忆关键点

  1. 核心步骤: git add(准备) -> git commit(保存) -> git push(上传)。
  2. 常用协作命令: git pull(拉取)、git merge(合并)、解决冲突。
  3. 分支操作: git branch(管理分支)、git checkout(切换分支)。
  4. 查问题: git log(历史记录)、git status(状态检查)。

用这个表随时回顾常用命令,新手也能迅速掌握 Git!

总结

学会 Git 的核心命令后,你可以:

  1. 记录代码历史,随时“穿越”。
  2. 与队友高效协作,解决冲突。
  3. 贡献开源项目,成为 GitHub 明星!

Git 是你的代码时间机器,用它掌控未来吧!

你可能感兴趣的:(git,开源)