宝哥面试题分享(16):Git面试题:git常用命令、如何解决版本冲突、git和svn的区别

Git面试题

001什么是Git?

Git 是一个开源的分布式版本控制系统,是目前世界上最先进、最流行的版本控制系统。可以快速高效地处理从很小到非常大的项目版本管理。特点:项目越大越复杂,协同开发者越多,越能体现出 Git 的高性能和高可用性。

002Git常用的命令有哪些?

git add 添加文件到暂存区
git commit 提交文件到本地仓库
git pull 从远程仓库拉取项目到本地
git push 将本地仓库的新的改变推送到远程仓库
git clone 将远程仓库复制到本地
git fetch 抓取
git merge 合并

003git pull、git merge、git fetch三个命令的区别?

git clone:是在本地没有版本库的情况下,从远程仓库克隆一份到本地,是一个本地版本库从无到有的过程
git pull:是在本地仓库已经存在的情况下,将远程最新的commits抓取并合并到本地版本库的过程
git fetch: 从远程版本库抓取最新的commits,不会进行合并
git merge:合并
所以git pull = git fetch + git merge

004push之前一定要进行哪个操作?

push之前一定要进行本地更新操作。使用git pull命令或者使用git fetch和git merge的命令组合。这时候,可能会出现版本冲突,如果出现的话,需要解决完冲突再进行代码push。

005Git如何解决版本冲突?

开发过程中,我们都有自己的特性分支,所以冲突发生的并不多,但也碰到过。诸如公共类的公共方法,我和别人同时修改同一个文件,他提交后我再提交就会报冲突的错误。发生冲突,在IDE里面一般都是对比本地文件和远程分支的文件,然后把远程分支上文件的内容手工修改到本地文件,然后再提交冲突的文件使其保证与远程分支的文件一致,这样才会消除冲突,然后再提交自己修改的部分。
特别要注意下,修改本地冲突文件使其与远程仓库的文件保持一致后,需要提交后才能消除冲突,否则无法继续提交。必要时可与同事交流,消除冲突。

006如果代码出现bug,你们用git是如何解决的?

创建一个bug分支,然后进行bug处理,处理完毕后,合并到review分支,组长review成功后才能够合并到master,合并完成之后删除bug分支,回到dev分支继续开发。

007git rebase的作用?

在公司开发忘记提交到github托管,在家里又继续开发新的功能,然后到公司昨天的代码跟你的新功能合并的时候可以用git fecth —> git rebase,那么他的提交记录就不会出现分叉,保持了提交记录的整洁.

008使用的github 还是gitlab?

用的是github,因为公司比较小,所以没有自己搭建gitlab,
但是用github的时候代码一定要用保密的,9$(美元)建立一个仓库。

009你使用过git stash命令吗?你一般什么情况下会使用它?

1)解决冲突文件时,会先执行git stash,然后解决冲突;
2)遇到紧急开发任务但目前任务不能提交时,会先执行git stash,然后进行紧急任务的开发,然后通过git stash pop取出栈区的内容继续开发;
3)切换分支时,当前工作空间内容不能提交时,会先执行git stash再进行分支切换;

010如何查看分支提交的历史记录?查看某个文件的历史记录呢?

查看分支的提交历史记录:
命令git log –number:表示查看当前分支前number个详细的提交历史记录;
命令git log –number –pretty=oneline:在上个命令的基础上进行简化,只显示sha-1码和提交信息;
命令git reflog –number: 表示查看所有分支前number个简化的提交历史记录;
命令git reflog –number –pretty=oneline:显示简化的信息历史信息;

011Git和SVN的区别?

相同点:git和svn都是版本控制系统,两者都有自己的服务器。
区别:
1.git是分布式,svn不是分布式。
2.git把内容按元数据方式存储,而svn按文件。
3.git分支和svn分支不同。
4.git没有一个全局版本号,svn有。
5.git版本号要优于svn

012SVN版本冲突问题如何解决?

解决冲突有三种选择:
A.放弃自己的更新,使用svn revert(回滚),然后提交。在这种方式下不需要使用svn resolved(解决)
B.放弃自己的更新,使用别人的更新。使用最新获取的版本覆盖目标文件,执行resolved filename并提交(选择文件—右键—解决)。
C.手动解决:冲突发生时,通过和其他用户沟通之后,手动更新目标文件。然后执行resolved filename来解除冲突,最后提交。

你可能感兴趣的:(git,svn,github)