-
前言
- 0. 前端工具
- 1. html
- 2. CSS
-
3. JavaScript 基础
-
3.1 JS简介
-
3.2 变量
-
3.3 变量的强制类型转换
-
3.4 运算符
-
3.5 流程控制语句:选择结构(if和switch)
-
3.6 流程控制语句:循环结构(for和while)
-
3.7 对象简介和对象的基本操作
-
3.8 基本数据类型vs引用数据类型
-
3.9 函数
-
3.10 作用域
-
3.11 this
-
3.12 对象的创建&构造函数
-
3.13 原型对象
-
3.14 数组简介
-
3.15 数组的四个基本方法&数组的遍历
-
3.16 数组的常见方法
-
3.17 数组的其他方法
-
3.18 内置对象:Date
-
3.19 内置对象(其他)
-
3.20 DOM操作
-
3.21 事件对象Event和冒泡
-
3.22 事件委托
-
3.23 BOM的常见内置方法和内置对象
-
3.24 原型链
-
3.25 常见代码解读
-
3.1 JS简介
- 4. JavaScript进阶
- 5. 前端基本功:CSS、DOM练习和 Javascript 特效
- 6. jQuery
- 7. HTML5和CSS3
- 8. 移动web开发
- 9. Ajax
- 10. Node.js和模块化
- 11. ES6
- 12. Vue基础
- 13. React基础
-
14. 前端面试
-
14.1 准备
-
14.2 页面布局
-
14.3 CSS盒模型及BFC
-
14.4 DOM事件的总结
-
14.5 HTTP协议
-
14.6 创建对象和原型链
-
14.7 面向对象:类的定义和继承的几种方式
-
14.8 跨域通信类
-
14.9 安全问题:CSRF和XSS
-
14.10 算法问题
-
14.11 浏览器渲染机制
-
14.12 js运行机制:异步和单线程
-
14.13 页面性能优化
-
14.14 前端错误监控
-
14.15 JavaScript高级面试:前言
-
14.16 模块化的使用和编译环境
-
14.17 ES6
-
14.18 虚拟DOM
-
14.19 MVVM
-
14.20 面试题整理
-
14.21 网友面经
-
14.22 面试技巧
-
14.23 推荐文章
-
14.24 计算机网络
-
14.25 web安全
-
14.26 其他
-
14.1 准备
- 15. 面试题积累
- 16. 前端进阶
- 17. 前端综合
- 18. 推荐链接
常见操作
全局配置用户信息
git config --global user.name "smyhvae"
git config --global user.email "smyhvae@163.com"
copy
分支的合并
场景:基于master分支的代码,开发一个新的特性
如果你直接在master分支上开发这个新特性,是不好的,万一你在开发特性1
的时候,领导突然又要叫你去开发特性2
,就不好处理了。难道开发的两个特性都提交到master?一会儿提交特性1的commit,一会儿提交特性2的commit?这会导致commit记录很混乱。
所以,我给你的建议做法是:给每个特性都单独建一个的新的分支。
比如说,我专门给特性1
建一个分支feature_item_recommend
。具体做法如下:
(1)基于master分支,创建一个新的分支,起名为feature_item_recommend
:
$ git checkout -b feature_item_recommend
Switched to a new branch 'feature_item_recommend'
copy
上面这行命令,相当于:
$ git branch feature_item_recommend // 创建新的分支 $ git checkout feature_item_recommend //切换到新的分支
copy
(2)在新的分支feature_item_recommend
上,完成开发工作,并 commit 、push。
(3)将分支feature_item_recommend
上的开发进度合并到master分支:
$ git checkout master //切换到master分支 $ git merge feature_item_recommend //将分支 feature_item_recommend 的开发进度合并到 master 分支
copy
合并之后,master
分支和feature_item_recommend
分支会指向同一个位置。
(3)删除分支feature_item_recommend
:
既然 特性1 开发完了,也放心地提交到master了,那我们就可以将这个分支删除了。
git branch -d feature_item_recommend
copy
注意,我们当前是处于master
分支的位置,来删除feature_item_recommend
分支。如果当前是处于feature_item_recommend
分支,是没办法删除它自己的。
同理,当我转身去开发特性2
的时候,也是采用同样的步骤。
合并分支时,如果存在分叉
比如说上面这张图中,最早的时候,master分支是位于C2
节点。我基于C2
节点,new出一个新的分支iss53
,我在iss53
上提交了好几个commit。
现在,我准备把iss53
上的几个commit合并到master上,此时发现,master分支已经前进到C4了。那该怎么合并呢?
合并的命令仍然是:
$ git checkout master $ git merge iss53
copy
解释:
这次合并的实现,并不同于简单的并入方式。这一次,我的开发历史是从更早的地方开始分叉的。
由于当前 master 分支所指向的commit (C4)并非想要并入分支(iss53)的直接祖先,Git 不得不进行一些处理。就此例而言,Git 会用两个分支的末端(C4 和C5)和它们的共同祖先(C2)进行一次简单的三方合并计算。
Git 没有简单地把分支指针右移,而是对三方合并的结果作一新的快照,并自动创建一个指向它的commit(C6)(如下图所示)。我们把这个特殊的commit 称作合并提交(mergecommit),因为它的祖先不止一个。
值得一提的是Git 可以自己裁决哪个共同祖先才是最佳合并基础;这和CVS 或Subversion(1.5 以后的版本)不同,它们需要开发者手工指定合并基础。所以此特性让Git 的合并操作比其他系统都要简单不少。
解决合并时发生的冲突
如果 feature1和feature2修改的是同一个文件中代码的同一个位置,那么,把feature1合并到feature2时,就会产生冲突。这个冲突需要人工解决。步骤如下:
(1)手动修改文件:手动修改冲突的那个文件,决定到底要用哪个分支的代码。
(2)git add:解决好冲突后,输入git status
,会提示Unmerged paths
。这个时候,输入git add
即可,表示:修改冲突成功,加入暂存区。
(3)git commit 提交。
然后,我们可以继续把 feature1 分支合并到 master分支,最后删除feature1、feature2。
注意:两个分支的同一个文件的不同地方合并时,git会自动合并,不会产生冲突。
比如分支feture1对index.html原来的第二行之前加入了一段代码。 分支feature2对index.html在原来的最后一行的后面加入了一段代码。 这个时候在对两个分支合并,git不会产生冲突,因为两个分支是修改同一文件的不同位置。 git自动合并成功。不管是git自动合并成功,还是在人工解决冲突下合并成功,提交之前,都要对代码进行测试。
日常操作积累
修改密码(曲线救国)
网上查了很久,没找到答案。最终,在cld童鞋的提示下,采取如下方式进行曲线救国。
# 设置当前仓库的用户名为空
git config user.name ""
copy
然后,当我们再输入git pull
等命令行时,就会被要求重新输入新的账号密码。此时,密码就可以修改成功了。最后,我们还要输入如下命令,还原当前仓库的用户名:
git config user.name "smyhvae"
copy
修改已经push的某次commit的作者信息
已经push的记录,如果要修改作者信息的话,只能 通过--force命令。我反正是查了很久,但最终还是不敢用公司的仓库尝试。
参考链接:
看最后一条答案。
将 branch1
的某个commit1
合并到branch2
当中
切换到branch2中,然后执行如下命令:
git cherry-pick commit1
copy
20190118-修改GitHub已提交的用户名和邮箱
参考链接:(亲测有效)
在执行./email.sh
后,如果出现permission denied
的错误,可以先执行chmod 777 email.sh
,修改文件的权限。
20200520-将Git 项目迁移到另一个仓库
我们假设旧仓库的项目名称叫old-repository
,新仓库的项目名称叫new-repository
。操作如下:
(1)创建旧仓库的裸克隆:
git clone --bare https://github.com/exampleuser/old-repository.git
copy
执行上述命令后,会在本地生成一个名叫 old-repository.git
的文件夹。
(2)迁移到新仓库:
cd old-repository.git
git push --mirror https://github.com/exampleuser/new-repository.git
copy
这样的话,项目就已经迁移到新仓库了。
注意,我们不需要手动新建一个空的新仓库,当我们执行上述命令之后,新仓库就已经自动创建好了。
参考链接:
2021-11-10-提交代码时,绕过 eslint 检查
需求:提交代码时,绕过 eslint 检查
解决办法:用命令行提交,在命令做 git commit 的时候,末尾追加--no-verify
。例如:
git commit -m '千古壹号的commit备注' --no-verify
copy
git客户端推荐
市面上的Git客户端我基本都用过了,我最推荐的一款Git客户端是:Tower 或者 Fork。
- GitUp:https://gitup.co/
20180623时,网上看了下Git客户端的推荐排名:
SmartGit:
商业用途收费, 个人用户免费:
推荐书籍
- 《pro.git中文版》