git clone 多个_Git分布式版本管理系统快速入门指南

c4172cee67eceddc2771f044870206ca.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↩︎
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值