您好,欢迎访问三七文档
当前位置:首页 > 机械/制造/汽车 > 综合/其它 > git入门(常用命令操作)
Git-分布式版本控制系统——惠晴雨Page2版本控制VersionControl01Page31.1关于版本控制·版本控制系统是一种记录若干文件内容变化,以便将来查阅修订特定版本或还原部分文件的系统。·在程序开发过程中,采用版本控制系统管理可以将某个文件回溯到之前的状态,甚至将整个项目都回退到过去某个时间点的状态。可以比较文件的变化细节,查出是谁修改了哪个地方,又是谁在何时报告了某个功能缺陷等等。使用版本控制系统通常还意味着,无论对文件做何种修改,也照样可以轻松恢复到原先的样子,但额外增加的工作量却微乎其微。Page41.1关于版本控制常用的版本控制系统分为两类:·集中式版本控制系统(SVN、SCV)——(CentralizedVersionControlSystems,简称CVCS)·分布式版本控制系统(Git)——(DistributedVersionControlSystem,简称DVCS)Page51.2集中式版本控制系统(CVCS)·集中式版本控制系统(CVCS):这类系统,诸如CVS,Subversion以及Perforce等,都有一个单一的集中管理服务器,保存所有文件的修订版本,而协同工作的开发人员都通过客户端连到这台服务器,取出最新的文件或者提交更新。这么做最显而易见的缺点是中央服务器的单点故障。如果宕机一小时,那么在这一小时内,谁都无法提交更新,也就无法协同工作。要是中央服务器的磁盘发生故障,碰巧没做备份,或者备份不够及时,就还是会有丢失数据的风险,最坏的情况是彻底丢失整个项目的所有历史更改记录。Page61.2集中式版本控制系统(CVCS)·集中式版本控制系统(CVCS):Page71.3分布式版本控制系统(DVCS)·分布式版本控制系统(DVCS):分布式版本控制系统没有“中央服务器”,每个人的电脑上都是一个完整的版本库,这样,你工作的时候,就不需要联网了,因为版本库就在你自己的电脑上。既然每个人电脑上都有一个完整的版本库,那多个人如何协作呢?比方你在自己电脑上改了文件A,你的同事也在他的电脑上改了文件A,这时,你们俩之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。和集中式版本控制系统相比,分布式版本控制系统的安全性要高很多,因为每个人电脑里都有完整的版本库,某一个人的电脑坏掉了不会影响整个团队的代码安全。而集中式版本控制系统的中央服务器要是出了问题,后果则严重得多。Page81.3分布式版本控制系统(DVCS)·在实际使用分布式版本控制系统的时候,其实很少在两人之间的电脑上推送版本库的修改。分布式版本控制系统通常也有一台充当“中央服务器”的电脑,但这个服务器的作用仅仅是用来方便“交换”大家的修改,没有它大家也可以同步文件,只是交换修改不方便而已。·Git超越SVN等版本控制系统在于其极其强大的分支管理工具。Page91.3分布式版本控制系统(DVCS)·分布式版本控制系统(DVCS):Page102.1Git的帮助与初始化·Windows环境下Git安装成功后,右键菜单中会出现“GitBash”选项,点击后会弹出Git命令行窗口。Page11Git帮助与初始化GitHelp&Initialize02Page122.1Git的帮助与初始化Page132.1Git的帮助与初始化$githelp·输入如下命令可以显示Git的帮助信息·加上-a参数可以显示所有帮助信息$githelp-a·加上具体命令可以查看详细的帮助内容$githelpaddPage142.1Git的帮助与初始化$gitconfig--list·输入如下命令可以显示Git的配置信息Page152.1Git的帮助与初始化$gitconfig--globaluser.nameYourName$gitconfig--globaluser.emailemail@example.com·输入如下命令可以设置Git的用户名和Email*--global表示设置的范围(系统,全局,项目)·修改前需要先使用--unset参数清空需要修改的设置$gitconfig--unset--globaluser.namePage162.1Git的帮助与初始化$gitinitInitializedemptyGitrepositoryinc:/Users/qingyu/Desktop/gittest/.git/·使用init命令可以初始化一个仓库(repository),同时在当前目录下会生成一个用来跟踪管理版本库的.git文件夹*应当尽量避免使用含有中文的路径Page17创建版本库CreateRepository03Page183.1创建版本库·如图在Git的目录下添加一个有内容的文本文件Page193.1创建版本库·添加完成之后,使用gitstatus命令查看当前仓库工作区的状态$gitstatusPage203.1创建版本库·使用gitstatus命令查看当前仓库工作区的状态$gitstatus#Onbranchmaster//主分支下##Initialcommit##Untrackedfiles://有未跟踪的文件#(usegitaddfile...toincludeinwhatwillbecommitted)##helloworld.cpp//未跟踪的文件名nothingaddedtocommitbutuntrackedfilespresent(usegitaddtotrack)Page213.1创建版本库·使用gitadd命令将新文件添加到仓库$gitaddhelloworld.cpp·此时工作区状态Page223.1创建版本库·使用gitcommit命令将新文件提交到仓库$gitcommit-maddahelloworld.cppfile·此时工作区状态Page233.1创建版本库·gitcommit命令$gitcommit-maddahelloworld.cppfile-m后面输入的是本次提交的说明,可以输入任意内容,当然最好是有意义的,这样就能从历史记录里方便地找到改动记录。Git完整的添加文件需要先add再commit两步。Page24本地版本控制LocalVersionControl04Page254.1添加修改·如图给helloworld.cpp添加一行文本*Git已追踪文件的图标会随着工作区状态的改变而改变Page264.1添加修改·使用gitstatus命令查看当前仓库工作区的状态·提示helloworld.cpp被修改过,但是还没有被准备提交的修改Page274.1添加修改·使用gitdiff命令可以查看具体修改的内容·查看完修改后,经过add和commit就可以将修改添加到版本库Page284.2版本回退·使用gitlog命令可以查看commit的记录记录中有提交的作者,Email,提交时间,以及commit时输入的-m参数后的文本;其中commit后的数字表示commitid(版本号),是一个SHA1计算出来的一个非常大的数字,用十六进制表示。Page294.2版本回退·退回到上一个版本首先,Git必须知道当前版本是哪个版本,在Git中,用HEAD表示当前版本,也就是最新的提交4da437...cd46e2,上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100。现在,我们要把当前版本“addanewmodifiedline”回退到上一个版本“addahelloworld.cpp”,就可以使用gitreset命令。$gitreset--hardHEAD^*--hard参数后文再做详解Page304.2版本回退·此时helloworld.cpp文件成功退回到上一个版本Page314.2版本回退·放弃回退如果想放弃回退,依然可以使用$gitreset--hardID来恢复,但是必须知道要恢复版本的ID号,因为Gitlog只存储最后一次版本之前的版本记录,所以需要gitreflog来找回之前的版本号,gitreflog用来记录用户输入的每一次命令。·此时的log信息$gitreset--hard4da437fPage324.2版本回退·使用gitreflog找回版本号并且撤销回退*--版本号写前几位即可,Git会自动查找。Page334.3工作区和暂存区·工作区即当前目录下除了.git文件夹的其他目录Page344.3工作区和暂存区·版本库即工作区目录下的.git文件夹,Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD。Page354.3工作区和暂存区·将文件添加到Git版本库的时候,是分两步执行的:第一步是用gitadd把文件添加进去,实际上就是把文件修改添加到暂存区;第二步是用gitcommit提交更改,实际上就是把暂存区的所有内容提交到当前分支。*每次修改,如果不add文件到暂存区,则在commit时并不会合并修改到当前分支。Page364.4撤销修改撤销修改分为三种情况:·仅仅修改了工作区内容,未添加到暂存区·修改了工作区内容并且添加到暂存区,但未提交修改·修改被添加到暂存区并且提交了修改Page374.4撤销修改情况一:仅仅修改了工作区内容,未添加到暂存区(没有经过add和commit的修改),如图Page384.4撤销修改·此时工作区状态提示有一个修改$gitcheckout--helloworld.cpp·Git提示使用gitcheckout--file...可以还原修改Page394.4撤销修改·修改被撤销Page404.4撤销修改情况二:修改了工作区内容并且添加到暂存区,但未提交修改(经过add但未commit的修改),如图Page414.4撤销修改·添加修改到暂存区后的工作区状态$gitresetHEADhelloworld.cpp·Git提示使用gitresetHEADfile...可以还原修改Page424.4撤销修改·使用reset命令后的工作区状态此时暂存区的修改被撤销,还原到了情况一的状态,再使用checkout命令即可还原工作区。Page434.4撤销修改情况三:修改被添加到暂存区并且提交了修改(经过add和commit的修改),此时只要退回版本即可$gitreset--hardHEAD^Page444.5删除文件·在Git中删除也属于修改操作,如图添加test.txt文件并且合并到当前分支Page454.5删除文件·在工作区中手动删除test.txt文件后,工作区和版本库的文件就不一致了,Git会发现用户删除了文件,并且告诉用户那些文件被删除掉了(也可以直接使用gitrm命令来删除文件)Page464.5删除文件·确定要删除的话使用gitrm命令并且commit即可·撤销删除使用之前介绍的checkout命令即可Page474.5删除文件删除文件的两种方法:·在工作区中删除文件,然后使用gitrm并且commit在此种情况下,执行gitrm之前的删除文件操作仅仅修改工作区,并不会将删除操作添加到暂存区,可以直接用checkout撤销操作。·在Git中直接使用gitrm命令删除文件并commit此种情况下在commit之前,删除操作会同时操作工作区和暂存区,在撤销时需要先使用reset命令,然后再使用checkout来撤销删除操作。Page48远程仓库RemoteRepository05*基于ToBuCut项目Page49Git是分布式版本控制系统,同一个Git仓库,可以分布到不同的机器上。最初,肯定只有一台机器有一个原始版本库,此后,别的机器可以“克隆”这个原始版本库,而且每台机器的版本库其实都是一样的,并没有主次之分。实际情况往往是这样,找一台电脑充当服务器的角色,每天
本文标题:git入门(常用命令操作)
链接地址:https://www.777doc.com/doc-2874189 .html