Git-分布式版本控制系统

一、版本控制

      版本控制系统是记录若干文件内容变化,以便将来查阅修订特定版本或还原部分文件的系统

      分为:集中式版本控制系统(svn)简称cvcs   都有一个单一集中管理服务器,保存所有文件修订版本,开发人员通过客户端连到这台服务器,取出文件或提交更新。会出现中央服务器单点故障!

               分布式版本控制系统(Git)简称dvcs   没有”中央服务器“,每个人的电脑上都是一个完整的版本库。安全性更高!但分布式版本控制系统中会有一台充当”中央服务器“的电脑,方便交换修改。

                                                                    有极其强大的分支管理工具! 

  二、Git帮助与初始化

       $git help              显示git的帮助信息

       $git help-a           加上-a参数可以显示所有帮助信息

       $git help add        加上具体命令可查看详细帮助内容

       $git config --list   显示git的配置信息

       $git config --globol user.name"sunyi"                            设置Git的用户名

   $git config --globol user.email"963807896@qq.com"       设置Git的E-mail

                              --globol  表示设置的范围(系统,项目,全局)

   $git config --unset--globol user.name                           修改前需要--unset参数清空需要修改的设置

     $git init   使用init命令可以初始化一个仓库(repository),同时在当前目录下生成一个用来跟踪管理版本库的的.git文件夹*避免使用含有中文的路径。

三、 创建版本库

   在git的目录下添加一个有内容的文本文件

   $git status            查看当前仓库工作区的状态

   $git add               将新文件添加到仓库

   $git commit          将新文件提交到仓库      $git commit -m”提交本次的说明,方便找到改动记录“  Git完整的添加文件需要先add再commit两步。

四、本地的版本控制

1> 添加修改

   给文本文件添加一行文本      先查看状态,提示被修改过,但还没有被准备提交的的修改

   $git diff                查看具体修改内容        查看完修改后,经过add和commit将修改添加到版本库

2>   版本回退  

    $git log                查看commit的记录       记录中有提交的作者,email和提交时间以及commit时输入的-m参数后的文本。其中commit后边的数字表示commit id(版本号)是一个SHA1计算出来的非常大的数字,用十六进制表示。

     $git reset--hard HEAD^         退回到上一个版本     首先要知道当前版本  用HEAD表示当前版本 上一个版本就是HEAD^, 上上一个就是HEAD^^  ,往上100个可以写HEAD~100

   $git reset--hard ID 4da437f 放弃回退            必须知道恢复版本的ID号 ,因为git log只存储最后一次版本之前的版本记录  所以需要git reflog来找回之前的版本号 

   $git reflog                            用来记录用户输入的每一次命令。找回版本号并且撤销回退。    *版本号写前几位即可,Git自动查找

3> 工作区和暂存区

   工作区即当前目录下除了.get文件夹下的其他目录  

   版本库即.get文件夹下的东西,其中最重要的就是stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针HEAD。

   将文件添加到Git版本库的时候分两步执行,首先git add把文件添加进去,实际上就是把文件添加到暂存区,然后git commit提交更改,实际上就是把暂存区所有内容提交到当前分支

4>   撤销修改

   撤销修改分为三种情况:仅修改了工作区的内容,未添加到暂存区(没有经过add和commit的修改);此时工作区提示有一个修改;$git checkout 文件名,可以还原工作区修改。

                                        修改了工作区的内容并添加了暂存区,但未提交修改(经过add但未commit的修改);$git reset HEAD 文件名,可以还原暂存区的修改。再使用checkout命令还原工作区。

              修改被添加到暂存区并且提交了修改(经过add和commit的修改);此时只需要退回版本即可,$git reset--hard HEAD^ 。

5>   删除文件

   在Git中删除也属于修改操作,在工作区手动删除文件之后,工作区和版本库的文件就一致了,Git会发现用户删除了文件,并且告诉用户哪些文件被删除了

   删除文件有两种方法:在工作区删除文件,然后使用git rm 并且commit      执行git rm之前的删除文件操作仅仅修改工作区,并不会将删除操作添加到暂存区,可直接用checkout命令撤销操作即可

                                 在Git中直接使用 git rm 命令删除文件并 commit      在commit之前,删除操作会同时操作工作区和暂存区,在撤销时先使用reset命令,然后再使用checkout命令撤销操作。

五、 远程仓库

