Git&Github笔记

目录

        Git&Github笔记

1 版本控制工具应该具备的功能

2 版本控制简介

2.1 版本控制

2.2 版本控制工具

2.3 集中式vs分布式

3 Git 简介

3.1Git 简史

3.2Git 官网和 Logo

3.3 Git 的优势

3.4 git安装    

3.5 Git 结构

3.6 Git 和代码托管中心

3.7本地库和远程库

4 Git 命令行操作

4.1基本操作:

4.2 分支管理

5.其他操作

5.1.gitignore文件

5.2 fork

5.3 pull request

5.4 搭建gitlab服务器


Git&Github笔记

版本控制工具应该具备的功能

1.协同修改
    多人并行不悖的修改服务器端的同一个文件。
2.数据备份
    不仅保存目录和文件的当前状态, 还能够保存每一个提交过的历史状态。
3.版本管理
    在保存每一个版本的文件信息的时候要做到不保存重复数据, 以节约存储空
间,提高运行效率。 这方面 SVN 采用的是增量式管理的方式, 而 Git 采取了文
件系统快照的方式。
4.权限控制
    对团队中参与开发的人员进行权限控制。
    对团队外开发者贡献的代码进行审核——Git 独有。
5.历史记录
    查看修改人、 修改时间、 修改内容、 日志信息。
    将本地文件恢复到某一个历史状态。
6 分支管理
    允许开发团队在工作过程中多条生产线同时推进任务, 进一步提高效率。

2 版本控制简介

2.1 版本控制

工程设计领域中使用版本控制管理工程蓝图的设计过程。 在 IT 开发过程中也可以

使用版本控制思想管理代码的版本迭代。

2.2 版本控制工具

思想: 版本控制

实现: 版本控制工具

集中式版本控制工具:

CVS、 SVN、 VSS……

2.3 集中式vs分布式

Linus一直痛恨的CVS及SVN都是集中式的版本控制系统,而Git是分布式版本控制系统,集中式和分布式版本控制系统有什么区别呢?

       先说集中式版本控制系统,版本库是集中存放在中央服务器的,而干活的时候,用的都是自己的电脑,所以要先从中央服务器取得最新的版本,然后开始干活,干完活了,再把自己的活推送给中央服务器。中央服务器就好比是一个图书馆,你要改一本书,必须先从图书馆借出来,然后回到家自己改,改完了,再放回图书馆。

      集中式版本控制系统最大的毛病就是必须联网才能工作,如果在局域网内还好,带宽够大,速度够快,可如果在互联网上,遇到网速慢的话,可能提交一个10M的文件就需要5分钟,这还不得把人给憋死啊。

        那分布式版本控制系统与集中式版本控制系统有何不同呢?首先,分布式版本控制系统根本没有“中央服务器”,每个人的电脑上都是一个完整的版本库,这样,你工作的时候,就不需要联网了,因为版本库就在你自己的电脑上。既然每个人电脑上都有一个完整的版本库,那多个人如何协作呢?比方说你在自己电脑上改了文件A,你的同事也在他的电脑上改了文件A,这时,你们俩之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。

                 

 

                                             集中式                                                                            分布式

       和集中式版本控制系统相比,分布式版本控制系统的安全性要高很多,因为每个人电脑里都有完整的版本库,某一个人的电脑坏掉了不要紧,随便从其他人那里复制一个就可以了。而集中式版本控制系统的中央服务器要是出了问题,所有人都没法干活了。

        在实际使用分布式版本控制系统的时候,其实很少在两人之间的电脑上推送版本库的修改,因为可能你们俩不在一个局域网内,两台电脑互相访问不了,也可能今天你的同事病了,他的电脑压根没有开机。因此,分布式版本控制系统通常也有一台充当“中央服务器”的电脑,但这个服务器的作用仅仅是用来方便“交换”大家的修改,没有它大家也一样干活,只是交换修改不方便而已。

3 Git 简介

3.1Git 简史

文字描述见廖雪峰https://www.liaoxuefeng.com/wiki/896043488029600/896202815778784

官网地址: https://git-scm.com/

 

3.3 Git 的优势

1.大部分操作在本地完成, 不需要联网
2.完整性保证
3.尽可能添加数据而不是删除或修改数据
4.分支操作非常快捷流畅
5.Linux 命令全面兼容

3.4 git安装    

参考官网:

https://git-scm.com/book/zh/v2/%E8%B5%B7%E6%AD%A5-%E5%AE%89%E8%A3%85-Git

3.5 Git 结构

 

3.6 Git 和代码托管中心

  代码托管中心的任务: 维护远程库

  局域网环境下

            GitLab 服务器

  外网环境下
             GitHub
              码云

3.7本地库和远程库

3.7.1 团队内部协作

 

 

3.7.2 跨团队协作

 

 

 

 

 

 

4 Git 命令行操作

4.1基本操作:

git init         初始化本地创库.git(master分支)

git add              将工作区的“新建/修改” 添加到暂存区

git config       配置签名  

         作用:   区分不同开发人员的身份

         辨析:   这里设置的签名和登录远程库(代码托管中心)的账号、 密码没有任何关系。

git commit     暂存区提交到本地库

git status      本地库和暂存区的状态

git log          查看本地库递交记录

git reflog           和git log 差不多,带有会退的步数

git reset        回退

         其中一种:
         基于索引值操作[推荐]

         git reset --hard [局部索引值]

git diff         将工作区中的文件和暂存区进行比较

4.2 分支管理

在版本控制过程中, 使用多条线同时推进多个任务。

分支的好处?

         同时并行推进多个功能开发, 提高开发效率

         各个分支在开发过程中, 如果某一个分支开发失败, 不会对其他分支有任何影响。 失败的分支删除重新开始即可。

分支基本操作:

git branch 创建名 创建分支

git branch –v     查看分支

git checkout 分支名 :表示切换分支

分支合并:

第一步: 切换到接受修改的分支(被合并, 增加新内容) 上git checkout [被合并分支名]

第二步: 执行 merge 命令     git merge [有新内容分支名]

解决冲突
    冲突的表现

冲突的解决
    第一步: 编辑文件, 删除特殊符号

    第二步: 把文件修改到满意的程度, 保存退出
    第三步:
git add [文件名]
    第四步: git commit -m "日志信息"
    注意: 此时 commit 一定不能带具体文件名

5.其他操作

5.1.gitignore文件

     在使用git作版本控制时,git会默认把git控制的文件夹里面的所有文件都加入到版本控制。但是在实践中,我们经常会遇到不想某些文件或文件夹被git追踪的情况.比如logs文件、代码构建过程中产生的一些列文件,要解决这种问题,通常情况下我们需要创建一个文件格式后缀名为.gitignore的文件,来控制哪些文件不被git追踪.

详解见https://www.cnblogs.com/langtianya/p/5748885.html

参考:https://github.com/github/gitignore写自己的.gitignore

5.2 fork

复制别人的代码,到自己的github上,这个还是属于自己的仓库,随便修改

5.3 pull request

跨团队合作 Fork 完后,可以改完,上传本地仓库,想原始仓库提出pull request,然后对方来审核,过后进行merge。

5.4 搭建gitlab服务器

1.Docker搭建gitlab服务器  https://www.cnblogs.com/majiang/p/11452363.html

2.Centos 7搭建Gitlab服务器超详细https://blog.csdn.net/duyusean/article/details/80011540

参考:

1.https://www.bilibili.com/video/av24441039

2.https://www.liaoxuefeng.com/wiki/896043488029600

3.https://git-scm.com/docs

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值