使用Git开发使用介绍

介绍

Git是目前世界上最先进的分布式版本控制系统,由Linux创始人Linus在2005年开发,用于对抗商业版的版本控制工具BitKeeper,历史比较有意思,感兴趣的师傅们可以搜索了解一下。

  • 分布式
    首先要说明的是Git是一个分布式版本控制系统,重点在于分布式。也就是说我们从github上每clone下来一个项目,都是clone下一个完整的仓库,里面包含了远程仓库的所有信息。我们在clone的目录下会发现一个.git目录,这个目录就是本地仓库所在的位置,注意不要去修改这个目录,如果删除了这个目录,本地仓库及其相关信息都会消失。
  • 工作区和版本库
    这里的工作区指的是不包括.git目录的所有文件,你可以对工作区进行任意的修改,都不会影响到本地的仓库。
    .git目录是本地仓库,也叫作版本库。版本库可以粗略的分为两个部分——暂存区和分支区,这两个区域是相互独立的。
    我们使用“git add”命令把工作区的文件修改添加到暂存区,使用“git commit”命令把暂存区的文件修改提交到当前分支。如下面两幅图,暂存区译为stage。

    暂存区是Git非常重要的特性,需要仔细理解。
  • 分支
    每次提交,Git都把它们串成一条时间线,这条时间线就是一个分支。当只有一个分支时,这个分支叫主分支,即master分支。
    一开始的时候,master分支是一条线,Git让master指向最新的提交,再用HEAD指向master,就能确定当前分支,以及当前分支的提交点。每次提交,master分支都会向前移动一步,这样,随着你不断提交,master分支的线也越来越长

开发具体命令以及方法

工作流程

  • 克隆项目
  • 签出dev 分支。
  • 在dev分支基础上创建自己的分支 member* 。
  • 在自己的分支上添加文件
  • 在自己的分支上修改文件
  • 合并到dev分支
  • 推送本地dev分支到远程dev分支
    命令
  • 修改自己本地的git的用户名和邮箱设置
    将自己本地的git的用户名和邮箱设置的与github相同,否则你推送之后显示的是别人推送的qwq。
    1
    2
    $ git config --global user.name aaa
    $ git config --global user.email aaa@aaa.com
  • 设置本地仓库
    这一步克隆分支到本地,并且切换到dev分支,随后建立自己的分支。
    1
    2
    3
    4
    $ cd [项目路径] 
    $ git clone https://github.com/FlappyPig/pigcrypto
    $ git checkout dev
    $ git checkout -b [MEMBER_NAME] # [MEMBER_NAME] 是自己的分支名称

git checkout的-b参数表示新建分支,无参数表示切换到现有分支。

  • 更新本地仓库
    在这一步进行代码的开发,阶段性开发完成后将代码添加到本地仓库,注意提交注释写的尽量具体,add和commit的作用在第一节说明了。
    1
    2
    $ git add .  #这里可以列出具体要添加的文件,也可以使用.添加所有新增文件
    $ git commit -m "提交注释"

-m参数后接注释,注释尽量写英文吧233

  • 将自己的分支合并到本地dev分支
    本步是在阶段性开发完成后,将自己的分支合并到本地dev分支,准备推送到远程。自己的分支开发完成后,首先我们需要切换回dev分支,随后将自己分支的修改合并到dev分支。
    1
    2
    $ git checkout dev
    $ git merge --no-ff [MEMBER_NAME] -m "提交注释" # [MEMBER_NAME] 是自己的分支名称

–no-ff参数表示强制生成merge日志。

  • 将本地dev分支推送到远程
    $ git push
    使用该命令之前注意自己的本地分支是否在dev之下(git status查看)。

如果在推送过程中提示与远程dev分支发生冲突,需要先将远程dev分支同步到本地,解决冲突后再推送,平时尽量避免不同开发人员修改同一个文件。
处理代码如下,首先我们使用pull命令同步远程仓库到本地,此时git会提示你处理冲突,处理完成后保存文件。再使用add命令添加处理完的文件,随后commit提交本次冲突处理,然后再去push。

1
2
3
4
$ git push 
# # 遇到错误
$ git pull
# … # 解决冲突

1
2
3
$ git add .  #添加修改后的文件到本地仓库
$ git commit -m "solve conflict:由于XX原因出错,修改XX文件解决问题"
$ git push
  • 删除自己的分支(可选)
    1
    $ git checkout -d [MEMBER_NAME]  # [MEMBER_NAME] 是自己的分支名称

自己的本地分支的存在不会影响远程分支。

  • 常用查询命令
    1
    2
    3
    4
    5
    $ git branch                          # 查看自己所在分支 以及自己所拥有的分支
    $ git log --graph # 查看自己的提交记录
    $ git reflog # 查看自己的操作历史
    $ git status # 查看本地仓库当前的文件状态
    $ git blame [FILE_PATH] # 查看文件的每一部分最后由谁改动