1>    生成SSH Key

  $ssh-keygen-t rsa     使用RSA 方式加上时间参数来生成SSH秘钥,使用默认设置即可。

             成功后可以在用户主目录下找到.ssh目录,里面有id_rsa和 id_rsa.pub两个文件,其中id_rsa是私钥,不能泄露!!!id_rsa.pub是公钥文件,可任意发送。

   将生成的id_rsa.pub文件发送给服务器管理员,管理员在服务器将公钥注册以后,此计算机即可通过服务器验证,进而下载上传文件。请保证id_rsa文件安全!!!

2>   远程下载项目代码

   使用git init 创建一个新仓库,然后git  pull可以远程下载项目代码,(或者直接使用git clone命令拷贝版本库至本地)。

   首次使用Git连接服务器时,会有一个警告,ssh连接第一次验证服务器的key,输入yes回车即可。这个警告只出现一次。

3>   推送代码至服务器

   git push      将当前分支推送至服务器。

六、分支管理

1>   创建与合并分支

  分支管理命令     git  branch                   查看当前分支

           git  branch 名称            创建分支

           git checkout 名称          切换分支

             git checkout -b 名称     创建加切换分支,git会在当前分支前加*

           git merge 名称      合并某分支到当前分支

           git branch -d 名称     删除分支

 2>   解决冲突

   git status  告诉我们冲突文件

   git用<<<<<<<,=======,>>>>>>>标记不同分支的内容,修改解决冲突后保存,再提交即可成功合并。

   用带参数的git log 可以看见分支合并情况

   git log --graph --pretty=oneline --abbrev -commmit

   git stash    把当前工作区”储藏起来“,等以后恢复现场后继续工作,使用之后,当前工作区状态是干净的

 3>   bug分支

   git stash apply    恢复工作区现场,不删除stash内容

   git stash drop     手动删除stash内容

   git  stash pop      恢复工作区现场,同时删除stash内容

七、自定义配置

1>   标签

   git tag 名称         添加新标签

   git tag                查看所有标签

   git show 名称      查看对应标签的详细提交信息

2>   忽略文件

   git ignore

 

转载于:https://www.cnblogs.com/tutuai/p/8372448.html

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

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

相关文章

ES6-6 - this指向、箭头函数基本形式、rest运算符

一 chrome断点调试 观察函数调用栈 // 25min var x 1; function foo(x, y function () { x 2; console.log(2) }) {var x 3;y();console.log(x) } foo() console.log(x) // 2 3 1var x 1; function foo(x, y function () { x 2; console.log(x) }) {x 3;y();console.…

【二分答案】Problem C:木材加工

Problem C:木材加工 Time Limit:1000MS Memory Limit:65536K Total Submit:48 Accepted:20 Description 【问题描述】 木材厂有一些原木&#xff0c;现在想把这些木头切割成一些长度相同的小段木头&#xff08;木头有可能有剩余&#xff09;&#xff0c;需要得到的小段的数目是…

vue --- vue.js实战基础篇课后练习

练习1:在输入框聚焦时,增加对键盘上下键按键的支持,相当于加1和减1 练习2:增加一个控制步伐的prop-step,比如设置为10,点击加号按钮,一次增加10 思路: // 考虑到子模板的复用性,即在父模板中复用如下: <input-number v-model"value" :max"10" :min&qu…

js打字效果

//文字依次出来效果 $.fn.autotype function() {var $text $(this);// console.log(this, this);var str $text.html(); //返回被选 元素的内容var index 0;var x $text.html();//$text.html()和$(this).html()有区别var timer setInterval(function() {//substr(index, …

ES6-7 - 箭头函数的实质、箭头函数的使用场景

箭头函数返回对象 // 这种情况要要用(),否则会将对象的{}解释为块 const fn (a, b) > ({a:1, b:2})箭头函数的特点 this指向由外层函数的作用域来决定&#xff0c;它本身没有this&#xff0c;不能通过call、apply、bind改变不能作为构造函数使用不可以使用arguments对象&…

mybatis比hibernate处理速度快的原因

mybatis:是面向结果集的。当要展示的页面需要几个字段时&#xff0c;springmvc会提供这几个字段并将其拼接成结果集&#xff0c;在转化为相应的对象。 hibernate&#xff1a;是面向对象的。要展示的页面需要某些字段时&#xff0c;会将所有字段都查出来&#xff0c;在转化为相应…

zabbix 从入门到精通

https://www.cnblogs.com/clsn/p/7885990.html 转载于:https://www.cnblogs.com/learningJAVA/p/8376589.html

javasript --- 一个日期规范(x秒前,x分前...)

Time函数(通俗易懂,自己根据实际需求修改吧- -) // time.js var Time {// 获取当前时间戳getUnix: function () {var date new Date();return date.getTime();},// 获取今天0点0分0秒的时间戳getTodayUnix: function () {var date new Date();date.setHours(0);date.setMin…

