Erlo

干货|如何让同事不再吐槽自己的git管理技术

收藏 2022-06-24 10:30:09   13   开源中国
页面报错/反馈
点赞

       代码作为程序员辛苦加班的结晶,同时也是平时交流最多的方式,"低眉信手续续弹,说尽心中无限事"。她低着头手在键盘上连续地敲个不停;像是用满屏的代码把心中无限的往事说尽,"轻拢慢捻抹复挑,初为《霓裳》后《六幺》",初为然而此刻他并没有像久别重逢的老友一般,叽叽喳喳的说个不停,而是轻轻地拢,慢慢地捻,一会儿抹,一会儿挑,一会儿写策略,一会儿又琢磨起了观察者。现在话锋一转,又谈起了git:
 
想了解git命令,来一个help看看都有哪些命令:
git help 
git  -h
git  --help
了解之后,想进入git,怎么办?一般我们都不需要重新搭建一个内网git,因为不可能说每个人来到单位,都要把git平台重新搞一遍,而且大多数时候,我们作为开发,是不会有管理员权限的。管理员权限一般由运维把控。所以现在需要找运维童鞋给你开一个账号,开完后,他会把账号密码还有登录地址都发给你(沟通方式看各个公司规定)。
 
到这里你已经拿到自己的git信息,假设realname="王小风",username="wangxiaofeng",password=wxf20220623
 
配置下用户的账号信息:
git config --global user.name "wangxiaofeng"
git config --global user.email wangxiaofeng@163.com
配置级别
–local(默认,高级优先):只影响本地仓库
–global(中优先级):只影响所有当前用户的git仓库
–system(低优先级):影响到全系统的git仓库
 
刚进公司,环境搭建好之后,也没啥需求。摸会儿鱼?好想法。。。悄咪咪的刷会抖音,打开收藏的歌单,播放《那女孩对我说》,看着视频中的画面,听着一句句熟悉的歌词,脑海中渐渐浮现出她的音容笑貌:
 
那年那时,跟她谈音乐休养,聊娱乐八卦,相约帝都,共战峡谷。时时醉心于她那机智的言辞,爽朗的笑声。曾经无数次以为可以这样一直开心的聊天。却没想到因为自己的一再犹疑不决,最终导致分道扬镳,天各一方。。。小宅,你最近还好吗?
 
好!现在你要独立完成一个新项目,要先把项目加到git管理,要不然当你码了几天重要业务逻辑后,电脑出现不可修复故障,不是要哭晕在厕所?
 
进入项目所在目录,然后
git init
初始化项目。
git init newProject
这样git就会帮你创建好一个项目
 
但是项目中的文件还没有上传上去,怎么办呢,提交代码分三步走,要一步步来:
调用
git add #将当前工作目录的所有文件添加到暂存区
git add -u # 把修改之后的文件(这些文件已经被管理起来了)一次性提交到暂存区
这里要注意下,add命令调用之后,代码已经加入git管理,就是提交了三分之一。
 
然后在调用git commit 命令进行提交,提交的历史会被记录下来:
 
$ git commit -m 'MainApplication.java' # -m 指定 commit 的信息
$ git commit # 这时候会跳出一个文本输入界面,让你输入更多的 commit 信息
又向前买了一步,现在代码存储的位置我们称之为暂存区。
 
你觉得一个文件的名字不好听,想换一个,可以:
git mv MainApplication.java UserApplication.java
最后一步,是把代码推送到git远程分支:
$ git push
此时代码是推送到master上面的。一个人写完代码直接推送到master上面,简直不要太爽!
 
现在我们知道,代码文件从创建到提交一路要经过四个地方,分别是本地(local)-->加入代码管理-->暂存区-->远程仓库。第二步和第三步是已经添加到git管理,代码存在暂存区,第四步代码在git远程仓库。
 
协作开发
 
刚开始这个项目由你一个人单独开发,一天接到消息:两周后要给领导演示。但是根据现在进度,以及剩余工作亮评估后需要三周左右时间。而进度压缩只有两种方式:赶工和快速跟进。一个人快速跟进,肯定是不行了,只能增加人手,用赶工的方式来完成了。OK,现在一个新的小伙伴王小悠到位。
 
这个时候,你们的代码管理需要用到分支,分支相当于一个独立的开发空间,团队成员以同一套release代码作为依托,新建功能分支,但是彼此在不同工作空间里面工作的时候是互不影响的,当需要集成的时候又可以把他们集成到一个公共的分支上面去。
 
