git 之修改 commit 以及 rebase 的使用

我在提交中犯了一个错误,我该如何解决? 我的提交历史一团遭,我改如何让它整洁? 如果您有过上述问题,那么这篇文章适合您。这篇文章介绍了一个让你成为 Git 专家的主题列表。 如果您不了解 Git 基础知识,请单击此处查看我的 Git 基础知识博客。您必须了解 Git 的基础知识才能充分利用本文。 我的提交中犯了一个错误。我该怎么办? 情景 1 假设您已经提交了一堆文件并意识到您输入的提交消息实际上并不清楚。现在您要更改提交消息。为此,您可以使用 git commit --amend git commit --amend -m “新提交消息” 情景 2 假设您想提交六个文件,但是,错误地,您最终只提交了五个文件。您可能认为可以创建新提交并将第6个文件添加到该提交。 这种方法没有错。但是,为了保持整洁的提交历史,如果你真的可以以某种方式将此文件添加到您之前的提交本身,那会不会更好?这也可以通过以下方式完成 git commit --amend: git add file6 git commit --amend --no-edit --no-edit 表示提交消息不会更改 场景3 无论何时在 Git 中进行提交,提交都会附上作者姓名和作者电子邮件。通常,当您第一次设置 Git 时,您需要设置作者姓名和电子邮件。您无需担心每次提交的作者详细信息。 也就是说,对于特定项目,您可能希望使用不同的电子邮件 ID。您需要使用以下命令为该项目配置电子邮件 ID: git config user.email “你的电子邮件ID” 假设您忘记配置电子邮件,并且已经完成了第一次提交。Amend 也可用于更改先前提交的作者。可以使用以下命令更改提交的作者: git commit --amend --author“作者姓名<作者电子邮件>” 注意:仅在本地存储库中使用该 amend 命令。使用远程存储库可能会造成很多混乱 amend 我的提交历史是一团糟。我该如何处理? 假设您正在处理一段代码。您知道代码大约需要十天才能完成。在这十天内,其他开发人员也将提交代码到远程存储库。 将本地存储库代码与远程存储库中的代码保持同步是一种很好的做法。这会在您提出拉取请求时避免很多合并冲突。因此,您决定每两天从远程存储库中提取一次更改。 每次将代码从远程存储库提取到本地存储库时,都会在本地存储库中创建新的合并提交。这意味着您的本地提交历史记录将会进行大量的合并提交,这会使审阅者感到困惑。 如何使提交历史看起来更整洁? 这就是 rebase 拯救的地方。...

January 22, 2019 · 1 min · 213 words · 桃翁

前端书籍推荐

HTML 与 CSS 《Head First HTML与CSS(第2版)》–豆瓣评分 9.3。入门真的是经典书籍,手把手教学,丰富的案例让你从 0 开始学前端。 《CSS权威指南(第三版)》–豆瓣评分 8.5。这本书也是非常的经典了,2007 年的书了,但是无不影响这本书作为 CSS 的经典著作,把原理讲得非常的通透,除了 w3c 标准,算最权威的一本了,毕竟权威指南。这本书都是 css 2.1 的,与张鑫旭的《CSS 世界》可以说是一个类别的,我没看过这本书,但是据我朋友说没有权威指南好,口水话太多,也许是让读者好理解,权威指南这本我是看过的,学 CSS 必读经典。 《CSS揭秘》–豆瓣评分9.4。神书,47 和 css 技巧让你在面对各种 css 问题的时候游刃有余。豆瓣评分 9.4 ,是 css 书籍中评分最高的了,css 进阶必备。 总结:所以对于 css 来说,《Head First HTML与CSS(第2版)》是入门,权威指南是基础,css 揭秘是进阶,可以按照这个顺序来阅读。 JavaScript 《javascript语言精粹》–豆瓣评分 9.1。这本书可以在入门之前了解一下基本语法,以及在学习之前可以了解下 JS 里面的精粹以及糟粕,虽然这本书很薄很薄,但是值得反复去读的一本书,当时学习前端半年,一年再回来看这本书会跟你第一看应该有更深刻的理解。 《JavaScript DOM编程艺术(第2版)》– 豆瓣评分 8.7。本 书在简洁明快地讲述JavaScript和DOM的基本知识之后,通过几个实例演示了专业水准的网页开发技术,透彻阐述了平稳退化等一批至关重要的 JavaScript编程原则和最佳实践。 《JavaScript权威指南》:犀牛书是每个FE都绕不过的一本书,可以先大致通读几遍,也可以把其当作工具书,时时翻阅。 《JavaScript高级程序设计》:红宝书虽然号称高级,但其实是帮助入门的,Zakas大神把概念深入浅出,将JavaScript的语法要点讲清楚明白。小红书配合犀牛书,相互印证,谁读谁知道。 《你不知道的JavaScript 上中下》:这本绝对是神书,让你了解JavaScript不为人知的另一面,把闭包、异步这些讲得很通透。 《ES6 标准入门(第3版)》–豆瓣评分 8.9。阮老师的书,国内最好的一本 ES6 ES7 ES8 的入门书籍,第三版相对于第二版多了 ES8 的内容,所以也厚了很多。因为现在框架盛行,特别是 React 基本是已经完全拥抱了 ES6 了,还没学 ES6 赶紧补起来,不然要落后了。 《深入理解 ES6》–豆瓣评分9....

