一、Git的作用/为什么要进行版本控制?

什么是项目迭代?

搞开发的时候我们不是一次性就做好平台的所有功能,而是先上线一个功能差不多的版本让用户用着,然后不断迭代、修改,上线新的版本,所以一个项目就会出现很多版本。

为什么要进行版本控制?

原因(1):我们对项目进行了七八轮的修改,最后发现还是最初的版本好用!但是我们不想再手动改回去,况且我们也忘了自己都改了什么,这就需要一个仓库去记录之前的历史版本。恢复到以前的版本可以理解为回滚。

原因(2):提升多人开发效率

二、git的诞生

Linux内核发布早期,难免很多错误,Linux社区的大佬们在体验Linux的过程中会发现这些错误,自己打补丁,给作者提交新版本的Linux内核。如果一天有100个大佬提交了100个补丁,那作者就要手动归档100次。

所以Linux的作者开发了Git。

仅用了两周,并且也是开源、免费的。

三、git的安装

超棒的教程

Git 详细安装教程(详解 Git 安装过程的每一个步骤)_git安装_mukes的博客-CSDN博客

官网下载安装包会很慢,找国内镜像下载。

无脑next安装。

安装程序会自动配好环境变量,但是没啥用。

四、git bash  git cmd 和 gitGUI

只需要知道git bash是最重要的就行了,其他两个用不到

五、git的必要配置

用户名和邮箱是必须要配置的,不然别人怎么知道新版本是谁提交的?

Git的配置又分为修改整个系统的配置(system)和修改当前用户的配置(global),我们只需要改global的就可以了。

有两种修改方式。

法(1)git bash命令行修改

1. 修改system配置

不用管。

