git初识

Posted 小赵小赵福星高照~

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了git初识相关的知识,希望对你有一定的参考价值。

rebase(变基)

它能让git提交记录简洁

多个记录整合成一个记录

git rebase -i HEAD~3

从最新记录开始依次找3条记录进行合并

git rebase -i 版本号

从该版本号开始一直合并到最新记录

在做记录合并时,建议不要和已push到仓库的记录

beyond compare

在git的使用过程中,我们在合并时经常会遇到冲突,此时我们就需要手动的一行一行改,属实有点麻烦,beyond compare这个软件就可以快速解决冲突

  1. 安装beyond compare
  2. 在git中配置
git config --local merge.tool bc3
git config --local mergetool.path 'D:\\Beyond Compare 4'
git config --local mergetool.keepBackup false
  1. 应用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时可能会产生冲突,产生冲突后可以手动修改解决冲突即可。

如何给开源软件贡献代码?

  1. fork源代码

将别人源代码拷贝到我自己的远程仓库。

  1. 在自己仓库进行修改代码

可以clone到本地修改bug

  1. 给源代码的作者提交修复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是对项目的一些介绍,比如项目是干什么的,怎么运行,项目有哪几部分。

以上是关于git初识的主要内容,如果未能解决你的问题,请参考以下文章

初识SVN与GIT代码上传

初识Git

Git版本控制工具初识

Git时间--初识版本控制工具

git-stash初识小记

Git从入门到精通01-初识Git