欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Git全流程总结

程序员文章站 2022-07-06 17:30:24
...

转载自http://www.jianshu.com/p/61b7fbbc4853

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来查看所有分支)