1. git 区域
2. GIT基本命令
初始化仓库
git init
添加到暂存区
git add .
提交
git commit -m "注释"
查看日志
git log ,git-log
git log --graph --pretty=format:"%h %s"
3. git 版本回退
作用:退回到某个版本
命令:git reset --hard commitId
commitId 可以使用git-log 或git log 命令查看
如何查看已经删除的记录
git reflog
这个指令可以看到已经删除的提交记录。
4. git 分支操作
查看本地分支
git branch
创建本地分支
git branch 分支名称
切换分支
git checkout 分支名
创建并切换分支
git checkout -b 分支名
切换到一个不存在的分支,创建并切换
合并分支
一个分支上的提交可以合并到另外的一个分支
git merge 分支名称
删除分支
git branch -d b1 删除分支时需要做各种检查
git branch -D b1 不做检查,强制删除
解决冲突
当两个分支上对文件的修改可能辉存在冲突,例如 同时修改了同一个文件的同一行,这是就需要手工解决中途。
步骤如下:
1.处理文件中冲突的地方。
2.将解决完冲突的文件加入暂存区。
3.提交到仓库(commit)
5.变基操作
git rebase 的作用是使提交记录变得简单的操作,对提交记录进行整理。
5.1 合并多次提交为一次提交
一般的作用是,比如我连续提交了3次代码,实际上,在给同事看的时候,他们可能只关注你提交了什么功能,而不关心你提交的过程。
如下图
我希望把最后的三次提交合并成一个提交,可以执行如下命令
git rebase -i HEAD~3
我们 将v6 v7 的命令修改成 s
意思是将v6 和v7 合并到之前的提交,这里操作和linux的vi 操作一致,比如使用 i 进行编辑,退出时使用wq命令。
然后进入编写注释的界面,这里我们可以将注解重新进行编辑,并使用 wq命令保存。
合并后在使用git log 查看
注意 rebase 执行需要在提交到远程仓库之前进行,不要和已push 的记录进行rebase。
5.2 分支开发时将分支合并成一条线的提交方式
在开发过程中比如
1.在主分支上提交了 master2
2.创建dev分支,并切换到dev
3.在分支dev 提交了dev2
4.切换回master ,并执行merge 命令
那么这个时候我们使用 git log graph 查看
这里我们可以看到 提交过程分叉了。
这个时候我们可以使用git rebase 对这个过程整理成一条线。
具体操作过程如下:
1.当前为master分支
2.创建并切换到 dev 分支
3.在分支dev 创建 dev文件并提交
4.切换到master分支,创建master 文件并提交
5.切换到dev 分支,并执行 命令
git rebase master
6.切换到 master 分支,并执行
git merge dev
7.使用命令查看提交情况
git log --graph
通过以上操作,我们成功将分支切换成一条线性的分支,而不是上图类似的分支。
6. 开发中分支使用的原则和流程
使用分支意味者你可以把你的工作冲开发的主线上分离开来进行bug修改,开发新的功能,以免影响主线。
开发中的原则和流程
- master 生产分支
线上分支,主分支中小规模项目作为线上运行的应用对应的分支。
- develop 开发分支
从master创建的分支,一般作为开发部门的主要开发分支,如果没有其他并行开发不同期上线要求,都可以在此版本进行开发,阶段开发完成后,需要合并到master 分支,准备上线。
- feature/xxx 分支
从develop 创建的分支,一般时同期并行开发,但不同期上线时创建的分支,分支上的研发任务完成后合并到develop分支。
- hotfix/xxx 分支
从master派生的分支,一般作为线上bug修复使用,修复完成后,需要合并到 master,test,develop 分支
- 还有其他的分支,例如 test分支用于测试,pre 分支 预上线分支等。
7. 远程仓库操作
7.1 添加远程仓库
命令 :git remote add 远端名称 仓库路径
git remote add origin 账户:仓库地址
7.2 查看远程仓库
git remote
7.3 推送到远程仓库
命令
git push [-f] [...set-upstream] [远端名称[本地分钟] [原地分支名] 操作
git push origin master:master 如果分支都相同 可以写成 git push orgin master
--set-upstream 作用是推送到远端的同时并且建立起和远端分支的关联关系。
git push --set-upstream origin master
这样就将 本地的master 和远端的master 分支建立了关系。
下次push的时候,只需要输入 git push 命令即可。
7.4 从远程仓库克隆
git clone http://****.git
8.给开源项目贡献代码
1.fork源代码
将别人的源码拷贝到我自己的远程仓库
2.在自己的仓库修改代码,并提交。
3.给源代码作者提交修复bug 的申请(pull request)