Git 从了解到放弃

1. 简单介绍

1.1. git起源

   在1991年linus创建了Linux从此linux成为服务器领域的佼佼者,大部分web服务器、邮件、数据库各种服务器端程序都安装在了linux上面运行,主要是因为它运行的快速、高效、利用率高,这样一个优秀的系统并不是一个人在维护,来自民间的众多高手一起在维护这linux发展,那么这么多分布式世界各地的人如何共同维护如此多的Linux代码呢?这就需要一个分布式代码管理工具,linus使用过BitKeeper来管理代码但是它是收费的,让很多人用着不爽,后来linus本人就自己开发写了一个工具来管理,这就是git的第一个版本。后来随着时间推移越来越多的开源软件通过Git来管理,为了把世界各地的开源项目管理起来,GitHub网站随后上线了,很多流行的项目加入的此网站上面。例如我们经常使用的jquery等。

1.2. 集中式vs分布式

  分布式版本系统的最大好处之一是在本地工作完全不需要考虑远程库的存在,也就是有没有联网都可以正常工作,而SVN在没有联网的时候是拒绝干活的!当有网络的时候,再把本地提交推送一下就完成了同步,真是太方便了!集中式版本控制系统像CVS、SVN等,一般是将代码部署到一台服务器上面,每个开发者在每天开发之前需要从服务器上面checkout下来最新的代码,本地修改完后要 commit,要求本地电脑与服务器连着才可以提交如果网络带宽慢则会很卡,记得曾经在公司提交代码,几十k的代码每次提交都会卡住,很影响开发速度和开发质量。相比之下,git本地就有仓库,每个开发者都有完整的代码,可以在上面进行各种开发,没有网络的延迟。提高开发效率。每个人修改代码之后会将修改的代码互相推送给每个人,通常为了提高互相推送的传输效率往往搭建一台git服务器来进行代码的推送和拉回,可以提高开发效率。

1.3. 各种git的介绍

  1. git是一个本地工具,用来关联远程的git服务器,同时本地也有时光穿梭的功能
  2. gitlab,github,码云等都是云服务,是本地的git的一个镜像。在不同电脑上就可以拉取,同步。

1.4. git的安装

一般大神都是用git的命令行工具,同时也有很多的图形化工具:souretree等

  1. windows 下的安装

    从官网上 :https://git-scm.com/ 上下载,傻瓜式安装就好了

  2. linux 下安装

yum install git

2. 本地git的使用

2.1. 初始化本地仓库

# 使用gitbash创建一个目录,并进入到该目录种
mkdir learngit
cd learngit
# 初始化仓库
git init
# 在该文件下多了一个.git的隐藏目录
$ ll -a
total 24
drwxr-xr-x 1 LH 197121 0 6月  28 14:22 ./
drwxr-xr-x 1 LH 197121 0 6月  28 14:20 ../
drwxr-xr-x 1 LH 197121 0 6月  28 14:22 .git/

2.2. 配置识别账户与密码

这个账户密码并不是登入的账号密码,只是作为一个识别码,区分谁提交的。
每次commit的时候,都会带上这个信息

git config --global --list  # 查看是否配置了
git config --global user.name hui
git config --global user.email 232344@qq.com

2.3. git的操作

使用下面的命令就可以完成一次版本的提交。

git add filename         # add dir 添加该文件下所有文件; add file1 file2 ; add . 添加所有所有的文件。
git commit -m '注释消息'  # -m是注释的意思。注意的是 每次版本提交都要详细标明每次变化

2.4. 三区:工作区、缓存区、版本区

  1. 工作区就是我们工作的区域--我们编写代码的地方
  2. 暂存区,index(stage) -- add的地方
  3. 版本区 -- commit的地方

2.5. 查看提交的版本信息

git log
git log --pretty=oneline  # 一行显示,还有其他参数自己研究

2.6. 版本回退-git reset

回退到上一个版本  git reset --hard HEAD^
回退到上上个版本  git reset --hard HEAD^^
回到到上100个版本 git reset --hard HEAD~100
回退到指定的版本  git reset --hard 具体的版本号(使用git log查看)

但是我们回到上一个版本之后,使用git log 看不到之后的版本了,这个很蛋疼:

  1. 使用命令行上面git log可以看到之后的版本,可以到那个版本去。
  2. 使用git reflog 可以看到每一次操作的版本号(一般都使用这个)

2.7. 撤销-git checkout

git checkout -- filename

分为两种情况:

  1. 如果文件自修改后还没有add到缓存区,现在撤销的话,工作区就会和版本库一直
  2. 如果文件已经添加到缓存区,又做了修改。现在撤销的话,就会回到缓存去的状态

总之,就是让文件回到最后一次git add 或 git commit的状态

3. 远端仓库