2. 修改global配置(常用

git config --global user.name "zhangsan"
git config --global user.email "zhangsan@jd.com"

查看配置信息 ,检查一下是否修改正确

git config --list

法(2)直接改配置文件

git系统的配置文件和用户的配置文件不在一个地方

1. 修改系统配置

2. 修改用户配置

六、git是否要配环境变量?

都行。

因为git使用的时候一般是,先打开想要存放项目的文件夹(我们已经自己定位好了),然后右键选择git bash,所以其实不需要配环境变量。

七、git工作一览图

八、配置SSH-key

https://blog.csdn.net/qq_44886213/article/details/129841419

九、git常用操作

1. 在本地新建仓库

PS: 如果这个项目只是你自己在开发,那么一个本地仓库就够了,远程仓库是多人开发一个项目才能用到。

新建一个工作目录,打开git bash执行如下命令

git init

工作目录下就会出现一个.git文件夹,表明本地仓库新建成功。

2. 克隆远程仓库

更多情况下,我们不是项目的发起者,不需要自己建仓库,直接拉取同事建好的就行了。

git clone url

3. 提交到暂存库

我们改动了代码

git add .  #最后一个点的意思是,把工作目录下的所有文件都提交到暂存库

其实不用提交所有文件,因为我们一般只改了其中一两个文件。用 add . 是为了方便。后续在IDEA中使用git时,会直接帮我们识别改动了什么文件,不需要再执行git add命令了。

4. 提交到本地仓库

git commit -m "我改了什么东西"

5.提交到远程仓库

git push

6. git的提交过滤(.gitignore文件)

我们不想把工作目录的所有文件都进行版本控制,比如数据库文件,IDEA自己生成的.idea文件,日志文件,target下的文件,因为这些文件也不需要版本控制

7. 更新

如何获得别人最新提交的版本。

分为两种情况,一种是你一点也没改,这样可以直接check out,check out虽然会合并你的版本和该分支当前提交的最新版本,但是由于你什么都没有改,所以就相当于拉取了最新的版本;还可以把项目文件夹全都删了,重新Git clone。另一种情况是你改了代码,此时check out的话,就需要和最新提交的版本合并。

十、IDEA中git的使用

git clone一个项目,然后直接用IDEA打开。

PS:git项目可以直接复制粘贴文件,比如说我们的项目目前在D:/workspcae/jdmeta下,我因为是用git clone拉去下来的,所以git可以在该目录下生效,可以用git commit/push命令提交,但是现在我们想把项目移动到D:/workplase/jdmeta2下面,只需要把D:/workspcae/jdmeta下的所有文件都复制粘贴到D:/workspcae/jdmeta2下就行了,只要包括了.git文件夹,git在新目录下照样生效。因为.git文件夹中的文件记录着这个项目的远程仓库地址,

git的操作只需要记住3步:

  1. git add
  2. git commit
  3. git push

十一、分支问题

1、git有一个中心仓库,库中有一个产品A的设计图纸,这个就是master。

2、码农A和B打算改进产品A;于是他们从仓库下载原始图纸到本地,然后在本地修改

3、码农A做出初步改进后打算提交,若其它任何码农均未提交,则可以直接提交;但却发现码农B已经提交自己的版本了

4、码农A认为自己的改进其实还有地方需要完善;那么如果每次合并主版本都要检查并合并B的修改(以及之后可能有的其它修改),显然会浪费很多时间,耽误后续开发;若草草检查就合入,就容易影响主版本的稳定。

5、于是码农A产生了一个分支,叫做产品A之码农A改进版;以后自己的改进都合进这个分支

6、码农B、C、D继续改进产品A的master版

7、N个月后,码农A认为自己的改进已经尽善尽美了,于是合并自己的“产品A之码农A改进版”到当前的主版本

8、但是两者冲突太多;于是码农A利用各种diff工具检查主版本和自己的分支版本之异同,注意观察自己的代码能否直接插入主版本而不引起逻辑故障;若不引起就合入,否则可能就要前后错几行、在合适位置合入。

9、合入后,经过重新测试,码农A就可以废止自己的分支版本,新功能开发完成。

10、任何参与开发的人,只要不是一次性修改,都应该这样开一个分支,把自己的工作先合入这个分支;等开发完全完成后再合并自己的分支到主版本。

简单来说:master只能存放稳定版本,也就是能够通过编译测试的版本。如果码农A要在master的基础上增加一个新的功能,并且预计两个周的时间,要改很多次,不断去修改这个功能,那么A就要新开一个自己的分支,当新功能写好了以后,再merge到master分支去。如果码农B只是对master做一下小修改,预计半小时就能改完,而且只改一两次,那么B直接在master上改就行,不用创建一个新的分支。如果码农A要在master的基础上新增一个功能,同时码农B也要在master的基础上新增一个功能,A和B都必须要新开分支,那如何merge呢?

上图中,A和maser进行merge的时候是没问题的,当B要merge到主分支时:程序员A和B坐在一起,用diff命令查看不同的地方,商量两个人的代码如何合并。

Git 版本控制/项目迭代相关推荐

  1. 在Android Studio 上为项目添加Git版本控制

    准备:Android Studio 需要配置GitHub ,配置方法在上一篇文章:https://blog.csdn.net/z1web/article/details/84106234 然后打开你想 ...

  2. Git版本控制\远程开发\多人协作

    Git版本控制\远程开发\多人协作 前言 你将学到 版本控制 版本控制两大主流类型 专业术语 Git的使用 基本配置 创建自己的仓库:init/clone仓库, 本地代码与云端仓库实现同步 工作区到暂 ...

  3. Git 版本控制之 GitFlow

    来源:  http://t.cn/EbZKx96 最近在着手制定开发规范,想要把项目正规高效的跑起来.计划引入 Git 版本控制,Git-Flow 便成为了首选.因为之前并没有过多接触,所以先花些时间 ...

  4. git版本控制工具(二)----本地版本库的常用操作

    ​[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/ ...

  5. GitHub 版本控制 项目托管 04 创建GitHub远程仓库

    (本博客GitHub分支下所有相关资料的统一下载链接:http://pan.baidu.com/s/1bo5RrtX) (PS:任何问题欢迎在下方评论区留言,12小时内回复~) 上接<GitHu ...

  6. git修改服务器的命令行,Git版本控制工具安装及命令行操作

    很多小伙伴不知道如何来安装Git版本控制工具,对于命令操作比较陌生.本文做了一个详细的文档,希望对大家有所帮助. 1.git 是什么一个分布式版本控制系统,和SVN类似,但远比SVN强大的一个版本控制 ...

  7. 《Git版本控制管理(第2版)》——4.3 Git在工作时的概念

    本节书摘来自异步社区<Git版本控制管理(第2版)>一书中的第4章,第4.3节,作者:[美]Jon Loeliger , Matthew McCullough著,更多章节内容可以访问云栖社 ...

  8. 【Git版本控制管理】Gitee(码云)和GitHub的使用

    远程仓库的使用 文章目录 远程仓库的使用 使用码云(Gitee) 使用GitHub 远程仓库是指托管在因特网或其他网络中的你的项目的版本库. 你可以有好几个远程仓库,通常有些仓库对你只读,有些则可以读 ...

  9. Git——版本控制为王

         前言 单枪匹马,独闯天下的时代已经过去,团队,组织间的协同开发已然成为了主流.那么如何最大化的加快开发时间?如何确保个体差异性得以解决不冲突?svn,git等一系列版本控制软件应运而生,其中 ...

最新文章

  1. 基于深度卷积神经网络的小样本分割算法综述
  2. 用Ajax 构建关键任务的企业级Web 应用 ——《深入 Ajax :架构与最佳实践》
  3. 视频会议进入云时代,所有企业的必答题
  4. 雾霾入侵机房会产生哪些危害?该如何防护?
  5. CT流程与CT图像的windowing操作(转载+整理)
  6. String常用的方法总结
  7. 华为开启管理员模式_又一年的心动模式开启,华为nova8系列8号色撩人肺腑
  8. LintCode 158: Anagram
  9. MindNode for Mac(思维导图)下载
  10. 新手必看——JAVA排序详解(冒泡排序和插入排序)
  11. Photoshop又来神器!人脸动态捕捉来了!
  12. Hive | 用sort_array函数解决collet_list列表排序混乱问题
  13. 用科学计算器求均值与方差(超详细)(概率论中使用)
  14. [印刷工艺]从正度纸,大度纸说起
  15. 红巨人特效插件套装effects suite mac版
  16. 创建glance镜像报错HTTP503
  17. OkHttp实现远程调用
  18. python计算机器人运动学分析_V-rep学习笔记:机器人逆运动学数值解法(The Jacobian Transpose Method)...
  19. TTS数据制作过程分享
  20. win7系统打开定位服务器地址,win7系统手动打开或关闭系统定位服务的步骤

热门文章

  1. 安卓Android公交查询系统app资源分享
  2. pgsql数据替换替换换行符
  3. 微信支付证书如何部署在linux,微信支付平台证书更新指引
  4. Python 抽扑克牌游戏
  5. 子网掩码是什么,可以做什么
  6. Linux简单介绍(入门)
  7. Win10系统Anaconda+TensorFlow+Keras 环境搭建教程
  8. 第一章 前端开发——HTML5/CSS3
  9. 操作系统学习-1. 操作系统的目标和作用
  10. jdk,jre,jvm的包含关系