使用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
3$ git config --global user.name aaa
$ git config --global user.email aaa@aaa.com
- 设置本地仓库
这一步克隆分支到本地,并且切换到dev分支,随后建立自己的分支。git checkout的-b参数表示新建分支,无参数表示切换到现有分支。1
2
3
4
5$ cd [项目路径]
$ git clone https://github.com/FlappyPig/pigcrypto
$ git checkout dev
$ git checkout -b [MEMBER_NAME] # [MEMBER_NAME] 是自己的分支名称
在这一步进行代码的开发,阶段性开发完成后将代码添加到本地仓库,注意提交注释写的尽量具体,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 | $ git push |
1 | $ git add . #添加修改后的文件到本地仓库 |
删除自己的分支(可选)
自己的本地分支的存在不会影响远程分支。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] # 查看文件的每一部分最后由谁改动