最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • 我给我讲GIT,并成功把我得罪了

    正文概述 掘金(即刻就业)   2021-07-07   453

    本文已参与好文召集令活动,点击查看:后端、大前端双赛道投稿,2万元奖池等你挑战!


    工作中如何使用GIT开发项目?(看到最后更精彩)


    为啥需要版本管理?

    假设:

    下周就要做年终工作汇报了,你打算今天把PPT做完。

    反反复复用了一上午的时间,总算是完成了一半。

    中午吃饭的时候,你依然在思考后半部分该怎么完成。

    然后你突然间觉得,上午的方案有些问题,还需要再改一改下午5点20分.....

    在你反复阅读自己的方案后, 仍然觉得,还是上午的方案更好

    可这个时候麻烦来了 , 上午的方案早就被改的面目全非了

    当时写的话术,使用的图片动画等等,都已经被你删除了

    想用Ctrl + Z解决? 可惜PPT最多只支持150次操作回退,默认设置好像只有80次

    这个时候,是不是特别想来一瓶后悔药?

    我给我讲GIT,并成功把我得罪了

    好了,刚才是个玩笑 , 但X度云盘真的有记录文件版本的功能

    因此,我们认为,一个好用的云盘软件,应该具备以下几个功能:

    1. 用户A和B之间能够方便的进行文件共享
    2. 用户A和B可以修改同一个文件,云盘能够及时解决冲突问题
    3. 用户A对文件的修改提交后会同步给用户B
    4. 所有用户对文件的每一次提交都会有记录保存,操作失误时,可以还原之前的版本

    版本管理 , 不正是因此而得名么?


    SVN的优势

    在使用git之前,你必须了解一下SVN

    说起来,SVN可是曾经风靡全球的版本管理工具

    SVN软件的使用,确实非常简单

    它有两个安装包

    我给我讲GIT,并成功把我得罪了 我给我讲GIT,并成功把我得罪了

    第二个安装包是服务器端,也就是说,你可以通过安装这个服务器端的软件,很轻易的在公司内部搭建一个SVN服务器

    这样大家就可以在公司内网进行文件或是 代码的共享了

    程序员在写代码时,经常需要协同开发(多个人维护一个项目)

    SVN带来的方便,自然不言而喻,几乎所有的主流开发工具,都会配有SVN的插件

    SVN的具体用法,这里不再详细描述。请读者自行百度


    有了SVN,为什么会出现Git?

    git这个软件的作者,是大名鼎鼎的Linus(Linux系统内核的发明人,编程界神话级的程序员)

    不得不说,git这个软件,在易用性上,跟SVN差了不是一个数量级

    但毕竟是专门给程序员用的,谁还考虑用户体验??

    由于linus严重的个人兴趣倾向,他非常不喜欢文件集中式的管理

    于是git软件打一开始就是分布式的

    简单的说:就是任何人都可以向任何人的电脑上提交代码,任何人也可以从任何人的电脑上下载代码,任何人都可以被看作服务器端

    再加上linus这种崇尚命令行主导一切的思维,git这个软件,打一开始就没有图形界面 我给我讲GIT,并成功把我得罪了

    所以使用git的时候,特别有种当黑客的感觉,有木有? 我给我讲GIT,并成功把我得罪了

    我给我讲GIT,并成功把我得罪了

    尽管,git率先发明了分支的设计,但是,这糟糕的用户体验,并没能使它在全球范围迅速流行起来,直到 github的出现.....


    git和github是啥关系?

    github, 这个被大家戏称为全球最大的同性交友网站

    它是如何崛起的呢?

    github网站提供了如下的服务:

    1. 你可以到这个网站注册一个账号
    2. 通过这个账号,你可以建立自己的仓库
    3. 使用你本地的git软件将你的代码提交到github服务器
    4. 如果你的同事也注册了github账号,那你可以一键转载分享给他
    5. github上面的项目都是可以公开分享给其他人看的
    6. 我们不提供交友,只能提供代码分享及管理

    你可以看到,github给我们带来了两个巨大的好处

    第一 github让我们似乎又回到了SVN的服务器时代,方便。

    第二 全世界所有知名的开源代码,都提交到了github上面并公开,这样一来,所有人都可以向这个开源项目提交自己的修改建议

    它带动了git软件的流行,这就是今天你不得不学git的原因


    git到底咋用?

    首先,下个一个git软件 https://git-scm.com/downloads,并安装

    在github上,建立一个空的project

    建好项目后,会看到项目的地址

    我给我讲GIT,并成功把我得罪了

    现在,把项目的下载地址复制好了

    找到一个合适的目录,例如E盘,在该目录下点击右键选择git bash here

    输入命令 git clone https://github.com/ay8yt/teach.git

    项目就会自动下载,这时E盘会多出一个teach目录

    好了,你现在可以打开你的开发工具,到这个目录下,编写你的代码了

    项目写完了,咋提交呢?

    在命令行使用 cd teach ,进入teach目录

    输入命令: git add -A , 将所有文件添加至缓存区,准备提交

    然后,输入 git commit -m '这里可以做一些描述,本次做了哪些修改'

    提交成功!


    可能还需要一些准备工作

    如果你第一次使用git,提交时,系统会提示你先设置用户信息,那我们就设置一下:

    git config --global user.email "随便邮箱"

    git config --global user.name "随便用户名"

    另外,由于项目通常是多人开发,你必须建立一个自己的分支

    我知道你一定想问, 啥是分支? 。。。。。这个说来有点话长了

    假设张三和李四要共同开发一个项目

    虽然,他们俩负责的是不同的模块

    但是,张三的模块如果出了BUG或者错误,会导致李四的项目也无法启动

    为了避免冲突和互相干扰

    张三和李四在开发之前,都把项目进行了一次克隆拷贝

    接下来,他们分别在自己克隆的副本上进行修改和提交

    我给我讲GIT,并成功把我得罪了

    接下来,张三就可以在自己的副本上进行修改和提交,和李四不会产生任何冲突

    这就是 分支 的概念了

    当然,张三的所有操作都是在自己的电脑本地进行的

    如果本地电脑出了问题,本地记录的版本依然会全部丢失

    所以,张三可以把自己本地的全部版本都推送到远程github服务器上

    我给我讲GIT,并成功把我得罪了

    同样,李四也可以把自己本地的全部版本都推送到远程github服务器上

    我给我讲GIT,并成功把我得罪了

    这时,我们查看github远程,会发现变成了这样:

    我给我讲GIT,并成功把我得罪了

    这样一来,我们不仅把所有人的版本做了记录,而且整个开发过程中,张三和李四没有任何交集,也不会产生任何冲突

    怎么样?有没有感觉这个分支的发明特别的帅气?

    我给我讲GIT,并成功把我得罪了

    尽管SVN后来也迅速的推出了分支的功能,但它没有一个像github这么流行并统一的服务器。

    github不仅提供了代码的托管,现在已经演变成了全球最大的代码分享社区

    并在2018年6月份,以75亿美元的价格,卖给了微软

    留给SVN的,只有一首《凉凉》


    了解了基本原理,还是得学学具体如何使用

    第一个我: 哎, 在工作中如何使用GIT开发项目?

    第二个我: 你就不会说个hello,你好吗?或者,请问~之类的话吗?

    第一个我: 我发现你事儿挺多的!

    第二个我: 请 ~ 把你的问题具体化好吗?

    第一个我: 那,这位(伪)大神,进入公司后怎么把gibhub上新建的项目down下来?

    第二个我: 请不要称呼我大神,我只是比你强很多,虽然我也有那么一瞬间觉得自己确实是个大神

    第一个我: 是哪些瞬间让你误会了自己呢?

    第二个我: 喝醉的瞬间,清醒过来就好了! 好了回答你的问题,

    如果你还有这样的疑问,显然你没有好好听课,因为上面已经讲过了。

    算了,再说一次,下不为例。git clone https://github.com/ay8yt/teach.git

    第一个我: 怎么在本地克隆一个副本,也就是创建一个分支?

    第二个我: 使用branch命令。git branch yintao01

    第一个我: 怎么进入这个分支呢?

    第二个我: git checkout yintao01

    我给我讲GIT,并成功把我得罪了

    好了,你现在应该能很明显的看到,你已经切换到了自己的分支,接下来的所有操作,都在这个副本上进行。

    第一个我: 写了一部分功能,想保存一个版本,怎么做?

    第二个我: 第一步,git add -A, 所有文件提交到缓存区

    第一个我: 等等! 我有些文件不想提交,例如 node_modules文件夹,怎么忽略它?

    第二个我: 你要在项目的根目录下,创建一个叫做.gitignore的文件,内容如下:

    我给我讲GIT,并成功把我得罪了

    第一个我: 可是我刚才已经把不需要的文件提交到缓存区了,怎么撤销?

    第二个我: 很简单,重置一下,git reset,然后就可以提交了。

    第一个我: 等等!我想在正式提交之前,先查看一下,都有哪些文件提交到了缓存区?

    第二个我: 你TM事儿真多!好吧,你可以使用git status命令查看,都做了哪些改动,以及所有文件的状态。

    第一个我: 好了,那正式提交是不是commit命令?

    第二个我: 没错!使用git commit -m '这里一定要把做了什么修改写清楚'

    第一个我: 每次提交一个版本都得写啊? 那多麻烦? 不写清楚行吗?

    第二个我: 你可以试试,把你肠子悔青。

    第一个我: 刚提交完,就后悔了,感觉提交错了,想撤销这次提交,或覆盖这次提交,怎么做?

    第二个我: 版本管理的好处,就是允许你后悔,首先你把错误的内容先修复好

    然后再次add添加缓存,但这次提交时,注意使用git commit --amend -m '刚才的提交就覆盖了'

    第一个我: 我想直接还原到上一个版本,怎么做?

    第二个我: 使用git reset head^

    第一个我: 我想直接还原到前两个版本,怎么做?

    第二个我: 使用git reset head^^

    第一个我: 那还原到前N个版本呢?

    第二个我: git reset head^^^^^^^^^^...

    第一个我: 你逗我呢? 这么麻烦?

    第二个我: 没开玩笑,就是这样,当然你可以指定版本号直接还原

    git reset --hard 7e2ec0f51e9ae2e7cbc7c4deca18b77b242148d6

    第一个我: 版本号是个哈希值? 这么长咋记得住?

    第二个我: 你可以用git log查看所有版本

    第一个我: 我查了,可是每个版本都改了什么看不到啊,这aaaaa,bbbb,cccc,dddd都是什么鬼?

    我给我讲GIT,并成功把我得罪了

    第二个我: 这不都是你自己提交时写的注释么? 不认真写注释的下场就是这样。活该。

    另外,任何时候写代码,一定要想清楚了,测试通过了再提交,这是程序员的基本素质。

    回滚操作虽然好用,但它不应该成为你的日常命令。如果一个程序员把各种回滚操作用的特别熟

    通常表明他的代码水平不怎么样。

    第一个我: 我看你用的就挺熟的呀

    第二个我: 滚~~~~~~

    第一个我: 如果本地我已经测试完并提交了,怎么推送到远程github上面?

    第二个我: 为了方便做远程推送,通常我们会给远程仓库地址做个快捷方式。

    git remote add miaodong https://git.oschina.net/ay8yt/test.git

    这个miaodong就是快捷名称,接下来你提交时,就可以这样写:

    git push -u miaodong yintao01 这句话的意思就是把yintao01这个分支推送到miaodong这个仓库地址

    -u 的意思就是把yintao01设为默认分支

    下次再推送,就可以直接写git push miaodong

    第一个我: 我的模块已经开发完成,并测试通过,也推送到了github上,怎么把我的分支合并回主分支

    第二个我: 在github上合并分支非常简单,找到Pull request,自己看说明去吧

    我给我讲GIT,并成功把我得罪了

    第一个我: 就这?我都会!

    第二个我: 有种你别跑!!!

    至此,我成功的把我得罪了。你成功的掌握了日常工作中git的基本使用


    起源地下载网 » 我给我讲GIT,并成功把我得罪了

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元