Git 学习笔记(基于 Learn Git Branching 平台)
本文最后更新于47 天前,其中的信息可能已经过时,如有错误请发送邮件到big_fw@foxmail.com

一、基础概念与环境

  1. Git 核心作用:分布式版本控制系统,用于追踪文件变化、管理代码历史,支持多人协作开发。
  2. 关键概念:
    • 仓库(Repository):存储代码和版本历史的目录。
    • 提交(Commit):代码修改的快照,包含修改内容、作者、时间等信息,用哈希值唯一标识。
    • 分支(Branch):独立的开发线路,默认主分支为 mainmaster,可创建分支并行开发。
    • ** HEAD 指针 **:指向当前工作的分支或提交。

二、基础命令(入门关卡核心)

1. 提交与历史查看

  • git commit:将暂存区的修改提交到本地仓库,生成新的提交记录。
  • git log:查看提交历史,显示提交哈希、作者、时间和提交信息。
    • 简化显示:git log --oneline(每行显示一个提交,仅含哈希前 7 位和提交信息)。

2. 分支操作

  • git branch <分支名>:创建新分支(基于当前 HEAD 指向的提交)。
  • git checkout <分支名>:切换到指定分支(HEAD 指针指向该分支)。
    • 快捷创建并切换:git checkout -b <分支名>(等价于 git branch <分支名> + git checkout <分支名>)。
  • git branch:列出所有分支, *表示当前分支。

3. 合并分支(merge

  • 场景:将一个分支的修改整合到另一个分支(如功能分支合并到主分支)。
  • 命令:bash git checkout main  # 切换到目标分支
     git merge <源分支>  # 合并源分支到当前分支
  • 效果:若合并无冲突,会创建一个新的 “合并提交”;若有冲突,需手动解决后再提交。

三、进阶操作(中级关卡核心)

1. 变基(rebase

  • 作用:将一个分支的提交 “移动” 到另一个分支的基础上,使提交历史更线性。
  • 命令:bash git checkout <待变基分支>  # 切换到需要调整的分支
     git rebase <目标分支>      # 以目标分支为基准,重放当前分支的提交
  • 注意:
    • 变基会改写提交历史(哈希值改变),不要对已推送到远程的公共分支使用
    • 冲突处理:变基过程中若遇冲突,解决后用 git add . 标记,再执行 git rebase --continue 继续,或用 git rebase --abort 放弃。

2. 撤销操作

  • git reset <提交哈希>:将当前分支重置到指定提交,丢弃该提交后的修改(默认  –mixed 模式,暂存区和工作区保留修改)。
    • 危险操作:git reset --hard <提交哈希>(强制重置,工作区和暂存区修改全部丢弃)。
  • git revert <提交哈希>:创建一个新提交,抵消指定提交的修改(安全,不改变历史,适合公共分支)。

3. 挑选提交(cherry-pick

  • 作用:选择性复制单个或多个提交到当前分支,无需合并整个分支,灵活复用代码。
  • 语法:bash git cherry-pick <提交哈希>          # 复制单个提交
     git cherry-pick <哈希1> <哈希2>     # 复制多个不连续提交
  • 应用场景:
    • 从功能分支中挑选一个修复 bug 的提交到主分支(无需合并整个功能分支)。
    • 复用其他分支的特定功能提交,避免无关代码混入。

4. 远程仓库交互

  • git clone <远程仓库URL>:克隆远程仓库到本地。
  • git push <远程仓库名> <本地分支名>:将本地分支推送到远程仓库。
  • git pull:拉取远程仓库的最新修改并合并到当前分支(等价于 git fetch + git merge)。

四、协作场景(高级关卡核心)

1. 多人协作流程

  1. 从远程主分支(origin/main)创建个人功能分支(feature/my-feature)。
  2. 在功能分支开发并多次提交。
  3. 开发完成后,先 git pull origin main 同步远程主分支的最新修改(避免冲突)。
  4. 将功能分支推送到远程(git push origin feature/my-feature),发起合并请求(PR/MR)。
  5. 代码审核通过后,合并到主分支。

2. 解决合并冲突

  • 当两个分支修改同一文件的同一部分时,合并或变基会产生冲突。
  • 解决步骤:
    1. 冲突文件中会标记冲突区域(<<<<<<< HEAD======= 为当前分支内容,=======>>>>>>> 分支名 为待合并分支内容)。
    2. 手动编辑文件,保留正确内容,删除冲突标记。
    3. git add <冲突文件> 标记为已解决。
    4. 合并场景:git commit 完成合并;变基场景:git rebase --continue 继续。

五、学习建议(基于平台特性)

  1. 可视化理解:利用平台的图形界面,观察每个命令对分支结构、提交历史的影响,加深对命令原理的理解。
  2. 关卡练习:按 “基础 → 中级 → 高级” 顺序挑战关卡,重点练习 mergerebase 的区别、冲突解决、远程协作等场景。
  3. 实际应用:学习后在本地仓库模拟协作流程(如创建分支、合并、解决冲突),巩固所学知识。

通过以上内容,可掌握 Git 日常开发的核心操作,应对大部分个人开发和团队协作场景。

学会了吧~ 接下来可以打关试试了~

打关网站:https://learngitbranching.js.org/?locale=zh_CN

文末附加内容
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