↑↑↑高度关注后”星标“Datawhale每星期蔬果 & 每星期四人自学,极好过
Datawhale蔬果
在子公司应聘,老板娘:你git增建两个组成部分,先让试验的老师试验完你写的文本,再分拆到master里去。
我:???
应聘工作的这时候,子公司的工程项目标识符常常王承恩协作密切合作,须要加进Git辅助工具,把标识符递交到Gitlab上来, 虽然以后自学过Git的单纯采用,但当昨晚老板娘忽然那么一句,我就懵逼了,组成部分是干啥的?
以后都是在GitHub上创建两个工程项目,多于master组成部分,唯独没有碰到过这种王承恩协作的情景,也唯独没碰触过Git创建组成部分等操作方式,但在上级领导眼前,又不耐烦都说那些小东西没碰触过(我辨认出应聘时,要用的辅助工具是预设我们单厢的),应了大声,就急忙facai学了新一波。
这儿主要重新整理王承恩协作时常见的git操作方式,总之,也有pycharm的Git采用,即便这小东西比指示不过香太多啦。
1. Git最常见的两个操作方式
有关git是啥,是不是加装啥的,这儿就不说了,网路上数据资料一堆,这儿先重新整理我对个人如果用不然,常常常见的两个操作方式。
具体来说,浏览Git,顺利完成一些基本上的实用性:
具体来说增设你的帐号和超链接。这一点儿很重要,因为每两个 Git 递交单厢采用那些重要信息,它会载入到你的每一次递交中。
# github或是gitlab加进的帐号和电子邮箱$ git config —global user.name “John Doe”$ git config —global user.email “[email protected]”# 查看基本上实用性git config –list
然后,实用性ssh递交
# 生成秘钥ssh-keygen -t rsa -C“[email protected]” # ~/.ssh目录下面会有id_rsa和id_rsa.pub两个文件cat id_rsa.pub # 把这个里面的文本复制复制上面的文本之后,打开你的github,进入实用性页:Settings – SSH and GPG keys,添加本地生成的ssh秘钥,选择New SSH key(这儿已经实用性了两个key,如果是未实用性秘钥的用户,这儿是空的),把复制的文本贴过来,然后保存:
#试验是否实用性成功用ssh链接git:ssh -T [email protected]
这样做的原因是后面递交标识符的这时候,用的是ssh服务,还可以用http服务,不过那个还得每次git push的这时候,得输入GitHub帐号和密码登陆太麻烦,而走ssh这个,就可以直接递交。这样,Git的基本上实用性就顺利完成了。
下面就是常见操作方式,具体来说我经常会先从GitHub上增建两个仓库,然后git clone下来,这样不然,就可以从本地修改,递交了。但注意,git clone的这时候复制地址用ssh格式的才行
,啥意思?
SSH的这个,而不是HTTPS下面的那个。常见操作方式如下:# 克隆工程项目下来git clone [email protected]:zhongqiangwu960812/AI-RecommenderSystem.git
# 如果新改了某个文件,须要同步到远程# 如果是新增了某个文件,可以直接git add 文件名
git status # 可以查看修改情况git commit -m 新加文件 # 递交说明git push # 递交 # 这样,就搞定了# 如果是删除了某个或者修改了很多地方等,可以git add .
git commit -m update manygit push
# 如果是从远程仓库改了文件,须要先拉到本地,让本地和远程保持一致之后再pushgit pull
那些指示,就是在学校里面自学的指示了,当时我记得也看到过组成部分啥的,但由于情景有限,不知道是不是运用,所以就难认知,而在子公司,竟然那些才是最基础操作方式。下面是昨晚刚自学的一些小东西:
2. git 组成部分
有关组成部分是啥什么这时候用?情景至关重要,这儿只说针对我现在的处境的两个认知。目前子公司在Gitlab上,我们组共同维护着两个大工程项目, 每对个人都可以对这个工程项目根据需求进行修改。而我应聘之后,拿到的第两个任务,就是迁移接口和队列的操作方式,须要改一些实用性啥的,这这时候我git clone下这个工程项目来之后,用pycharm打开,然后进行修改。
我按照需求和老板娘指示,修改完了第一版标识符,然后打算去提测(就是开发顺利完成,去找试验的老师试验),这这时候,由于我的标识符没有经过试验,根本不知道能不能运行成功。而试验的老师拿我标识符,只能通过gitlab去拿,然后可以code diff,顺便试验等。一时间,我既不能把标识符直接递交到master上,因为master是维护最终正确标识符的;而我又必须得递交到gitlab。于是乎,老板娘说,你创建个组成部分就行了,把你标识符递交到组成部分上,试验的老师试验成功之后,再merge到master上就解决了。
所以有了情景之后,有些小东西自然会有感觉,组成部分现在给我的感觉,仿佛是面临多个需求,须要修改标识符的这时候,或是多对个人共同维护两个工程项目,但是又不能直接往master递交的这时候,组成部分是作为了每对个人进行标识符缓冲的地方。
我创建组成部分之后,就可以在这个组成部分下按照需求进行修改,这样还不影响最终标识符,当有好两个版本,或是有好两个需求的这时候,就非常适合创建组成部分,两个组成部分对应两个需求,开发完毕,进行push到组成部分,接着从另两个组成部分上开发,这样互不影响,最后还可以merge起来。
如何创建组成部分呢?
# 组成部分的创建与切换, 也可以直接用一行标识符:git brance -b 组成部分名git branch 组成部分名
git checkout 组成部分名
# 修改完了标识符,须要push到远程组成部分上,可以下面操作方式git push –set-upstream origin 组成部分名
# 查看组成部分git branch # 本地组成部分git branch -r# 远程组成部分git brance -a # 查看所有组成部分上面那些指示估计看了就头大,没关系,下面还有种非常单纯的傻瓜式操作方式,就是pycharm的Git。
3. Pycharm的git
有关这个小东西,也是不介绍,直接说是咋用的。我是先把gitlab上的工程项目git clone到本地。然后pycharm打开,此时:
左下角这儿,会有目前所在的组成部分,预设的这时候是master组成部分,由于我这儿修改了三版标识符,所以增建了三个组成部分。如果面临新需求,可以点击上面的New Brance增创建组成部分,预设会自动切换到此组成部分,这这时候,就可以肆无忌惮的写标识符了。
此时,如果我们修改标识符,pycharm会自动标记出来,修改是蓝色,Add之后变成绿色好像是,修改完标识符,我们右键点击工程项目名称,在里面有个git选项,在这儿吗就能够看到add和commit的操作方式了,我们可以先Add,把修改的标识符放到暂存区,然后进行commit的操作方式。
点击commit director之后,就会看到这样的两个界面:
上面的窗口就会看到自己修改的小东西,而下面,可以添加修改描述,接下来可以直接commit and push,也可以直接commit, 如果是前者,就会自动同步到远程的对应组成部分上来,如果是后者,还须要push操作方式才会同步到远程上来。所以这个就非常方便了,我今天用的这时候,是根据其中两个需求,创建了组成部分v1,然后修改标识符,进行提测,提测的这时候试验小姐姐让我提供组成部分名和commit id(ci id),我对后面这个又一脸懵逼,这个commit id是那么查的, 指示行输入:
git log
这儿面会显示自己的历史递交:
最近的一次,commit后面那一长串就是commit id了。知道了这个之后,又面临两个需求,所以又创建的了个v2组成部分,把标识符开发递交试验,接着增创建两个V3组成部分,在V2的基础上继续修改标识符,此时试验小姐姐说v2上的代码有问题,须要修改,此时我面临的处境在v3组成部分上新加了新标识符。当我切换到v2的这时候,辨认出,呀,这不和v3是一样的了吗?这我还咋改v2。然后老板娘和我说,你v3改了之后要commit才行呀,这这时候,才能看到真正的v2。所以在v3组成部分上,把修改先commit,此时再切回v2,看到了原来的v2,再从这个基础上改标识符,push到v2组成部分,再提测就OK了。
然后又从v3的基础上,把新的需求改完,add+commit push即可把以后的commit的,和后又新加的都一块同步到远程仓库,确实非常方便。
有组成部分就有分拆。总之,还有merge的需求,情景是这样子的:
上面我接了2个开发任务,增建了两个v2组成部分,去做A需求,这个开发顺利完成之后, 须要进行提测和上线, 在我提测了之后,接着又在v2的基础上,创建了两个新的组成部分v3做B需求, 这这时候, v2试验过了,然后须要上线,所以就merge到了master,然后部署上线。 这这时候远程v2组成部分就没了(merge了嘛)。
接着,我从v3上做新的开发,做完了之后,本来想提测,这这时候辨认出了个问题,v3是v2merge,上线以后创建出来的,而v2在merge和上线以后,根据测试那边的反馈是做了些改动的,这这时候,就面临着,即使我v3顺利完成了当前的B需求,但A需求v3这个版本是没有管的,也就是即使提测,相当于能满足B需求而A需求又没法满足了,是不是办呢?这时就加进了merge。这里老板娘告诉我的解决办法:把远程的master(这个是最新的)pull到你本地的master组成部分,然后把本地的master分拆到v3就可以了,再把v3push到远程的v3组成部分。
所以,merge的意思是什么呢?是保留最新的改动,如果把master merge到v3上,由于master是满足了A需求的,merge到v3后,我v3就不须要再管master的各种修改了,统一到了最新的版本上来,基于新的master进行了再开发, 这个是真的学到了。如果感觉说的比较抽象,可以先看看廖雪峰的Git教程,先了解下从dev分拆到master组成部分是啥意思。而我master组成部分分拆到dev上,其实相当于这个意思:
通过这一天,我算是见识了,以后唯独没有体会到Git原来是那么玩的。像上面这个组成部分, 以后是不是看都感觉不认知,结果真正用的这时候, 一晚上就有感觉了,所以自学知识,真的要想办法学以致用 😉
参考数据资料:廖雪峰老师的Git教程,适合随用随查https://www.liaoxuefeng.com/wiki/896043488029600/900003767775424重新整理不易,点赞三连↓