3.1. github设置

  1. 再创建账号密码之后,创建新仓库
  2. public是公有的,大家都能看见。private是私有的,但是需要money
  3. init选项,最好不要选择,不然会造成 本地的master 与 远程的master不一致(本地没readme,远端有readme),推送的时候会发生错误。可以先pull下来,让本地与云端都有readme。这样可以解决
  4. .gitignore是忽略某些文件:一些大文件,我们不需要修改,但又比较大。再push的时候,就可以忽略。增加速度
    license是一个公开授权,没啥用

3.2. 两种连接方式

  1. 使用https的连接方式-适合单人

需要账号密码认证- 适合单人的项目

git remote add origin https://github.com/star-hui/gittest.git
# origin是仓库的名字,可以随意定义但是下面必须一直
git push -u origin master
# 第一次推送的时候,需要把本地的mster分支与远程的master分支合并。所以加上-u参数
git push origin msster
# 之后每次连接不需要-u参数
  1. 使用ssh连接-适合团队

直接使用公钥,团队成员每个成员的公钥都加入进来,就可以一起使用了。

# 第一步:在你本地先生成rsa的密钥
ssh-keygen.exe -t rsa -C '123@qq.com'   # 邮箱是团队每个成员自己的邮箱,只作为标识符# 第二步: 在上一步生成的rsa文件夹种,把.pub结尾的文件加入到github网站的ssh-key中# 第三步: 本地进行关联操作git remote add louhui git@github.com:star-hui/sshtest.git# louhui只是仓库名,:后面的为项目地址,前面邮箱都使用Git官方邮箱。# 第四部: 推送
# 第一次推送,需要合并本地与远端的master分支
git push -u louhui master
# 以后推送
git push -u louhui master

在上面其实我们看出,本地的git可以添加多个远程仓库,使用仓库名来区分就可以了。如下:

git remote add louhui | origin
git push louhui | origin master # 使用不同的仓库名,进行推送

3.3. 克隆云端的项目

本地不需要新初始化一个仓库,克隆下来就是一个仓库了:
有两种办法,有些网络场景被屏蔽的一些端口的时候,可以从这两种来选择。

  1. 第一种直接使用远端的仓库https地址:进入到仓库,直接复制下来

    git clone https://github.com/star-hui/gittest

  2. 第二种使用ssh来连接克隆

    git clone git@github.com:star-hui/sshtest.git

3.4. 分支管理

  待完善

转载于:https://www.cnblogs.com/louhui/p/9241460.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/353401.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LIS(Longest Increasing Subsequence)最长上升(不下降)子序列

有两种算法复杂度为O(n*logn)和O(n^2)O(n^2)算法分析如下: (a[1]...a[n] 存的都是输入的数)1、对于a[n]来说,由于它是最后一个数,所以当从a[n]开始查找时,只存在长度为1的不下降子序列;2、若从a…

java ee 的使用方法_改善Java EE生产支持技能的8种方法

java ee 的使用方法参与Java EE生产支持的每个人都知道这项工作可能很困难。 7/24寻呼机支持,多个事件和错误修复(要定期处理),来自客户和管理团队的压力,要求它们尽快解决生产问题并防止再次发生。 在日常工作中&…

Tp3.1 文件上传到七牛云

TP3.1 中不支持Composer 就无法用composer 安装 下载历史的SDK https://github.com/qiniu/php-sdk/releases/tag/v7.0.8 下载下来放到 Think 目录下的Vendor下 进入代码 HTML的代码 <form id"upload" methodpost action"file" enctype"multipart/f…

Matlab元胞数组操作

元胞数组 删除行的方法比较特殊 A(i,:)=[];%注意,两边都没有用花括号 元胞数组中的操作函数 cell:创建空的元胞数组 cellfun:为元胞数组的每个元胞执行指定的函数 celldisp:显示所有元胞的内容 cellplot:利用图形方式显示元胞数组 cell2mat…

激励自己的名言警句

激励自己的名言警句 1、忍别人所不能忍的痛&#xff0c;吃别人所别人所不能吃的苦&#xff0c;是为了收获得不到的收获。 2、销售是从被别人拒绝开始的。 3、好咖啡要和朋友一起品尝&#xff0c;好机会也要和朋友一起分享。 4、生命之灯因热情而点燃&#xff0c;生命之舟因拼搏…

Java Spring 后端项目搭建

参考了几位同行的Blogs和StackOverflow上的许多问答&#xff0c;搭建了此后端项目&#xff0c;替换原来的node.js后端&#xff0c;和前一篇中搭建的Vue Web App项目配合使用&#xff0c;后端准备只提供服务&#xff0c;不包含后端装配的页面&#xff0c;打算只使用MongoDb和Red…

新电子书:解决生产中Java应用程序错误的完整指南

构建明智的错误处理工作流程需要什么&#xff1f; 生产异常处理是一门黑暗的科学。 一旦您的代码投入生产&#xff0c;任何小的缺陷或故障都可以转化为数百万个日志事件。 尤其是在将异常作为控制流的一部分使用的情况下。 它是研究最少的主题&#xff0c;对您的应用程序的行…

Matlab运行指定m文件

