git语言包安装_Git分布式版本管理系统快速入门指南

d0322a5e485f94fee805e69c41165cda.png

为什么要使用版本管理系统

无论有没有使用过专业化工具,每个人都或多或少地有版本管理的需求。我们在做论文、写报告或者设计方案时,因为难以避免的不断改动,总会形成很多个不同的版本,我们可能会用“某某设计方案_20180910”这样加上日期后缀的方法来管理不同日期的版本,但更多的时候会出现“某某设计方案最终版”、“最最终版”、“绝对不改版”这样无奈而又混乱的文档版本。而经过一段时间后,可能连作者本人也不知道所保存的每个版本都有什么特点和必要。如果要比较各个版本的详细区别,就变得更加困难了。

版本管理系统正是用来科学地管理文档版本的软件系统,上述每一个问题都可以在版本管理系统中得到简洁而高效的解决。虽然目前版本管理系统更多地用在变动频繁的软件项目中,但这只是因为程序员往往更接近这些软件工具。对普通的电脑工作者来说,如果能正确使用版本管理系统,同样可以为日常工作带来巨大的效率提升。

版本管理系统在发展过程中经历了本地化版本管理、集中式版本管理以及分布式版本管理三个阶段1。本地化版本管理软件仅能在本地计算机上使用,集中式版本管理系统具有中心化的仓库(以CVS,Subversion为代表),缺点是如果服务器故障则可能无法使用。以Git为代表的分布式版本管理最初是Linus Torvalds为了维护Linux系统内核而设计编写的,分布式版本管理系统,保证了在每个用户计算机上都能保存完整的文档仓库,并能随时与服务器版本比较与合并,是目前应用最广泛的版本管理系统。

分布式版本管理系统的典型特点和功能包括:

  • 正确的版本存储。不需要分别命名就能简单记录和区分不同的版本。可以可视化比较不同文档版本之间的差异和修改。可以随时查看每个不同的历史版本。
  • 版本恢复。可以随时恢复到任何一个版本继续之前的工作。可以选择性的合并不同的版本。
  • 团队协同。同一项目下的团队成员可以共同进行文档的修改和维护。所有修改的版本都可以得到有效的记录和保存。
  • 文档备份。由于版本管理系统仅保存每个版本中修改掉的部分,因此可以以很小的代价保存更多的历史版本,而不需要大量重复同一文件。如果具有版本管理系统的服务器,还可以将文档备份在服务器上进行备份。

Git软件的下载与安装

Git官网可以下载到各种操作系统下的Git客户端(在MacOS和部分Linux发行版中,Git都已经预先安装可以直接使用)。安装Git客户端后可以通过命令行开始使用Git,如果不习惯命令行操作,Git也提供了不同版本的GUI(图形化)客户端。需要注意的是,图形化客户端仅仅是Git客户端的图形化接口,需要先安装Git客户端后才可以安装使用。使用较广泛的Git图形化客户端包括TortoiseGit(推荐)、SourceTree和Github出品的Github Desktop。如果安装的是官方Git for Windows客户端,也可以同时安装一个图形化界面,但就使用而言,还是TortoiseGit之类软件更为方便。一般来说,在安装时使用默认设置即可,但Git在提交修改时默认启用VI编辑器,如果完全不熟悉也可以改为VS Code或者其他编辑器(需要先安装VS Code)。

所有基于终端的客户端操作命令,都可以通过图形化界面可视化完成,一般来说,终端命令行使用方便高效,而对新手与非专业人士来说,图形化界面更友好与直观。推荐的TortoiseGit有比较完整的中文语言包,下载安装后可以使用更友好的中文界面(需要注意的是,中文版本命令的名称也进行了翻译,因此在使用时需要理解和一一对应)。

Git命令基础

设置全局信息

Git客户端/GUI界面安装完成后,可以通过以下命令设置自己的资料,以在后续的版本提交中保持一个全局化身份(如果要使用远程仓库,则可能需要设置相应仓库的登录信息)。

$ git config 

新建仓库

