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

第一步 安装git

参考以下博客,在ubuntu上安装git:
https://git-scm.com/book/zh/v2/%E8%B5%B7%E6%AD%A5-%E5%AE%89%E8%A3%85-Git

第二步 创建SSH密钥

生成ssh
ssh-keygen -t rsa -C “youremail@qq.com”
加载rsa密码
将上一步生成的.pub中的代码复制至码云个人设置中的SSH管理:
image.png
粘贴进SSH公钥即可:
image.png

第三步 配置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即可。https://blog.csdn.net/qingfenglu/article/details/52316634
更新到远程库:git push origin master;

码云的建议教程

image.png

指令总览

刚开始如何下载项目代码呢?
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 .无法上传文件的问题

http://blog.qian-hong.com/detail-5-15-274.html

多人协作的基本流程

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

Git的管理流程图

image.png
image.png

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

常见面试问题

一般是涉及实际工作中遇到的各种情况:
https://blog.csdn.net/nobody_1/article/details/88956315

git branch是什么?

分支是从主线上分离出来的操作,主要用作不同的开发用途。
应用:在分支上做开发,调试好了后再合并到主分支。那么每个人开发模块式都不会影响到别人。
他不需要将所有数据进行复制,只需创建**分支指针(只是指针!)指向分离分支的地方。
HEAD是指向最近一次提交的commit对象;**
image.png
https://blog.csdn.net/susu_xi/article/details/82025379

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
image.png

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

来找问题根源的!
git blame filename
会列出来每行的修改纪录。你可以通过行数或者代码来查看。

git fetch 和git pull的区别?

参考链接:
https://blog.csdn.net/a19881029/article/details/42245955
git fetch只是将本地所关联的远程库commit id更新至最新;
而git pull是将本地库更新到远程库的最新状态!
image.png
这种差异就会导致git fetch之后再git status提示版本落后。

git clone、fetch、pull的区别

clone是完完全全复制远程库的东西,甚至存放着与之一样的版本库记录;
pull是拉取分支更新到本地仓库的操作,值得注意的是其实是与本地内容merge;
fetch是获取服务器的最新状态(Head),跟本地需要手动合并:
image.png