当m文件在当前目录时可以直接输入该m文件的名字运行&#xff0c;但是当不在当前目录时可以使用run(filename)的方式运行&#xff0c;使用edit(filename)还可以直接编辑&#xff0c;当然filename可以包含文件路径。

在VC中使用MATLAB C++函数库

http://Tech.16C.Cn 在VC中使用MATLAB C/C函数库 MATLAB广泛应用于线性代数、自动控制理论、数理统计、数字信号处理、时间序列分析、动态系统仿真等领域。因此如果在VC中对MATLAB进行调用将大大减少编程的工作量、保证程序的准确性&#xff0c;并且继承了VC强大的功能&#x…

转帖 IBM要推POWER9,来了解一下POWER处理器的前世今生

https://blog.csdn.net/kwame211/article/details/76669555 先来说一下最新的POWER 9 在Hot Chips会议上首次提到的IBM Power 9 处理器有可能成为劲爆芯片&#xff0c;Power 9预计有助新 OEM 和加速器合作伙伴的发展&#xff0c;并可为大蓝色IBM叫板主要竞争对手英特尔的高端服…

java线程死亡_Java模因拒绝死亡

java线程死亡也有标题&#xff1b; 我的宠物讨厌Java编码。 有许多Java模因让我很烦&#xff0c;部分是因为它们总是一个坏主意&#xff0c;但主要是因为人们在找到更好的替代方案后的几年里仍在不断地选择它们。 使用StringBuffer代替StringBuilder 从2004年开始&#xff0c…

Eclipse报错 due to restriction on required library C:/Java/jdk1.6.0_10/jre/lib/rt.jar 解决方案

Eclipse报错 due to restriction on required library C:/Java/jdk1.6.0_10/jre/lib/rt.jar 解决方案Eclipse 编译时报错&#xff1a; Access restriction:The type NEW is not accessible due to restriction on required library C:/Java/jdk1.6.0_10/jre/lib/rt.jar 解决…

Matlab找到不知道的函数名

如果你知道和你要找到类似的函数的函数名&#xff0c;可以在help中查看你知道的函数名&#xff0c;然后再最下面会列出几个类似的函数&#xff0c;也许这里就有你要找的函数

asp.net core 自定义401和异常显示内容(JWT认证、Cookie Base认证失败显示内容)

asp.net core 2.0使用JWT认证园子里已经有挺多帖子了&#xff0c;但开发中发现认证未授权情况下返回的401状态码是没有任何信息的&#xff0c;业务中可能有需要返回一串错误的Json信息。在这里我分享一个自定义错误页面内容信息的方法&#xff0c;使用该扩展方法还可以捕获异常…

关于ANTLR的通用库的需求:使用反射来构建元模型

我是一名语言工程师&#xff1a;我使用多种工具来定义和处理语言。 在其他工具中&#xff0c;我使用ANTLR&#xff1a;它简单&#xff0c;灵活&#xff0c;可以围绕它进行构建。 但是&#xff0c;我发现自己围绕ANTLR为不同的项目重建了类似的工具。 我看到两个问题&#xff1…

创建和应用Java包文件的两种方式(转)

创建和应用Java包文件的两种方式(转) 《Java编程艺术》章节选登。作者&#xff1a;高永强 清华大学出版社 &#xff08;即将出版&#xff09; 12.1 包——package 。。。 12.1.1 包命名规范 为了确保包文件名称的唯一性&#xff0c;Java对应用软件开发者&#xff0c…

MATLAB double、str、cell间的类型转换

注&#xff1a;转换的前提是数组的格式符合目标数组的要求&#xff0c;能够转换。不然会失败str2numstr2doublesrt2matstrvcatstrcatcellstr字符数组转为元胞数组&#xff08;没有strcell&#xff09;int2str整数转换为字符串数组&#xff0c;非整数将四舍五入num2str非整数数组…

【动态规划】数字三角形2

【题目描述】 数字三角形要求走到最后mod 100最大 【输入格式】 第1行n&#xff0c;表示n行 <25第2到n1行为每个的权值 【输出格式】 mod 100最大值 【分析】 设置状态f[i][j][k]表示(i,j)各自内是否mod 100可以为k。 状态转移方程&#xff1a; f[i][j][k]f[i1][j][ka[i1][j…

面向 NLP 任务的大模型 Prompt 设计

很久之前&#xff0c;我们介绍到&#xff0c;prompt是影响下游任务的关键所在&#xff0c;当我们在应用chatgpt进行nlp任务落地时&#xff0c;如何选择合适的prompt&#xff0c;对于SFT以及推理环节尤为重要。 不过&#xff0c;硬想不是办法&#xff0c;我们可以充分参考开源的…

MATLAB安装第三方工具箱

1.1 如果是Matlab安装光盘上的工具箱&#xff0c;重新执行安装程序&#xff0c;选中即可&#xff1b;1.2 如果是单独下载的工具箱&#xff0c;一般情况下仅需要把新的工具箱解压到某个目录。2 在matlab的file下面的set path把它加上&#xff0c;或者用genpath(yourlocation/you…