January 22, 2019 · 1 min · 148 words · 桃翁

Mac Brew 常用命令笔记

简介 Homebrew 是一款自由及开放源代码的软件包管理系统,用以简化 macOS 系统上的软件安装过程。每个操作系统都有类似的,比如 Ubuntu 的 apt,Centos 的 yum。 常用命令 安装 brew ruby -e "$(curl -fsSL https://raw.github.com/mxcl/homebrew/go)" 使用brew安装软件 $ brew install git 使用brew卸载软件 $ brew uninstall git 使用brew查询软件 有时候,你不知道你安装的软件的名字, 那么你需要先搜索下, 查到包的名字。 brew search /wge*/ 其他brew命令 brew list 列出已安装的软件 brew update 更新brew brew home 用浏览器打开brew的官方网站 brew info 显示软件信息 brew deps 显示包依赖 brew upgarde 更新所有 brew upgarde [包名] 更新指定包 brew cleanup 清理所有包的旧版本 brew cleanup [包名] 清理指定包的旧版本 brew cleanup -n 查看可清理的旧版本包,不执行实际操作 卸载 brew cd `brew --prefix` rm -rf Cellar brew prune rm `git ls-files` rm -r Library/Homebrew Library/Aliases Library/Formula Library/Contributions rm -rf ....

January 16, 2019 · 1 min · 94 words · 桃翁

2018 年度总结, 三个角色的转变

2018已经结束了,总结自己这一年来就是三个角色的转变:自己从一个学生成为了一个社会人,从一个读者变成了一个自媒体人,从一个在校学习者变成了终身学习者。 每一种角色的转变意味着责任的转变,每多一种角色,就会多承担一份责任。角色变得越大,责任也会承担得越大,当然收获得也更大。 技术成长 对于技术成长,我感觉我莫名其妙的就走在了前端的前沿,刚刚在知乎上看到一个帖子2019 前端技术规划该包含什么?很多大佬在规划里面都谈到 Rxjs、Typescript、函数式编程、Flutter、PWA、Node 相关, 然而事实就是这么巧(或者可以说我眼界比较远,偷笑),在 2018 年我很多都已经接触过了,比如 Rxjs、TS、函数式编程、Node 等。 聊 Typescript(TS) 特别是对于 TS,我在公众号,然后我维护的微信群里早就已经说过,TS 最近会火起来的,没学的赶紧学起来,不知道有多少人听了我的,看了那么多大佬的规划,我更加的坚信了 TS 将会变成未来前端工程师一项必备的技能。 然后对于 TS 的学习,我看过这些东西,我推荐一下,不过对于 TS 我仍然是个初学者,不敢说有多精通,我只在我自己的小项目中用过,没有在公司的项目中使用。 TS 官方文档 技术胖的 ts 教程 TypeScript极速完全进阶指南 深入理解 TypeScript 如果问我使用 TS 感觉是什么样的,我只能说相逢恨晚,就跟 vim 一样,用过之后就像一直用。 聊 Rxjs 对于学 Rxjs 来说,我想说的是,Rxjs 是我学过最难学的一个库了,目前为止没有之一。现在回想起来,要是早点接触函数式编程就好了,如果先是研究函数式编程,再去学习 Rxjs,我相信会轻松 40% 以上。但是目前为止,我并没有拿到真正的生产环境去用过,只是写过一些简单的 demo,然后看过一些资料和书籍,同时也在团队做过相关的普及。 Rxjs 难的就是思维方式以及 api 很多,然后就是由于一些概念不知道为什么要这么设计(很多思想我相信学了函数式编程就会明白了)。 对于 rxjs 的学习看过很多的文章,我这里还是推荐三个我觉得比较全的学习资料。 Rxjs 官网 30 天精通 Rxjs 程墨老师的深入浅出 Rxjs 聊函数式编程 学习函数式编程给我最大的感受就是让我拓宽了我的眼界,突然的就弥补了以前知识体系缺的点。比如对于 compose、curry 这些 js 里面也算一直提及的重要概念,但是总是记了又忘,忘了又记,就算自己手写来实现过了,但是隔了几个月还是又忘了,因为没用过。但是学了函数式编程以后,发现全是这些东西,compose 呀、柯里化呀、部分应用呀,就跟用数组的 map、reduce 这些方法那么熟练,所以,现在闭着眼睛也能写出来,就几行代码的事儿。...

January 15, 2019 · 1 min · 206 words · 桃翁

函数式编程里面的基本工具函数实现

compose 实现 function compose(...args) { return (result) => { return args.reduceRight((result, fn) => { return fn(result) }, result) } } pipe 实现 function compose(...args) { return (result) => { return args.reduce((result, fn) => { return fn(result) }, result) } } 柯里化实现 function currying(fn, ...args) { if (args.length >= fn.length) { return fn(...args) } return function (...args2) { return currying(fn, ...args, ...args2) } } 部分应用实现 function partial(fn, ...args) { return (..._arg) => { return fn(....

January 9, 2019 · 1 min · 77 words · 桃翁