开篇介绍
大家好, 我是 Java 最全面试题库的提裤姐, 今天这篇是 Java 工具系列的第一篇, 主要总结了 Git 和 SVN 相关的问题, 在后续, 会沿着第一篇开篇的知识线路一直总结下去, 做到日更! 如果我能做到百日百更, 希望你也可以跟着百日百刷, 一百天养成一个好习惯.
Git 和 SVN 有什么区别?
Git 是分布式的, 而 SVN 不是分布式的
Git 把内容按元数据方式存储, 而 SVN 是按文件
Git 的内容的完整性要优于 SVN
SVN 只能有一个指定中央版本库. 而 Git 可以有无限个版本库.
SVN 优缺点?
优点:
管理方便, 逻辑明确, 符合一般人思维习惯.
易于管理, 集中式服务器更能保证安全性.
代码一致性非常高.
适合开发人数不多的项目开发.
缺点:
服务器压力太大, 数据库容量暴增.
如果不能连接到服务器上, 就不能提交, 还原, 对比等等.
不适合开源开发. 但是一般集中式管理的有非常明确的权限管理机制 (例如分支访问限制), 可以实现分层管理, 从而很好的解决开发人数众多的问题.
Git 优缺点?
优点:
适合分布式开发, 强调个体.
公共服务器压力和数据量都不会太大.
速度快, 灵活.
任意两个开发者之间可以很容易的解决冲突.
离线工作.
缺点:
代码保密性差, 一旦开发者把整个库克隆下来就可以完全公开所有代码和版本信息.
说一下 Git 创建分支的步骤?
Git branch test 创建 test 的 branch
Git checkout dev 切换到 dev 分支
Git pull 远程分支拉到本地
Git checkout -b main
创建并切换到 main 分支
Git push origin main
推到远程分支
说一下 Git 合并的两种方法以及区别?
Git 代码合并有两种: Git Merge 和 Git ReBase
Git Merge:
这种合并方式是将两个分支的历史合并到一起, 现在的分支不会被更改, 它会比对双方不同的文件缓存下来, 生成一个 commit, 去 push.
Git ReBase:
这种合并方法通常被称为 "衍合". 他是提交修改历史, 比对双方的 commit, 然后找出不同的去缓存, 然后去 push, 修改 commit 历史.
Git 如何查看文件的提交历史和分支的提交历史?
使用 Git log 命令
什么是 Git stash?
用于临时保存和恢复修改, 可跨分支.
使用场景: 写着代码, 写着写着, 别人告诉我 bug 修好了, 我就要去更新一下代码, 如果更新冲突, 应该把当前代码保存起来, 此时可以使用 Git stash 命令.
命令的本质帮我们做了两件事:
1把所有改动做了一个快照, 然后保存起来, 并还原原来的文件.
2在需要的时候, 可以把之前的修改恢复.
什么是 Git stash drop
删除保存的存储.
Git config 的作用?
配置或读取相应的环境变量.
这些环境变量, 主要保存了 Git 在各个环节的具体工作方式和行为.
位置:
用户主目录的. gitconfig
工作目录的. Git 下面的. gitconfig
/etc/.gitconfig
来源: http://www.jianshu.com/p/4700e4a48c9f