这是我参与「第四届青训营 」笔记创作活动的第3天
Git
最近在做青训营的大作业,需要跟队友利用git多人协作,这是我学习git使用方法的总结。
git命令大全
什么是git?
Git是分布式版本控制系统
版本控制是什么?
版本控制是一种记录文件内容变化,查阅特定版本修订情况的系统。
版本控制的功能?
1.记录文件修改的历史记录
2.查看历史版本
3.方便版本切换
分布式
本地上有本地库,保存的是整个完整的项目(包含历史),本地可以进行版本控制。 远程库,进行所有的版本控制。
远程库挂掉之后,还可以在本地进行版本控制,只是不能向远程库提交
git的工作区、暂存区、本地仓库和远程仓库
workspace :工作区;Index :暂存区;Repository :本地仓库;Remote :远程仓库;
git常用命令
命令学习建议去网站learngitbranching.js.org/?locale=zh_…学习,形象生动~
当刚加入到一个的项目组,我们怎样获取项目组github的代码以及新建分支,push分支,merge分支呢?
## 新建一个放项目的文件夹,在文件夹下打开命令行窗口git clone项目
git clone 仓库的地址
## 先创建自己的分支,然后本地开发,本地开发完后,先将改动推送到自己所在的的远程分支bra
git checkout -b bra
## ...coding
## 进行代码的编写及修改,修改完后:add到暂存区,commit到本地仓库,push到运程仓库自己的分支
git add .
git commit -m "修改xxx"
git push origin bra
## 然后自己的分支合并到master:首先本地仓库切换到master主分支,将最新的远程分支master拉到本地,保持最新
git checkout master
git pull origin master ## 这一步的目的在于如果在进行本分支修改时有其他分支进行了分支合并,那我们就必须去拉取最新的
## 本地分支bra合并到本地的master分支上
git merge bra
## 将本地的master分支推送到远程的master分支上
git push origin master
## 扫尾,切换回本地的仓库分支bra,以及拉取最新的master
git checkout bra
git pull origin master
比较正规的流程详解:
主分支master只用来分布重大版本,日常开发应该在另一条分支上完成。我们把开发用的分支,叫做dev。 一般在工作中使用较多的为分支模型为生产/开发模型,即master/dev类型分支。团队开发成员一般是对于dev分支进行提交。
模拟多人协作开发:(默认分支已设置为dev)
现在有两个开发者A和B,两个开发者都要在自己的分支上进行独立的开发。
1.创建分支
开发者A在接到开发任务的时候,先将项目clone到自己本地 在gitbash执行命令:git clone [项目git地址] 此时应该处于默认分支:dev分支 开发者A应该在自己的分支进行开发,所以先创建属于自己的分支: git checkout -b A(创建并切换到A分支) ,这条命令其实是下面两条命令的缩写
git branch A #创建A分支
git checkout A #切换到A分支
这个时候,开发者A 可以在自己的A分支上开始工作!
开发者B操作同上
2.分支合并
两个开发者分别在自己的分支上进行开发。当然,两个开发者完成任务的时间一般是不一样的。 现在开发者A最先完成任务,他需要将自己的A分支合并到dev分支。(如果要把自己的分支推到仓库使用git push origin A)由于在开发者A之前没有人向dev分支push内容、合并分支,所以开发者A执行以下命令即可:
git checkout dev #切换到dev分支
git merge A #将A分支合并到dev分支
这样,开发者A就成功将自己的分支合并到dev分支了。
但是:分支合并是在本地进行的此时git线上仓库其实是没有合并的,所以记得将在本地合并好的dev推送到远程
git push origin dev
这样,远程仓库的dev就已经是合并好的了 现在开发者B完成开发了(如果要把自己的分支推到仓库使用git push origin B),需要将B分支合并到dev分支。 同上,先切换到dev分支:git checkout dev 但是,此时的dev分支已经和远程的dev分支不同步了,所以需要先将本地的dev分支与远程仓库的dev分支进行同步
git pull origin dev
然后再进行合并git merge B
可以看到命令行提示:Automatic merge failed; fix conflicts and then commit the result
这个时候,就需要解决合并冲突了:
使用命令:
git status
可以看到需要解决冲突的文件,可以选择保留一方更改或者保留双方更改,这个过程需要手动
解决完冲突后提交更改