ES6-8 - 函数名/对象拓展、描述符、getter/setter

函数名 有两种特殊情况&#xff1a;bind方法创造的函数&#xff0c;name属性返回bound加上原函数的名字&#xff1b;Function构造函数创造的函数&#xff0c;name属性返回anonymous。 bind函数名 // 以bound开头 function foo() { } const fnName foo.bind().name console.lo…

javascript --- 再识闭包

看下面一个例子: function zipCode(code, location) {let _code code;let _location location || ;return {code: function () {return _code;},location: function() {return _location;}} }再上述封闭的函数中,code的匿名函数根据作用域链可以访问到外面的_code变量. con…

iframe.contentWindow介绍

一、在使用iframe的页面&#xff0c;要操作这个iframe里面的DOM元素可以用&#xff1a; contentWindow、contentDocument(测试的时候chrome浏览器&#xff0c;要在服务器环境下) 1、先获取iframe里面的window对象&#xff0c;再通过这个对象&#xff0c;获取到里面的DOM元素 例…

ES6-9 对象密封4种方式、assign、取值函数的拷贝

一 对象密封 1 Object.preventExtensions 禁止对象拓展&#xff0c;仍可删除 严格模式下报错 const origin {a: 1 } const fixed Object.preventExtensions(origin) console.log(origin fixed) // true console.log(Object.isExtensible(origin)) // false 不可拓展 orig…

MySQL入门命令

我主要是在维护OpenStack云平台的时候会涉及MySQL数据库的操作&#xff0c;这里就跟大家分享一下常用的简单命令&#xff0c;也为自己做个小练习。 1.登录MySQL数据库 mysql -h localhost -u root -p 123456 其中&#xff0c;-h&#xff1a;mysql服务器的IP地址或主机名&#x…

【模板】分块

题意简述 已知一个数列&#xff0c;你需要进行下面两种操作&#xff1a; 1.将某区间每一个数加上x 2.求出某区间每一个数的和 题解思路 对于一个长度为n的序列&#xff0c;我们可以讲其中的元素分为\( \sqrt{n} \) 个连续的子序列&#xff0c;每块的长度自然就为\( \sqrt{n} \)…

javascript --- 使用ajax与服务器进行通信

Ajax: (Asynchronous JavaScript and XML,异步JavaScript与XML技术)是一种有效利用JavaScript和DOM的操作. 与传统HTTP请求的区别: Ajax允许只更新页面的一部分,因此减少了响应中传输的数据量 Ajax的API: Ajax与服务器进行通信,可以使用JavaScript中原生的XMLHttpRequest对象…

ES6-10 super、4种遍历方式、原型、symbol遍历

由于现代 JavaScript 引擎优化属性访问所带来的特性的关系&#xff0c;更改对象的 [[Prototype]]即__proto__在各个浏览器和 JavaScript 引擎上都是一个很慢的操作。 一 Object原型方法 1 Object.setPrototypeOf(obj, proto) 用该方法而不是直接修改__proto__返回值是设置好原…

IntelliJ IDEA使用

1&#xff1a;下载 ideaIU-2017.2.exe&#xff0c;JetbrainsCrack-2.6.2.jar(补丁) 2&#xff1a;安装ideaIU-2017.2.exe&#xff0c;将补丁放在D:\java\intellij\IntelliJ IDEA 2017.2\bin 目录下 3&#xff1a;在安装的idea下面的bin目录下面有2个文件 &#xff1a; 一个是id…

js中如何删除json对象的某一个选项

我有一个这样一个对象&#xff0c;getData, 但是我不想要每一项的id&#xff0c;那怎么去删除呢(使用delete)? getData.map((item) >{delete item["id"];});console.log(getData);转载于:https://www.cnblogs.com/mmykdbc/p/8386407.html

ES6-11 Symbol、iterator、forOf、typeArray

…剩余运算符 const obj1 {a: 1,b: 2 } const obj2 {a: 100,b: 2,c: 300 } const obj {...obj1,...obj2 } console.log(obj) // 和Object.assign(obj, obj1, obj2)结果相同[Symbol.hasInstance] Symbol构造函数上的属性&#xff0c;默认调用了方法 iterator迭代器 对数…

node --- 游走在客户端和服务器间的http

本篇文章,讲述了一个很简单的上传图片(/start)到本地服务器,然后路由跳转到/upload. 写这个程序的目的是为了帮助理解HTTP的一些基本概念及node对于http api的实现以及程序的设计模式. IP: 计算机之间的通信 TCP: 应用程序之间的通信 HTTP: 基于TCP实现的应用层协议,设计之初是…