前言

本文纯属个人学习笔记整理不做任何商业用途 如有错漏欢迎指正

生死看淡,不服就干

开门附上阮老师的git常用命令清单镇压妖魔鬼怪

正文

分布式版本与集中式(SVN)区别

Git是一种分布式版本控制系统,我们将集中式版本管理系统(SVN)和我们的分布式管理系统作为比较我们就比较好理解。

集中式(SVN) 分布式(Git)
是否有中央服务器 有。开发人员需要从中央服务器获得最新版本的项目然后在本地开发,开发完推送给中央服务器。因此脱离服务器开发者是几乎无法工作的 没有中央服务器,具有以下几个区域:Workspace(工作区),Index(暂存区),Repository(仓库区),Remote(远程区)
网络依赖  必须要联网才能工作,而且对网络的依赖性较强,如果推送的文件比较大而且网络状况欠佳,则提交文件的速度会受到很大的限制。 分布式在没有网络的情况下也可以执行commit、查看版本提交记录、以及分支操作,在有网络的情况下执行 push 到 Remote Repository。
网络依赖  必须要联网才能工作,而且对网络的依赖性较强,如果推送的文件比较大而且网络状况欠佳,则提交文件的速度会受到很大的限制。 分布式在没有网络的情况下也可以执行commit、查看版本提交记录、以及分支操作,在有网络的情况下执行 push 到 Remote Repository。
文件存储格式  按照原始文件存储,体积较大 按照元数据方式存储,体积很小
是否有版本号  有   没有
分支操作的影响   创建新的分支则所有的人都会拥有和你一样的分支 分支操作不会影响其他开发人员,每个人在自己分支上开发也可以在同一个分支上共同开发,不过需要事先跟同事商量好不同模块开发不然回存在冲突,开发完成后再合并每个分支
提交   提交的文件会直接记录到中央版本库 提交是本地操作,需要执行push操作才会到主要版本库

Git常用操作命令行

理解一张非常出名的Git原理图

图中都是我们平常使用Git合作时普通的一些命令行,这些基本的操作也基本能够满足我们平时使用Git,根据我 的工作事件已经查阅相关书籍简单解释我们常用的命令行具体代表什么意思。

  • git clone 你的github地址
    • 通常我们合作开发项目都是先从远程克隆团队项目到本地,此时项目就存在于我们当前的工作区(Workspace)
  • git checkout -b 你的分支
    • 新建你的分支并切换到你自己的开发分支。
  • git pull
    • 拉取当前分支的最新代码
  • git fetch
    • 拉取所有远端的最新代码,当其他同事提交了他的代码之后你可以拉取全部最新代码,推荐你开发完成之后拉取最新代码并合并。
  • git add .
    • 提交所有修改文件到暂存区,注意是修改过的文件才会被提交,暂存区的代码还不会提交到仓库区而是放到暂存区,为什么会有个暂存区?我的理解是好比我们搬砖,我们需要一台拖拉机先把烧好的一部分砖放到车上(也可以全部烧好统一放到车上),将车开到仓库放下我们烧好的砖再最后运送到远程客户手中。
  • git commit -m "你的修改注释"
    • 提交暂存区文件到本地仓库(Repository)
  • git push
    • 提交本地修改文件到远程区(Remote)
  • git merge 分支名称
    • 本地分支代码合并其他分支代码,也可以合并远程分支代码。我们在合作开发的时候通常需要合并不同分支不同开发人员写的代码,一般来说在开发之前先拉取pull别人的代码到本地再开发自己的代码在合并的时候是不会有冲突的,直接merge就能够得到两个分支共同的代码。

我认为理解上述的所有内容就基本上满足你工作上的需求了,不过这里还是附上完整的Git操作命令行链接

工作中实践

结合我的工作对比这些命令行

  • 在vscode克隆合作项目到本地之后我们点击左下角查看项目分支情况

  • 我们的商家管理后台分支前后端一共五个人合作开发,每个人用自己独立的分支开发具体的功能,具体分支如下:

    • 每个人用自己名字的缩写区分每个人开发的具体分支,开发完成后在gitlab上申请合并分支到开发分支(develop) 我们公司有自己的编译脚本,开发分支上的代码会自动帮你打包编译,这样我们前端就直接负责开发合并省去打包编译步骤了。
    • 注:vscode上的origin/分支名称 表示该分支属于远程分支,你还未拉取该分支到你的本地环境。
  • 更新远程所有远程分支的最新代码 git fetch

  • 本地拉取当前分支的远程代码 git pull ps:与后端同事合作开发

  • 修改我的代码并提交到暂存区然后保存到本地仓库 git add . && git commit -m "修改了接口文档"

  • 提交到远程仓库 git push

  • 最后在gitlab上发起合并到开发分支的编译请求就可以实时在测试环境预览你的开发成果了,最后这一步会因不同公司的不同编译环境而定,具体是与后端同事或者服务端同事商量协定。

总结

对世界上的一切学问与知识的掌握也并非难事,只要持之以恒地学习,努力掌握规律,达到熟悉的境地,就能融会贯通,运用自如了。 —— 高士其

关于学习,有些人学以致用,不飞则已,一飞冲天;不鸣则已,一鸣惊人,学习就是不断地积累,不停地探索,这篇文章只是一些个人心得集合如果能对你有点帮助我会感到开心,同时也推荐一些更好的文章给大家学习,社会主义新中国共同学习。

-------------推荐阅读------------

廖雪峰老师关于Git的官方教程

git 团队合作, git 分支开发 、合并、冲突 实例

全面理解Git

如何优雅地使用Git

公司内部搭建 git 服务器

转载于:https://juejin.im/post/5cbf0ff85188250a655a61f0

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