Git秋招面试大全

169 阅读4分钟

Git使用教程

第一部分 Git和码云/GitHub联动

第一步 安装git

参考以下博客,在ubuntu上安装git:

git-scm.com/book/zh/v2/…

第二步 创建SSH密钥

生成ssh

ssh-keygen -t rsa -C "youremail@qq.com"

加载rsa密码

将上一步生成的.pub中的代码复制至码云个人设置中的SSH管理:

img

粘贴进SSH公钥即可:

img

第三步 配置Git

在本地配置邮箱

git config --global user.email "youremail.com"

添加远程库

git remote add origin git@gitee.com:QingYuBaiLu/just_for_test_public.git

删除远程仓库

git remote rm origin

再输入新的添加远程库命令即可。

列出现在的远程仓库

git remote -v

第二部分 指令及面试常问

将本地仓库的上传至码云库

git push -u origin master

如果报failed to push some refs to git 错误出现错误的主要原因是码云中的README.md文件不在本地代码目录可以通过如下命令进行代码合并【注:pull=fetch+merge]

git pull --rebase origin master

  执行上面代码后可以看到本地代码库中多了README.md文件

此时再执行语句 git push -u origin master即可完成代码上传到github

简单来说,从远程库更新代码:git pull

如果出现changes 冲突,查看这个博客,主要是本地有改动,调用git reset即可。blog.csdn.net/qingfenglu/…

**更新到远程库:**git push origin master;

指令总览

刚开始如何下载项目代码呢?

git clone git@gitee.com:QingYuBaiLu/just_for_test_public.git

切换分支:git checkout name

撤销修改:git checkout – file

删除文件:git rm file

查看状态:git status

添加记录:git add file 或 git add .

添加描述:git commit -m “miao shu nei rong”

**同步数据:**git pull

**提交数据:**git push origin name

分支操作

**查看分支:**git branch

**创建分支:**git branch name

切换分支:git checkout name

创建+切换分支:git checkout -b name

合并某分支到当前分支:git merge name

删除分支:git branch -d name

删除远程分支:git push origin :name

git add .无法上传文件的问题

blog.qian-hong.com/detail-5-15…

多人协作的基本流程

管理员负责纵览全局,处理合并冲突(对同一项目的不同地方进行了修改就需要手动来处理合并冲突),其他开发者push自己最新的代码到仓库。

blog.csdn.net/tomatoarmys…

Git的管理流程图

img

img

github添加了ssh却还是不行?

可能是因为ubuntu本机上还没有添加ssh!

ssh-keygen -t rsa -C "**********@qq.com" #生成ssh key
ssh-add ~/.ssh/id_rsa #将本地的ssh key 进行添加
ssh-add -l #查看本地ssh-key的值
ssh -vT git@github.com #对github进行测试连接
git push origin master

常见面试问题

一般是涉及实际工作中遇到的各种情况:

blog.csdn.net/nobody_1/ar…

git branch是什么?

分支是从主线上分离出来的操作,主要用作不同的开发用途。

应用:在分支上做开发,调试好了后再合并到主分支。那么每个人开发模块式都不会影响到别人。

**他不需要将所有数据进行复制,只需创建****分支指针(只是指针!)**指向分离分支的地方。

HEAD是指向最近一次提交的commit对象;

img

blog.csdn.net/susu_xi/art…

reset、rebase和revert?

git revert 放弃某次提交;

git revert 之前的提交仍会保留在git log中,而此次撤销会做为一次新的提交。

reset 是回滚到某次提交

--soft此次提交之后的修改退回暂存区;--hard提交后的修改不做保留,status为空;

git rebase 需要执行merge操作时发生冲突,使用该命令操作(其根本的作用是修改某次commi的内容,修改完成之后才能继续merge啊!一般不建议修改推给其他人的)

该命令执行时极有可能显示merge失败,使用git diff命令查看冲突内容,手动修改冲突,git add filename,表示冲突已解决,再执行git rebase --continue,继续rebase

git rebase和git

img

如何查看某一行代码是谁写的?

来找问题根源的!

git blame filename

会列出来每行的修改纪录。你可以通过行数或者代码来查看。

git fetch 和git pull的区别?

参考链接:

blog.csdn.net/a19881029/a…

git fetch只是将本地所关联的远程库commit id更新至最新;

而git pull是将本地库更新到远程库的最新状态!

img

这种差异就会导致git fetch之后再git status提示版本落后。

git clone、fetch、pull的区别

clone是完完全全复制远程库的东西,甚至存放着与之一样的版本库记录;

pull是拉取分支更新到本地仓库的操作,值得注意的是其实是与本地内容merge;

fetch是获取服务器的最新状态(Head),跟本地需要手动合并:

img

img