美文网首页程序员收藏
使用git开发项目流程总结

使用git开发项目流程总结

作者: 魔焰之 | 来源:发表于2016-07-31 17:14 被阅读3339次

    首先要明白四个空间:远程仓库,本地仓库,本地缓存区,本地工作区;

    远程仓库:该仓库是一个集中的数据仓库,正常情况下,所有参与开发的人员的代码最后都会提交到该仓库的自己的分支上,再由具有合并权限的人员来合并所有分支;

    本地仓库:一般来说,本地仓库是由开发人员通过clone复制远程仓库中的某个分支的数据到本地而产生的,但git不是集中式的版本控制,而是分布式的版本控制,他们的区别就是,分布式版本控制中每一个仓库都能具有远程仓库的作用,而集中式的版本控制中远程仓库是不能被其他参与开发的人备份的;

    本地缓存:在本地修改数据后(一般是指我们在编辑器中修改某个文件),git监测到该数据与本地数据仓库的数据不一致,会提示将该修改增加(add)到缓存区,缓存区中的文件可以用来与本地仓库中的文件进行比较(difftool),这个用处目前感觉主要用于当我们修改很多文件时,最后不记得自己修改了那些文件,如果没有缓存区,我们直接提交的话,很容易会导致很多疏忽。我们在编辑器中修改了文件后(本地工作区),本地缓存中不包含我们的修改的,只有当我们把本次的修改add到缓存区的时候,缓存区中才有本次的修改,这表明我们的每一次修改都必须手动add到本地缓存中才能在使用commit命令时将其添加到本地仓库。

    本地工作区:也就是我们的编辑器的空间;

    现在开始使用git的开发流程了:

    1.初始化本地仓库,打开终端,输入以下内容:

       git init

     该命令会在本地的当前目录创建一个空的本地仓库,也就是第二步中从远程仓库克隆的项目被放置的地方;

    1.克隆远程仓库项目到本地:

      git clone +远程仓库的地址(例子如下)

     git clone git://github.com/schacon/ticgit.git

    执行完该命令后,本地仓库中应具有远程仓库中默认的master分支中的数据;

    2.进入该项目的目录,查看分支状态;

      cd 目录名

      git status(查看当前状态,这个状态包括以下数据:当前在那个分支上,当前缓存区数据状态(change to commit),修改了数据但是没有add到缓存区的文件状态(change but not update),当前仓库中还没被追踪的文件(Untracked file))

    可以在终端中看到目前在哪一个分支上(默认是master),一般我们不应该在master分支上开发,应该在自己的分支上开发,所以需要创建自己的分支,两种方式:

    2.1 git checkout -b 分支名,创建当前分支的备份分支,并切换到该分支;

    2.2 git branch 分支名 创建分支

          git checkout 分支名 切换分支

    3.使用studio打开该项目,打开后可能会发现该项目不能运行或者编译不通过,这需要你找到其原因,目前我遇到的都是一些gradle版本不符合或者该项目中的引用资源路径不对之类的,稍作修改即可;

    4.在studio中修改某个文件,然后在终端中执行git status,这个时候你会发现在对应的change to update状态下表明该文件被修改了(modified),但是缓存中还没有该文件,目前该文件的修改只限于工作空间(编辑器),此时如果要提交该修改,需要先将该文件add到缓存区,执行

    git add 文件名

    此时可以再执行git status 来查看当前本地的状态,你会发现在change to commit状态下存在该文件了,此时你可以查看缓存区的该文件和本地仓库中该文件的差异:

    git difftool --cached 文件名

    上述命令表示,对比缓存区和本地仓库中该文件的差异,注意的是,不是对比工作空间中文件;该命令后面不加文件名时,表示对比所有缓存区的文件;此时如果在对比工具中修改了文件内容,仅仅是修改了工作空间的文件,如果要将该修改提交,则还要将该文件add到缓存区;

    确定修改好了之后,就可以提交了:

    git commit 

    该命令会将缓存区中的文件修改提交到本地仓库,执行该命令后会让我们输入本次提交的相关说明;

    这样我们的修改就被提交到本地仓库中,可以执行git log命令来查看我们的提交记录,其中commit号是我们回退时候需要的参数;

    如果此时我们发现自己忘记提交一些文件,又不想再创建一个commit,可以撤销上一次的提交,

    git commit -amend

    然后再add遗漏的文件到缓存区,再提交;

    确认所有修改都被提交之后,便可以将本地仓库的文件提交到远程仓库中,即:

    git push origin 仓库名字(可以通过git branch -a来查看所有分支)

    一些命令总结:

    checkout:1.切换分支==》git checkout 分支名

                     2.回撤修改;

                        git checkout filename 撤销filename文件在工作空间中的修改,

                        git checkout .       注意到 checkout 后面有个”.”,就是代表所有文件的意思把所有文件都撤回刚才在工作区上的改动。

                        git checkout cimmit号 filename 撤销目标文件的修改,使文件暂存区和工作区都回到某一次提交时的状态;

    reset :撤销操作,但是不同的参数会导致不同的效果,常用如下:

                        git reset  HEAD filename 回退某个文件到前一次的提交的状态,仅仅是暂存区的改变,工作空间不会修改,其中HEAD可以理解为上一次提交的commit号,filename不加的时候表示回退所有文件;

                        git reset –soft     意味着工作区不会收到影响,暂存区回到了那个节点的commit时的状态。也就是说你在提交后所做的修改不会被没收;

                       git reset –hard    这个用法和刚才的类似,就是多了个–hard,意味着你工作区的代码也会回档,和暂存区保持一致,都回到了那个节点的commit时的状态。

    git学习资料: 

    git基础知识

    回退操作相关

    checkout命令

    相关文章

      网友评论

        本文标题:使用git开发项目流程总结

        本文链接:https://www.haomeiwen.com/subject/umatsttx.html