在版本管理系统中,使用仓库(Repository)来表示一个版本管理的项目。一般来说,我们会以三种方式来开始一个版本管理系统。

  • 空仓库。新建一个空文件夹/目录,在文件夹下运行命令行或者可视化客户端,执行 git init来初始化一个git仓库,这样会在当前目录下新建一个名为.git的隐藏文件(在非windows系统下,前缀为.的文件夹自动隐藏)。在该文件夹新建或者拷贝进来的文件都是本仓库的文件。
  • 已有文档项目纳入版本管理系统。在文件夹下已经有文档管理的文件,同样可以在文件夹下运行 git init命令来初始化git仓库,把文件夹纳入版本管理系统。(有些系统下,要求git仓库只能从空文件夹开始,这种情况下就需要先按照上一种情况新建一个空仓库,再把文件整个拷贝进去。)
  • 下载一个远程文档仓库来开始工作。如果远程已经有现成的文档库(其他人创建的,或者自己的远程文件备份,或者公开的软件仓库),可以使用git clone命令将远程仓库复制到本地开始工作。一般来说,远程仓库中会有用于复制的链接,直接复制即可,可以采用ssh或者http的方式进行下载。在图形化界面下,如果下载需要用户权限,系统会提醒输入用户名与密码。

上述开始在本地电脑上新建一个软件仓库的命令包括:

git init #新建一个本地空仓库
git clone  #clone一个现有的远程仓库
git clone https://github.com/facebook/create-react-app.git #例如要复制create-react-app项目到本地来开始一个项目

在很多情况下,我们的文件夹下可能包括一些不需要添加到版本管理中的文件,比如自动生成的.bak备份文件,或者项目编译生成的build目录等等(这些文件都是可以根据源文件重新生成的,不需要版本管理系统进行管理),这种情况下,我们需要在仓库主目录下新建一个.gitignore文件,列出不需要纳入版本管理系统的文件和文件类型。在github等平台都有针对不同类型项目的.gitignore文件模版,可以快速使用。比如,如果使用VS code编辑器,就需要至少将以下内容添加到.gitignore文件中。