多人开发git管理模式:从master上拉取并新建release分支代码,release分支作为正式上线和团队中开发人员拉取项目功能分支的分支,这个分支名称命名我建议用这种格式:dev_公司名称简称全拼_功能名称_分支创建时间(年月日),例如:dev_digndang_userPay_20220529。后面我们再通过dev_digndang_userPay_20220529拉取最新代码并创建自己的功能分支。

    

下面是有关分支的操作:
HEAD->feature_wangxiaofeng_20220530_userLogin
表示当前的 HEAD 指向的是 feature_wangxiaoyou_20220530_userLogin分支,其实真正指向的是该分支最后一次 commit。
 
【建议】分支创建的命名规则:用户名全拼音_分支创建时间(年月日)_功能名称
 
git branch #查看分支情况、创建分支、删除分支
git branch -v # 查看本地分支的详细情况
git branch -a # 查看所有分支,包括远端分支,但没有过于详细的信息
git branch -av # 查看所有分支情况
git branch branch_name hash_value # 创建一个新的分支,基于 hash_value 的这个 commit 创建一个新的分支,hash_value 可以省略,那么默认是基于当前分支的最后一个 commit 创建。
git branch -d branch_name
git branch -D branch_name # 这个分支已经有了一些 commit
git checkout branch_name # 切换分支
例如:你想切换到王小悠的支付分支上:
git checkout feature_wangxiaoyou_20220530_pay

git checkout -b branch_name git_id # 创建一个新的分支并切换过去,git_id可以是hash_value,也可以是某个分支的名字(分支的名字其实就指向了某个 commit)
如果你现在写完一个需求,代码commit到暂存区,还没有推送到远程仓库,现在使用
git diff --cached 命令,可以比较暂存区代码和本分支最新分支代码中间的差异;
 
如果你继续提交代码到代码分支的远程仓库,push完成后,觉得还是不放心,担心影响release代码,这时,你可以拿自己分支的代码跟release代码作比较,需要用到
比较:git diff命令:
 
git diff feature_wangxiaofeng_20220530_userLogin release # feature_wangxiaofeng_20220530_userLogin对应的 comimit 和 release 对应的 commit 进行比较(暂存区的比较)
git diff feature_wangxiaofeng_20220530_userLogin release -- file_name1 file_name2 # 在上述基础之上,只比较 file_name1、file_name2 这两个文件(暂存区的两个文件比较)
git diff branch_name1 branch_name2 # 对两个分支进行比较(远程仓库的比较)
git diff branch_name1 branch_name2 -- file_name1 file_name2(远程仓库的两个文件比较)
10天后项目开发完了,王小风和王小悠的代码统一提交到dev_digndang_userPay_20220529分支,然后根据产品童鞋的上线日期,合并代码到release分支,最后通知运维童鞋部署release代码到正式服。
 
接下来,就是等着发项目奖金了。。哈哈。。。
 
彩蛋福利
 
相逢即是有缘,再给大家推荐一个超炫的git管理工具:gitkraken
左侧栏有LOCAL(本地仓库)、REMOTE(远程仓库)、STASHES(修改点)、TAGS(标签)、SUBMODULES(子模块),相当于省去 git branch,直接一目了然所有分支

gitkraken6.5.3本地库开始收费,旧版本下载地址
 
收费版本
{
"version": "6.5.3",
"url_deb": "https://release.axocdn.com/linux/GitKraken-v6.5.3.deb",
"url_rpm": "https://release.axocdn.com/linux/GitKraken-v6.5.3.rpm",
"url_targz": "https://release.axocdn.com/linux/GitKraken-v6.5.3.tar.gz",
"url_exe": "https://release.axocdn.com/win64/GitKrakenSetup-6.5.3.exe"
}
免费版本
{
"version": "6.5.1",
"url_deb": "https://release.axocdn.com/linux/GitKraken-v6.5.1.deb",
"url_rpm": "https://release.axocdn.com/linux/GitKraken-v6.5.1.rpm",
"url_targz": "https://release.axocdn.com/linux/GitKraken-v6.5.1.tar.gz",
"url_exe": "https://release.axocdn.com/win64/GitKrakenSetup-6.5.1.exe"
}
再放一个免费版本下载链接:
登录查看全部

参与评论

评论留言

还没有评论留言,赶紧来抢楼吧~~

返回顶部

给这篇文章打个标签吧~

棒极了 糟糕透顶 好文章 PHP JAVA JS 小程序 Python SEO MySql 确认