rebase(变基)
它能让git提交记录简洁
多个记录整合成一个记录
git rebase -i HEAD~3
从最新记录开始依次找3条记录进行合并
git rebase -i 版本号
从该版本号开始一直合并到最新记录
在做记录合并时,建议不要和已push到仓库的记录
beyond compare
在git的使用过程中,我们在合并时经常会遇到冲突,此时我们就需要手动的一行一行改,属实有点麻烦,beyond compare这个软件就可以快速解决冲突
- 安装beyond compare
- 在git中配置
git config --local merge.tool bc3
git config --local mergetool.path 'D:\Beyond Compare 4'
git config --local mergetool.keepBackup false
- 应用beyond compare 解决冲突
git mergetool
命令总结
- 添加远程连接(别名)
git remote add origin 地址
- 推送代码
git push origin dev
- 下载代码
git clone 地址
- 拉取代码
git pull origin dev
等价于
git fetch origin dev
git merge origin/dev
- 保持代码提交整洁(变基)
git rebase 分支
- 记录图形展示
git log --graph --pretty=format:"%h &s"
多人协同开发gitflow工作流思路
如何多人协同开发?
比如你们公司老板交代了一个项目,让你负责,这个项目已经上线了,需要你们更进一步的更新维护,同时和你一起开发的有另外两个同事小刘和小张。比如这个项目就是娱乐系统,前面我们说了master分支上面就是上线的版本,比如你是这个项目的负责人,你在dev分支上面进行开发,为了协同开发,小刘和小张也分别建立自己的分支进行开发,他们开发完成后会合并到dev上面去,在合并这一过程中可以进行代码的review,你经过检查没问题后,同意合并到dev分支上去,然后会有一个release分支,这个分支进行测试,也就是预上线阶段,在这个阶段进行测试,发现bug则修改bug,最后合并到master分支。
第一步:
创建项目仓库,按照之前讲的那样创建仓库也可以,我们还需要做一件事:邀请开发的成员
1、
2、
点击邀请用户,可以通过三种方式邀请即可:
但是在公司里我们一般不这样做,公司里面我们首先是创建一个组织,然后再在组织里面创建仓库:
1、
2、
3、新建仓库
新建好仓库后,在本地进行开发,开发完成后并提交代码:
git init
touch app.py//新建文件进行开发
git add .
git commit -m '娱乐系统基本功能'
git remote add origin https://gitee.com/boys_2/amusement.git//和远端建立联系
git push -u origin "master"//push到远端
此时远端就有了master分支的V1版本
一般公司会基于tag来进行版本管理,tag:
git tag -a v1 -m "第一版"
表示在git本地创建了一个tag,tag打在了本次提交上去:
这个tag现在只是在本地,我们接在推送到远端:
git push origin --tags
这样项目的各个版本就很清晰了。
由此创建项目并打上标签就完成了。
接下来呢你给小刘和小张要分配工作了,他们也需要干活了,让小刘做斗地主功能,小张完成麻将的功能,首先你需要创建dev分支,这是你自己开发的分支,小刘和小张都需要从这个dev分支拉取代码
git checkout -b dev
创建并切换到dev分支
邀请组织成员:
1、
2、
将成员邀请进来后,比如你邀请了小张,你需要给发送项目的链接:
此时小张拿到这个链接后可以将代码克隆下来进行开发:
git clone https://gitee.com/boys_2/amusement.git
cd amusement
git checkout dev//切换到dev分支,基于它创建自己的分支进行开发
git checkout -b xiaozhang//创建自己的开发分支
touch 斗地主.py//开发
三板斧:
git add .
git commit -m "斗地主功能开发"
git push origin xiaozhang//push到远端小张分支
代码review以及merge,发起PR:
xiaozhang分支合并到dev,填写这次合并的一些信息,一般写明自己这次版本所更新的功能,发起PR,我们看到还有代码review,即上图中的审查。
此时你这边就会收到PR请求,你就需要对小张的代码进行review:
你可以对小张的代码进行评论审查,通过后点击审查通过即可。完成后合并分支即可:
现在远端是最新的了,但是你本地还是之前的功能,并没有小张开发的斗地主功能,所以你可以再把dev分支的代码拉下来更新一下版本:
git pull origin dev
测试:
git checkout -b release
创建release分支进行测试,测试完成后如果有问题则在release分支上进行修改,没问题后可以合并到master分支,合并到master分支后,更新本地master分支
git pull origin master
此时就形成了第二版,我们可以再打一个第二版的标签:
git tag -a v2 -m "第二版,上线斗地主功能"
git push origin --tags
此时就可以看到每一个版本了:
测试一般是怎么做的呢?测试一般有测试团队做或者项目负责人进行。
在代码的merge时可能会产生冲突,产生冲突后可以手动修改解决冲突即可。
如何给开源软件贡献代码?
- fork源代码
将别人源代码拷贝到我自己的远程仓库。
- 在自己仓库进行修改代码
可以clone到本地修改bug
- 给源代码的作者提交修复bug的申请,其实就是pull request。
git的三个配置文件
- 项目配置文件:当前项目/.git/config
git config --local user.name 'Coderzzzz'
git config --local user.email 'Coder@xx.com'
只在当前项目有效
- 全局配置文件:~/.gitconfig
git config --global user.name 'Coderzzzz'
git config --global user.email 'Coder@xx.com'
全局有效,本地项目全部都有效
- 系统配置文件:/etc/.gitconfig
git config --system user.name 'Coderzzzz'
git config --system user.email 'Coder@xx.com'
注意:需要有root权限
git免密码登录
- URL中体现
原来的地址:https://gitee.com/boys_2/amusement.git
修改的地址:https://用户名:密码@gitee.com/boys_2/amusement.git
git remote add origin https://用户名:密码@gitee.com/boys_2/amusement.git
此时再去push就不需要密码了
- SSH实现
1.在本地生成公钥和私钥(默认放在~/.ssh,文件名id_rsa.pub为公钥,id_rsa为私钥):ssh-keygen
2.拷贝公钥的内容,并设置到gitee中
3.在git本地中配置ssh地址:
git remote add origin git@gitee.com:boys_2/amusement.git
- git自动管理凭证
window+r,输入control 打开控制面板
然后点用户账号凭证管理器、window凭证,可以在下面看到普通凭据:
删除了后下次push就需要密码了。
gitignore忽略文件
让git不再管理当前目录下的某些文件
当我们创建两个文件查看当前目录状态时git会自动检测到工作区的文件变化:
要是我们不想要git管理这些文件呢?
可以写一个.gitignore文件,比如不想管理a.h文件,就在.gitignore文件写a.h文件:
可以看到a.h文件已经不在管理了。如果不想管理b.h以及.gitignore文件,就在.gitignore文件里编写如下:
可以看到已经忽略:
.gitignore文件的编写规则:
a.h//不管理a.h
*.h//不管理所有以.h结尾的文件
files/ //不管理files目录下的文件
!b.h //不忽略b.h
*.py[c|a|d] //不管理以.pyc .pya .pyd为结尾的文件
更多可以参考:Gitee 搜索 - Gitee.com
.gitignore文件功能可以让一些不能上传的文件忽略掉。
github做任务管理
- issues
文档以及任务管理
- wiki
项目的文档说明
可以在issues上面提一些问题,这些问题可以是bug也可以是一些项目上的疑问,可以指定人回答以及给定问题的标签,而wiki是对项目的一些介绍,比如项目是干什么的,怎么运行,项目有哪几部分。