首页
统计
Search
1
TypeScript学习笔记
5 阅读
2
《被讨厌的勇气》读后感
5 阅读
3
从零开始的Vue学习
3 阅读
4
摘抄
3 阅读
5
【极客时间】玩转Git三剑客笔记
3 阅读
年度总结
学习笔记
读后感
动漫汇总
日常记录
登录
Search
标签搜索
大数据
git
加密
Vue
CTF
TypeScript
React
Augenstern
累计撰写
10
篇文章
累计收到
0
条评论
首页
栏目
年度总结
学习笔记
读后感
动漫汇总
日常记录
页面
统计
搜索到
1
篇与
git
的结果
2025-01-24
【极客时间】玩转Git三剑客笔记
第一章 Git基础1.1 课程综述版本变更管理 VCS的演化目录拷贝--> 集中式VCS(SVN) --> 分布式VCS(Git)Git优点:开源、性能好、存储优、方面备份、易于制定工作流程、支持离线操作1.2 安装Git安装地址:Git官网1.3 使用Git之前需要做的最小配置 最小配置 git config --global user.name 'your_name' git config --global user.email 'your_email@domain.com' config的三个作用域 git config --local 针对某个仓库(可缺省) git config --global 当前所有用的仓库 git config --system 系统所有登录用户 显示config的配置 git config --list --local 1.4 创建第一个仓库并配置local用户信息两种方式1、把已有的项目代码纳入Git管理 cd 项目代码所在的文件夹 git init 2、新建的项目直接用Git管理 cd 某个文件夹 git init your_project #会在当前路径下创建和项目名称同名的文件夹 cd your_project1.5 通过几次commit来认识工作区和暂存区 工作区 ==> 暂存区 ==> HEAD ==> 远端 add commit push/pull(fetch+merge) git add -u:添加文件的修改,文件的删除(只操作跟踪过的文件) git add . :添加文件的修改,文件的新建 git add -A:添加文件的修改,文件的删除,文件的新建(全部文件) 工作中一般是用到 git add . 或者 git add -A(-all) 1.6 给文件重命名的简便方法 文件重命名: git mv oldName newName 大小写问题: git config core.ignorecase true1.7 通过git log查看版本演变历史ps: 对于git命令参数 如果单字母用-,如果单词使用-- git log --all 查看所有分支的历史 git log --all --graph 查看图形化的 log 地址 git log --oneline 查看单行的简洁历史 git log --oneline -n4 查看最近的四条简洁历史。 git log --oneline --all -n4 --graph 查看所有分支最近 4 条单行的图形化历史。 git help --web log 跳转到git log 的帮助文档网页1.8 gitk:通过图形界面工具来查看版本历史个人日常工作使用souceTree更多1.9 探秘.git目录 .git/ ├── HEAD # 指向当前分支的引用(如 `refs/heads/main`) ├── config # 仓库的本地配置(用户名、远程仓库等) ├── objects/ # 存储所有Git对象(提交、树、文件内容) │ ├── pack/ # 压缩后的对象包(优化存储) │ └── ... # 松散对象(未被压缩的单个对象) ├── refs/ # 存储引用(分支、标签、远程跟踪分支) │ ├── heads/ # 本地分支(如 `main`, `dev`) │ ├── tags/ # 标签(如 `v1.0.0`) │ └── remotes/ # 远程跟踪分支(如 `origin/main`) ├── index # 暂存区(Staging Area)的二进制表示 ├── hooks/ # 客户端/服务端钩子脚本(示例,默认未激活) ├── logs/ # 记录所有分支的提交历史(用于 `git reflog`) └── info/ # 全局排除文件配置(如 `.git/info/exclude`) git cat-file git cat-file -t 查看git 对象的类型 git cat-file -p 查看git 对象的内容 git cat-file -s 查看git 对象的大小1.10 commit、tree和blob三个对象之间的关系blob ==> tree ==> commit 享元模式:一种结构型设计模式,旨在通过共享对象来减少内存使用和提高性能,特别适用于存在大量相似对象的情况。享元模式的核心思想是将对象的内在状态(可共享的部分)与外在状态(不可共享的部分)分离,从而减少对象的数量。 1.11 小练习:数一数tree的个数可以简单的理解为commit是根节点,tree是子节点,blob是叶子节点,其中blob是可以共用的。1.12 分离头指针情况下的注意事项直接git checkout commitId会出现分离头指针的情况,这个时候提交的代码没有与分支关联起来,在切换分支时容易丢失代码(恢复比较麻烦)。应用场景:做测试时,可以用这个方法,不需要则直接丢弃,需要的话则创建新分支 git branch <新分支的名称> commitId1.13 进一步理解HEAD和branchHEAD总结:1、HEAD当和分支挂钩的时候,指向的是该分支的最新提交2、HEAD不和分支挂钩,而是指向某个commit,此时处于分离头指针的状态3、切换分支HEAD的状态:切换分支时,HEAD指向的时branch的最新提交4、HEAD指向branch的时候,指代的是某个具体的commit5、HEAD 代表当前分支最新的提交,HEAD^ 上一个commit,HEAD ^^:上上个commit,HEAD~N:前n个commit第二章 独自使用Git时的场景2.1 怎么删除不需要的分支 git branch -d branch_name 在删除分支前Git会判断在该分支上开发的功能是否被merge的其它分支 git branch -D branch_name2.2 怎么修改最新的commit的message git commit --amend 不只是修改最新commit的message 而是会创建一个将暂存区的内容生成一个commit,再将当前最新的commit替换成新生成的那一个 Linux下 git默认的文本编辑器是nano,很多快捷键不熟悉,执行下面的命令可以将git的文本编辑器改为我们熟悉的vim git config --global core.editor vim2.3 怎么修改老旧commit的message 变基操作 git rebase -i <commit> git rebase -i --root 修改根节点 -r,reword <commit> 使用提交,同时修改提交信息2.4 怎样把连续的多个commit整理成1个 git rebase -i <commit> -s,squash <commit> 使用提交,同时合并到之前的提交中2.5 怎样把间隔的几个commit整理成1个 git rebase -i <commit> -s,squash <commit> 使用提交,其他行加上-s commit id2.6 怎么比较暂存区和HEAD所含文件的差异 git diff --cached2.7 怎么比较工作区和暂存区所含文件的差异 git diff ps: git diff HEAD # 工作区 <===> HEAD git diff # 工作区 <===> 缓存区 git diff --cached # 缓存区 <===> HEAD2.8 如何让暂存区恢复和HEAD的一样 git reset HEAD git reset 有三个参数 --soft 只修改HEAD,暂存区、工作区不变 --hard HEAD、暂存区、工作区均修改 --mixed 默认参数,修改HEAD和暂存区,但工作区保持不变2.9 如何让工作区的文件恢复和暂存区一样 git checkout/git restore -- fileName2.10 怎样取消暂存区部分文件的更改 git reset HEAD -- fileName2.11 消除最近的几次提交 方法一: git rebase -i <commit> 改成 d 方法二: git reset--hard hash值 2.12 看看不同提交的指定文件的差异 git diff commit-id1 commit-id2 path-to-filename2.13 正确删除文件的方法 git rm file name2.14 开发中临时加塞了紧急任务怎么处理 git stash 把当前工作区的内容放入暂存区 git stash pop 把暂存区的内容恢复到工作区,且删除 git stash apply 把暂存区的内容恢复到工作区,且保留2.15 如何指定不需要Git管理的文件 通过.gitignore设置git不用管理文件或文件夹2.16 如何将Git仓库备份到本地 git clone xxx.git第三章 Git与GitHub的简单同步3.1 注册一个GitHub账号已注册 https://github.com/augenstern3263.2 配置公私钥https://github.com/settings/keys3.3 在GitHub上创建个人仓库无3.4 把本地仓库同步到GitHub无第四章 Git与多人单分支集成协作时的常见场景4.1 不同人修改了不同文件如何处理 不受影响,直接提交即可 git add git commit git pull(git fetch+merge) git push4.2 不同人修改了同文件的不同区域如何处理不会产生冲突,但提交前一样git pull拉一下远端代码,保持与远端一致4.3 不同人修改了同文件的同一区域如何处理会产生冲突,手动解决冲突后再进行提交操作4.4 同时变更了文件名和文件内容如何处理当多人修改同一文件的文件名和内容时,Git 会检测到冲突。处理步骤如下:拉取最新代码:先拉取远程仓库的最新代码git pull origin branch-name解决冲突:Git 会提示冲突,手动解决冲突后,将文件添加到暂存区并提交# 解决冲突后 git add <file> git commit -m "Resolved conflict in <file>"推送更改:将解决后的代码推送到远程仓库git push origin branch-name 4.5 把同一文件改成了不同的文件名如何处理拉取最新代码:先拉取远程仓库的最新代码git pull origin branch-name检查文件差异:检查两个文件的内容,决定保留哪个或合并内容。git diff fileA.txt fileB.txt解决冲突:Git 会提示冲突,手动解决冲突后,将文件添加到暂存区并提交假设保留文件A git add fileA.txt git rm fileB.txt推送更改:将解决后的代码推送到远程仓库git push origin branch-name 第五章 Git集成使用禁忌5.1 禁止向集成分支执行push -f操作 git push -f 强制同步远端和本地相同,导致远端修改的内容丢失 可以使用 git reflog 命令查找历史,然后利用 git reset --hard HAED@{n} 的方式恢复。 5.2 禁止向集成分支执行变更历史的操作个人向远端执行变更历史的操作,会导致抹除一些历史提交信息,影响该分支下其他开发者的
2025年01月24日
3 阅读
0 评论
0 点赞