.vscode/*
!.vscode/settings.json
!.vscode/tasks.json
!.vscode/launch.json
!.vscode/extensions.json

修改与提交

默认情况下,仓库文件夹下的文件并没有纳入到版本管理系统中,需要我们通过git add 命令进行添加。但逐一添加显然过于麻烦,因此,在正确添加了.gitignore文件以后,我们可以通过 git add . 命令(注意add后的 . 是命令的一部分)把所有其他文件都纳入到版本管理系统之下,在后续添加了文件之后也都可以使用 git add . 快速添加。添加到版本管理系统之下的所有文件的变更都会记录在git系统中。

在进行完阶段性工作之后,可以提交并进行保存。使用 git commit命令提交变更(只是在本地仓库提交),也可以加上 -am 后缀提交所有变更并添加注释。例如:

git add . #添加除了.gitignore中列出的文件之外所有文件到版本管理系统
git commit -am '第一次提交' #提交所有变更并添加说明
git status #查看当前改动的详细情况
git rm abc.html #从版本控制中移除某个文件(更推荐将要移除的文件列入.gitignore)
git rm -r --cached xxx.xxx #仅删除远程仓库对应的文件,适用于文件误上传到远程仓库服务器的情况
git log #查看历史提交记录
git push #将改动上传到远方服务器

分支的切换

如果将整个版本管理系统理解成一个沿着时间修改不断生长的树。那么分支就可以形象化的理解为每一个枝叶。默认的版本管理系统是在名为master的主分支上进行的。要阶段性的保存不同的版本,可以通过新建分支来实现。

git branch #查看版本分支情况
git branch -b firstbranc #新建一个名为firstbrac的分支
git checkout firstbranc #切换到girstbranc分支进行工作
git branch --set-upstream [branch] [remote-branch] #将本地的分支提交到服务器
git merge firstbranc #合并firstbranc分支,如果切换回master分支,并将firstbranc分支合并进去,则可以使用 git checkout master, git merge firstbranc

工作的保存与撤销

经常提交commit的好处在于,可以保存提交点以随时恢复。

git stash #暂时保存工作/先不提交
git checkout filename #恢复名为filename的文件为暂存区的文件
git checkout #恢复所有文件为暂存区的版本
git reset --hard #恢复工作区和暂存区所有文件为上次commit的版本
git stash pop #移除暂存区文件

远程仓库同步

git fetch [remote] # 下载远程仓库的所有变动
git remote -v # 显示所有远程仓库
git remote add [shortname] [url] #新建远程仓库
git pull [remote] [branch]# 取回远程仓库的变化,并与本地分支合并
git push [remote] [branch] #上传本地仓库到远程
git push #如果是同一分支,可以简化为git push直接推送到远程

常用的远程仓库网站

  • github全球最大的git仓库网站,可以免费创建公开仓库,私有仓库要付费,国内访问速度慢
  • bitbucket另一个著名的git仓库网站,可以免费创建公开与私有仓库,国内访问速度慢
  • gitlabgitlab提供了一套可以安装在私有服务器上的基于git的软件仓库系统,同时也提供软件仓库服务
  • 阿里云code仓库阿里的软件仓库网站,访问速度快,可以免费创建公开和私有的仓库,推荐使用
  • 码云国内知名度较高的软件仓库,可以免费创建公开和私有仓库
  • weizy个人仓库网站基于gitlab搭建的个人公开软件仓库网站

常用git学习资源网站

  • 阮一峰git原理入门 比较全面完整
  • 阮一峰常用git命令清单 命令速查表,可以保存备查
  • 廖雪峰的git教程比较简明,有视频版本
  • git-tower教程非常系统化和全面
  1. https://git-scm.com/book/zh/v1/%E8%B5%B7%E6%AD%A5-%E5%85%B3%E4%BA%8E%E7%89%88%E6%9C%AC%E6%8E%A7%E5%88%B6↩︎

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

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

相关文章

(十)、java内部类与内部类的闭包和回调

一、成员内部类 1.可以把一个内部类看做是一个成员。成员内部类可以无条件访问外部类的所有成员属性和成员方法。 class OutterClass {//外部类private int in 0;static int inn4;public OutterClass(int in) {this.in in;}class InnerClass { //内部类public void outpu…

vb.net中滚动条一直显示没有数据时也显示_Android Studio 中 System Trace 的新增功能...

Android Studio 中 System Trace 的新增功能在 Android Studio 4.0 中,我们已经对 CPU Profiler 的 UI 做了大量调整来提供更加直观的工作流记录,而在 Android Studio 4.1 中,我们基于开发者们的反馈对此功能进行了持续改进,并且新…

第一节 Memcached分布式缓存入门

关于Memcached的博文太多了,以下是个人学习的收集整理。 本节讨论问题: 简单介绍与应用下载安装注意事项简单测试Memcached分布式原理 一、介绍与应用 在常规的WEB开发下,基本都会利用到缓存用以降低对数据库的压力,提高访问速度。有时候缓存…

tomcat 拦截指定url_一口气说出 过滤器 和 拦截器 6个区别,别再傻傻分不清了

点击“ 程序员内点事 ”关注,选择“ 设置星标 ”坚持学习,好文每日送达!周末有个小伙伴加我微信,向我请教了一个问题:老哥,「过滤器 (Filter) 和 拦截器 (Interceptor) 有啥区别啊?」 听到题目我…

Java 多线程练习---创建两个子线程,每个线程交替输出“你好--来自线程***”...

|--需求说明 |--实现思路 1、创建一个类,实现Runnable,在这个类里面重写run()方法,在run()方法里面写一个20的for循环 2、创建一个类,实例化上面的类,用这个类的对象创建线程 |--代码内容 1 package cn.thread;2 3 /**…

js保留两位小数的函数_使用率低但功能强大的6个Excel函数公式应用技巧解读!...

在Excel函数公式中,有部分函数的使用率是比较低的,但是其功能也是非常强大的。一、Median函数。功能:返回一组数的中值。中值就是一组数的中间数值,如果参数包含的数值是偶数,Median函数将返回位于中间两个值的平均值。…

.net复习之七

表A: 表B: 1. SELECT * FROM A JOIN B ON A.Id B.Id 將顯示 9 條數據。 Inner join(等值连接)只返回两个表中联结字段相等的行 2. SELECT * FROM A LEFT JOIN B ON A.Id B.Id 將顯示 12 條數據…

原生js实现tab栏切换效果

我是歌谣 放弃很容易 但是坚持一定很酷 微信公众号关注小歌谣一起学习前后端知识 运行效果 首先我们来看一下原生js实现的效果 下面就开始直接上代码了 index.html <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"&…

线程八大核心+java并发核心知识体系精讲_Java从业者如果不懂这些,面试80%都会挂在这些核心知识上面...

JVM无论什么级别的Java从业者&#xff0c;JVM都是进阶时必须迈过的坎。不管是工作还是面试中&#xff0c;JVM都是必考题。如果不懂JVM的话&#xff0c;薪酬会非常吃亏(近70%的面试者挂在JVM上了)详细介绍了JVM有关于线程、内存模型、JVM运行时内存、垃圾回收与算法、Java中四种…

Ajax技术简单入门

随着Google公司推出的Gmail服务后,越来越多的人开始关注Ajax技术了,所谓Ajax(Asynchronous JavaScript and XML缩写)技术,就是指运用JavaScript和XML在不用刷新Web页的情况下与Web服务器通信的技术&#xff0e;一般来说&#xff0c;使用Ajax技术主要有两个原因&#xff1a;一是…

Alt Gr or Shift

This is interesting. The keyboard here is different from what we always use in China. Characters and layout are different. Hans gave me the password to logon the system. There s a “” character in it. With Chinese keyboard, I will use “Shift 2″ to gener…

window.addeventlistener 不能调用方法_Java入门第十四课:如何定义”方法“

第十四课&#xff0c;学习定义方法。一个对象包含三种最常见的成员&#xff1a;构造器、Field和方法。Field用于定义状态数据&#xff0c;而方法是行为特征的抽象。那么什么是方法呢&#xff1f;在Java中&#xff0c;方法就是用来完成解决某件事情或实现某个功能的办法。方法实…

深度测试与alpha混合(3)

alpha源混合系数通常设置为D3DBLEND_SRCALPHA&#xff0c;即当前绘制像素的alpha值。目标混合系数设置为D3DBLEND_INVSRCALPHA&#xff0c;即1减去当前绘制像素的alpha值。那么当前绘制像素的alpha值又是如何得到的呢&#xff1f;如果没有使用材质和纹理&#xff0c;当前绘制像…

Effulgent的《深入理解Direct3D9》整理版(转)

深入理解Direct3D9 深入理解D3D9对图形程序员来说意义重大&#xff0c;我把以前的一些学习笔记都汇总起来&#xff0c;希望对朋友们有些所帮助&#xff0c;因为是零散笔记&#xff0c;思路很杂&#xff0c;还请包涵。 其实只要你能完美理解D3DLOCK、D3DUSAGE、D3DPOOL、LOST DE…

我的世界光影mod怎么用_玩转光影!闪光灯、反光板怎么用才高级?

光线对于拍摄的重要性不言而喻&#xff0c;有人甚至说&#xff1a;掌握了光线&#xff0c;你就掌握了摄影。今天我们就来谈谈摄影中和“光”关系最密切的两个器材&#xff1a;闪光灯、反光板。闪光灯的种类之前也跟大家介绍过闪光灯的种类&#xff0c;如果只说较为常用的&#…

正弦定理和余弦定理_那些让你加快解题速度的高中数学公式-26 利用三正弦、三余弦定理快速解题...

作者&#xff1a;本质教育 韦卓甫简单的题目做得又快又对对于任何考试&#xff08;例如高考&#xff09;&#xff0c;本质教育有一条重要的原则&#xff1a;那些考试拿高分的&#xff0c;一定是简单的题目做得又快又对&#xff0c;这样他们才有时间去思考难题。因此&#xff0c…

Centos7静态ip设置(亲测有效)

本文引自&#xff1a;https://www.cnblogs.com/toov5/p/10340395.html&#xff0c;特此鸣谢 最近想测试消息中间件等各类web集群相关技术&#xff0c;这就需要解决linux主机之间互联互通的若干问题&#xff0c;特此折腾 友情提示&#xff1a;在ubuntu19上用vmware15 搭建centos…

认识Web.config文件

Web.config文件是一个XML文本文件&#xff0c;它用来储存 ASP.NET Web 应用程序的配置信息&#xff08;如最常用的设置ASP.NET Web 应用程序的身份验证方式&#xff09;&#xff0c;它可以出现在应用程序的每一个目录中。当你通过VB.NET新建一个Web应用程序后&#xff0c;默认情…

labview在2048中添加时间滚动条_Chrome优化深色模式:滚动条颜色也能跟随变化 使上网更具沉浸感...

为了让谷歌浏览器的深色模式(Dark Mode)变得更加一致&#xff0c;谷歌在 Chrome 的滚动条中添加了对深色模式的支持。虽然我们很多人在上网过程中可能不太关注滚动条&#xff0c;但这毕竟是个可喜的变化&#xff0c;从而让 Chrome 的深色模式更具沉浸感。滚动条并不跟随网页浏览…

rational rose 逆向工程

这一节主要介绍用户如何使用Rose的逆向工程生成UML模型&#xff0c;并用来进行C代码的结构分析。 Rational Rose可以支持标准C和Visual C的模型到代码的转换以及逆向工程。下面将详细地说明这两种C project的逆向工程的步骤和具体操作。 2.1 ANSI C&#xff08;标准C&#xff0…