Git基础
Git 工作区、暂存区、本地仓库、远程仓库
Workspace: 工作区,就是你平时存放项目代码的地方
Index / Stage: 暂存区,用于临时存放你的改动,事实上它只是一个文件,保存即将提交到文件列表信息
Repository: 仓库区(或版本库),就是安全存放数据的位置,这里面有你提交到所有版本的数据。其中HEAD指向最新放入仓库的版本
Remote: 远程仓库,托管代码的服务器,可以简单的认为是你项目组中的一台电脑用于远程数据交换
Git Rebase和Merge之间的区别
Merge
Merge创建一个新的提交F,F是合并开发分支的提交,如果有的话,对冲突进行排序。dev分支上的提交变成了C,A,D,B,E,F,有3个添加到dev分支中的其他提交。
Rebase
rebase会移动整个功能分支,就像它从一开始就从开发分支的最新提交分支出来一样。Rebase将首先搜索功能分支的基础,然后将其更改为开发分支B上的最新提交,然后根据该基础B将所有提交重新应用到功能分支上。Rebase实际上是创建新提交,C’,D’,E’。原始提交保持不变。
优点
这两种方法之间的最大区别在于,合并保留了作品的完整历史记录,包括按时间顺序排列,而Rebase使提交变得整洁,仅与分支上的作品相关。选择合并,提交记录将看到A,B,C,D,E,F提交,如果选择Rebase,则只会看到C,D,E。 合并具有较高的可追溯性,可以找到整个工作历史。 Rebase的确可以使提交变得整洁,干净且相关。但是,Rebase就看不到提交分支的详尽历史记录、具体更改哪些内容。 总结,Merge具有更高的可追溯性,而Rebase则更整洁且易于审核。
git的一些热知识配置
提交的用户名修改
方法1 config文件修改
在目录 C:\Users\Marihao 的.gitconfig文件 (Marihao 代指用户名)
方法2 git命令行修改
git config --global user.email test@runoob.com
git控制台在idea中视图位置的更改
git在idea视图的选项功能的详解
git视图工具栏
分支管理功能
提交管理功能
提交文件管理功能
git使用过程中的实际问题案例
问题1
假如有一个需求需要紧急上线,这个需求在某个分支已经开发好并测试通过了,但这个分支还有其他需求的代码
问题2
假如有一个分支需要合并到sit分支,合并后发现有问题需要回退
合并后尚未推送到远程仓库的回退
合并后已经推送到远程仓库的回退
问题3
假如有个同事合并分支到sit后已经推送到远程仓库,此时我拉取代码后,该同事又将该合并分支请求回滚,此时拉取sit的代码产生了冲突该怎么解决
git的一些规范
提交信息
feat:新功能(feature) fix:修复bug docs: 文档仅更改 style:不影响代码含义的更改(空白、格式、缺少分号等) refactor:重构既不修复bug也不增加特性的代码更改 perf:优化相关,比如提升性能、体验。 test:增加测试 bulid: 影响构建系统或外部依赖的变更(例如:gulp、broccoli、npm) ci: 修改配置文件和脚本 chore:其他不修改src或测试文件的更改 revert:恢复以前的提交,回滚到上一个版本
多提交
代码提交应该短小而频繁,尽量避免单次提交大量代码。