git的目的:
团队协作就不必多说了,对于个人而言类似于一个网盘,一个代码网盘,有人会说了,你传递文件的时候,用微信qq不就好了嘛,还方便,还不费事,但是!如果你要在一个服务器里部署应用呢,难道你还得先下载微信qq么?服务器一般都是linux,直接apt install git,进行一番配置就行了(●°u°●) 」(如果没有gui的话,rsa公钥数据怎么写入gitee和github中呢?)
由git养成的一个习惯,一个文件夹下面就放一个目录,方便以后git clone,省流量,以及奥卡姆剃刀原理。
一、git配置时:
1.配置git账号
git config --global user.name "git的用户名"#global意思是全局,你不加global的话就是本文件夹(适合github和gitee共存的局面)
git config --global user.email "git的邮箱"
2.根据用户名及邮箱生成密钥(该密钥会用在该账号中)
ssh-keygen -t rsa -C "git的邮箱"
3.密钥范围!(向github或者gitee里面ssh密钥填写时!!!)
生成的密钥默认存放在/home/用户名/.ssh 目录下
密钥的文件为 id_rsa.pub
cat id_rsa.pub 可以查看密钥内容
密钥范围为ssh至邮箱之前(重点!!!!!!! 不包含邮箱)
二、实际维护:
3.链接远程仓库
git remote add origin 项目地址
4.git pull时显示历史冲突
本地仓库在想做同步远程仓库到本地为之后本地仓库推送到远程仓库做准备时报错了,错误如下:
fatal: refusing to merge unrelated histories
(拒绝合并不相关的历史)
原因:
出现这个问题的最主要原因还是在于本地仓库和远程仓库实际上是独立的两个仓库。假如我之前是直接clone的方式在本地建立起远程github仓库的克隆本地仓库就不会有这问题了。
解决:
查阅了一下资料,发现可以在pull命令后紧接着使用–allow-unrelated-history选项来解决问题(该选项可以合并两个独立启动仓库的历史)。
命令:
git pull origin master --allow-unrelated-histories
结果:
将云上的克隆到本地并进行合并
在码云平台仓库上已经存在 readme 文件,故在提交时可能会存在冲突,这时您需要选择的是保留线上的文件或者舍弃线上的文件,如果您舍弃线上的文件,则在推送时选择强制推送,强制推送需要执行下面的命令:
git push origin master -f
如果您选择保留线上的 readme 文件,则需要先执行:
git pull origin master
然后才可以推送,如果发生冲突,则需要先解决冲突,关于如何处理冲突,请参阅如何处理代码冲突。
关于git pull
git pull 命令基本上就是 git fetch 和 git merge 命令的组合体,Git 从指定的远程仓库中抓取内容,然后马上尝试将其合并进你所在的分支中。
从远程仓库中获得数据,可以执行:
$ git fetch [remote-name]
这个命令会访问远程仓库,从中拉取所有你还没有的数据。 执行完成后,你将会拥有那个远程仓库中所有分支的引用,可以随时合并或查看。
但是注意的是 git fetch 并不会自动合并或修改你当前的工作。 当准备好时你必须手动将其合并入你的工作。
如果你使用 clone 命令克隆了一个仓库,命令会自动将其添加为远程仓库并默认以 “origin” 为简写。 所以,git fetch origin 会抓取克隆(或上一次抓取)后新推送的所有工作。
由于fetch命令后还要再做一步merge命令的操作,所以使用 git pull 命令来自动的抓取然后合并远程分支到当前分支。 (相当于一次执行fetch加merge命令)这可能会是一个更简单或更舒服的工作流程。
4.当多人合作开发时
更新本地仓库
待测试。。。
git fetch origin
git commit -a
这个命令可以直接提交所有修改,省去了你git add和git diff和git commit的工序
注意:无法把新增文件或文件夹加入进来,所以,如果你新增了文件或文件夹,那么就要老老实实的先git add .,再git commit