Git分布式版本管理系统快速入门指南
为什么要使用版本管理系统
版本管理系统在发展过程中经历了本地化版本管理、集中式版本管理以及分布式版本管理三个阶段1。本地化版本管理软件仅能在本地计算机上使用,集中式版本管理系统具有中心化的仓库(以CVS,Subversion为代表),缺点是如果服务器故障则可能无法使用。以Git为代表的分布式版本管理最初是Linus Torvalds为了维护Linux系统内核而设计编写的,分布式版本管理系统,保证了在每个用户计算机上都能保存完整的文档仓库,并能随时与服务器版本比较与合并,是目前应用最广泛的版本管理系统。
分布式版本管理系统的典型特点和功能包括:
Git软件的下载与安装
所有基于终端的客户端操作命令,都可以通过图形化界面可视化完成,一般来说,终端命令行使用方便高效,而对新手与非专业人士来说,图形化界面更友好与直观。推荐的TortoiseGit有比较完整的中文语言包,下载安装后可以使用更友好的中文界面(需要注意的是,中文版本命令的名称也进行了翻译,因此在使用时需要理解和一一对应)。
Git命令基础
设置全局信息
Git客户端/GUI界面安装完成后,可以通过以下命令设置自己的资料,以在后续的版本提交中保持一个全局化身份(如果要使用远程仓库,则可能需要设置相应仓库的登录信息)。
$ git config --global user.name "John Doe"$ git config --global user.email "john@doe.org"
新建仓库
在版本管理系统中,使用仓库(Repository)来表示一个版本管理的项目。一般来说,我们会以三种方式来开始一个版本管理系统。
上述开始在本地电脑上新建一个软件仓库的命令包括:
git init #新建一个本地空仓库git clone #clone一个现有的远程仓库git clone https://github.com/facebook/create-react-app.git #例如要复制create-react-app项目到本地来开始一个项目
.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直接推送到远程
常用的远程仓库 站
常用git学习资源 站
- 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??
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!