git常见面试题(一)

参考:http://blog.jobbole.com/114297/

一、fork、 branch、clone 之间的区别?

fork:是对存储仓库(repository)进行的远程的,服务器端的拷贝。复刻不是git范畴。
clone:不是复刻,克隆是对某个远程仓库的本地拷贝。克隆时,实际上是拷贝整个存储仓库,包括所有的历史记录和分支。
branch:是一种机制,用于处理单一存储仓库中的变更,并最终目的是用于与其他部分代码合并。

二、pull request 和branch之间有什么区别?

分支:代码的一个独立版本。
pull repuest:拉取请求:是当有人用仓库,建立了自己的分支,做了些修改并合并到该分支(把自己修改应用到别人的代码仓库)。

三、git pull 和git fetch有什么区别?

当你使用pull,Git会试着自动为你完成工作。它是上下文敏感的。Git会把所有拉取的提交合并到你当前处理的分支中。pull则是自动合并提交而并没有让你复查的过程。如果你没有细心管理你的分支,你可能会频繁遇到冲突。
当你fetch,Git会收集目标分支中所有不存在的提交并将这些提交存储到本地仓库,但Git不会把这些提交合并到当前分支中,这种处理逻辑在当你需要保持仓库更新,在更新文件时又希望处理可能中断的事情时,这将非常实用。而将提交合并到主分支中,则该使用 merge。

四、Git恢复先前的提交

git reset –hard HEAD~1

五 、git cherry-pick

命令git cherry-pick 通常用于把特定提交从存储仓库的一个分支引入到其他分支中。常见的用途是从维护的分支到开发分支进行向前或回滚提交。
合并(merge) 变基(rebase)

六、forking的工作流程的优点

它不是用单个服务端仓库充当“中央”代码库,而是为每个开发者提供自己的服务端库。forking工作流程最常用于公共开源项目中。
Forking工作流程的主要优点是可以汇集提交贡献,又无需每个开发者提交到一个中央仓库中,从而实现干净的项目历史记录。开发者可以推送代码到自己的服务端仓库,而只有项目维护人员直接推送代码到官方仓库中。
当开发者准备发布本地提交时,他们的提交会推送到自己的公共仓库中,而不是官方仓库中。
然后他们向主仓库请求拉取(pull request),这会告知项目维护人员由可以集成的更新。

七、git中 HEAD、工作树和索引之间的区别

head:是当前检出分支的最后一次提交的引用或指针。
该索引/中转区(staging area)是个在/.git/index,单一的,庞大的二进制文件,该文件中列出了分支中所有文件的校验和,时间戳和文件名,它不是个带有文件副本的目录。
工作树/工作目录/工作空间是你看到的和编辑的(源)文件的目录树。

八、

猜你喜欢

转载自blog.csdn.net/xiongluo0628/article/details/82634943
今日推荐