Git全流程总结
四个空间
首先要明白四个空间:远程仓库,本地仓库,本地缓存区,本地工作区;
远程仓库:该仓库是一个集中的数据仓库,正常情况下,所有参与开发的人员的代码最后都会提交到该仓库的自己的分支上,再由具有合并权限的人员来合并所有分支;
本地仓库:一般来说,本地仓库是由开发人员通过clone复制远程仓库中的某个分支的数据到本地而产生的,但git不是集中式的版本控制,而是分布式的版本控制,他们的区别就是,分布式版本控制中每一个仓库都能具有远程仓库的作用,而集中式的版本控制中远程仓库是不能被其他参与开发的人备份的;
本地缓存:在本地修改数据后(一般是指我们在编辑器中修改某个文件),git监测到该数据与本地数据仓库的数据不一致,会提示将该修改增加(add)到缓存区,缓存区中的文件可以用来与本地仓库中的文件进行比较(difftool),这个用处目前感觉主要用于当我们修改很多文件时,最后不记得自己修改了那些文件,如果没有缓存区,我们直接提交的话,很容易会导致很多疏忽。我们在编辑器中修改了文件后(本地工作区),本地缓存中不包含我们的修改的,只有当我们把本次的修改add到缓存区的时候,缓存区中才有本次的修改,这表明我们的每一次修改都必须手动add到本地缓存中才能在使用commit命令时将其添加到本地仓库。
本地工作区:也就是我们的编辑器的空间;
开发流程
从远程仓库拿到项目
1.初始化本地仓库,打开终端,输入以下内容: git init该命令会在本地的当前目录创建一个空的本地仓库,也就是第二步中从远程仓库克隆的项目被放置的地方;
2.克隆远程仓库项目到本地:
git clone +远程仓库的地址(例子如下)
git clone git://github.com/schacon/ticgit.git
执行完该命令后,本地仓库中应具有远程仓库中默认的master分支中的数据;
创建分支并且修改数据
3.进入该项目的目录,查看分支状态;
cd 目录名
git status(查看当前状态,这个状态包括以下数据:当前在那个分支上,当前缓存区数据状态(change to commit),修改了数据但是没有add到缓存区的文件状态(change but not update),当前仓库中还没被追踪的文件(Untracked file))
可以在终端中看到目前在哪一个分支上(默认是master),一般我们不应该在master分支上开发,应该在自己的分支上开发,所以需要创建自己的分支,两种方式:
3.1 git checkout -b 分支名,创建当前分支的备份分支,并切换到该分支;
3.2 git branch 分支名 创建分支
git checkout 分支名 切换分支
4.使用vim打开该项目,打开后可能会发现该项目不能运行或者编译不通过,这需要你找到其原因,目前我遇到的都是一些gradle版本不符合或者该项目中的引用资源路径不对之类的,稍作修改即可;
修改完后add到缓存区
5.在vim中修改某个文件,然后在终端中执行git status,这个时候你会发现在对应的change to update状态下表明该文件被修改了(modified),但是缓存中还没有该文件,目前该文件的修改只限于工作空间(编辑器),此时如果要提交该修改,需要先将该文件add到缓存区,执行
git add 文件名
此时可以再执行git status 来查看当前本地的状态,你会发现在change to commit状态下存在该文件了,此时你可以查看缓存区的该文件和本地仓库中该文件的差异:
git difftool --cached 文件名
上述命令表示,对比缓存区和本地仓库中该文件的差异,注意的是,不是对比工作空间中文件;该命令后面不加文件名时,表示对比所有缓存区的文件;此时如果在对比工具中修改了文件内容,仅仅是修改了工作空间的文件,如果要将该修改提交,则还要将该文件add到缓存区;
确定修改好了之后,commit到本地仓库
6,确定修改好了之后,就可以提交了:
git commit
该命令会将缓存区中的文件修改提交到本地仓库,执行该命令后会让我们输入本次提交的相关说明;
这样我们的修改就被提交到本地仓库中,可以执行git log命令来查看我们的提交记录,其中commit号是我们回退时候需要的参数;
如果此时我们发现自己忘记提交一些文件,又不想再创建一个commit,可以撤销上一次的提交,
git commit -amend
然后再add遗漏的文件到缓存区,再提交;
确认所有修改都提交后,push到远程仓库
确认所有修改都被提交之后,便可以将本地仓库的文件提交到远程仓库中,即:
git push origin 仓库名字(可以通过git branch -a来查看所有分支)
推荐阅读
-
JSP+Servlet制作Java Web登录功能的全流程解析
-
HighCharts图表控件在ASP.NET WebForm中的使用总结(全)
-
git 命令小总结
-
nginx配置默认首页(index.htnl index.htm)全流程(包含遇到问题的解决)
-
【官方说法】百度站长平台对HTTPS站点全流程支持方案文字概述
-
总结分析中小企业网站推广流程
-
总结PHP代码规范、流程规范、git规范
-
马上消费区块链跨业基建,消费贷全流程“上链存证”
-
前端项目git操作命名规范和协作开发流程
-
【转载】申请软件著作权需要哪些材料以及相应流程(注:此文只介绍自己去版权中心免费申请的流程,博主的申请经验总结)