个人邀请协作者
如果想要让其他人加入当前项目,需要邀请他人,需要进入 Settings → Manage access ( 管理访问权限 ) → Invite a collaborator ( 邀请协作者 )
在弹出的对话框内输入对方的 github 账号添加,对方邮箱会收到邮件,邮件内接受邀请
公司邀请协作者
创建项目和版本
公司协作通过创建组织
可选择免费版本,然后填写组织账户名称,联系邮箱,选择此组织属于:个人账户 → Next,下方通过用户名、全名或电子邮箱搜索添加协作者,或者之后再邀请
接下来就可以在组织内创建仓库、添加协作者了
通常公司会基于 tag 来做版本管理来代替一大长串的版本号
- git tag -a v1 -m '第一版' — 为当前版本打上版本标签 v1,并添加版本描述
- git push origin --tags — 把项目推送到 github,刷新就会看到分支旁边的 Tags 有了 tag
同时 release 内也多了以 tag 为版本号的发布版本,可以通过这里下载版本
邀请成员
-
git branch — 确认项目分支
-
git checkout -b dev — 创建并切换到 dev 分支
-
git push origin dev — 把本地的 dev 分支推送到 github
然后在 github 组织仓库,右下角邀请成员到当前组织,发送邮件,确认,添加为组织成员
参与开发
仓库 和 项目 的权限管理
协作者加入项目之后,拿到项目地址
- git clone 项目地址
- git checkout dev — 切换到dev分支
- git checkout -b ddz — 创建并切换到 ddz 分支,这时 ddz 分支的版本就是 dev 分支的代码了
功能开发完成之后,执行命令推送代码到github
- git add .
- git commit -m '开发完成'
- git push origin ddz
项目分支按钮旁边的 New pull request 创建新的拉取请求
选择分支与合并到的分支,选择后下方会出现填写标题,和版本描述,点击创建,消息就会发送给组长进行代码的review
代码review
代码review由组长来做,点击上方 Pull requests 查看拉取请求
下方点击命令行到本地进行代码查看,或者线上查看
检查完代码没有问题后,点击 Merge pull request 合并拉取请求,会需要再次确认
合并代码后 pull request 请求会被关闭,可以点击下方 √ 1 Closed 来查看之前的拉取请求
打开以后下方会有删除分支,看需要自行选择,到这里 review 就做完了
release 测试上线
这一步需要测试团队或者项目头儿来做,需要执行命令
- git branch — 查看版本是否在 dev
- git checkout -b release — 创建并切换到 release 分支,获得 dev 版本代码
- git push origin release — 把 release 提交到版本库
接下来由测试人员获得 github 的 release 版本进行测试,提交bug,没有问题了重复上方 review 步骤,把 release 发送提交请求到 master 版本,合并代码,删除 release 分支,然后到本地版本库取回合并后的版本
- git pull origin master — 获取到最新版本master
- git tag -a v2 -m '第二版' — 给最新版本添加 tag
- git push origin --tags — 把当前 tag 推送到 github
到这里多人协同开发就完成了,这个流程不一定和自己公司流程完全一致
给开源项目贡献代码
如果发现了别人代码的bug,觉得自己可以解决,可以通过 fork 来获取代码修改提交
点击 fork 后会弹出选择把这个项目 fork 到哪儿,点击选择后刷新后查看,这样别人的源代码,就被拷贝到自己的远程仓库下了
在自己的仓库进行修改代码了,获取到自己仓库当前项目的地址
- git clone 项目地址 — 在本地编辑
- git add .
- git commit -m '修改了一个bug'
- git push origin master — 推送到github
这样就完成了对别人代码的bug修复,或者是二次开发
给源代码作者提交修复 bug 的申请 → New pull request
配置文件
-
项目配置文件:项目/.git/config
-
git config --local user.name 'Max'
-
git config --local user.email 'xxxxxxxxx@qq.com'
[core] repositoryformatversion = 0 filemode = false bare = false logallrefupdates = true symlinks = false ignorecase = true [branch "dev"] remote = origin merge = refs/heads/dev [remote "mgd"] url = https://github.com/Maxuan11/mgd.git fetch = +refs/heads/*:refs/remotes/mgd/* -
-
全局配置文件:C:\Users\用户名\ .gitconfig
-
git config --global user.name 'Max'
-
git config --local user.email 'xxxxxxxxx@qq.com'
[user] email = xxxxxxxxx@qq.com name = Max -
-
系统配置文件:/etc/.gitconfig
-
git config --system user.name 'Max'
-
git config --system user.email 'xxxxxxxxx@qq.com'
注意:需要有root权限,且不常用
-
GitHub免密登陆
-
GitHub自动管理凭证
-
URL中体现
原来的地址:https://github.com/Maxuan11/mgd.git 添加账密地址:https://用户名:密码@github.com/Maxuan11/mgd.git git remote add origin https://用户名:密码@github.com/Maxuan11/mgd.git git push origin master -
SSH实现 — 公司工作用这个比较多
弹出右上角有 Use SSH 切换到 SSH,复制下方链接
这个链接是不能直接使用的,需要生成公钥和私钥,在 Git Bash 中输入,然后一路回车
- ssh-keygen
Generating public/private rsa key pair. — 生成公共/私有rsa密钥对 Enter file in which to save the key (C:\Users\abc27/.ssh/id_rsa): — 输入要在其中保存密钥的文件 Created directory 'C:\Users\abc27/.ssh'. — 创建目录 Enter passphrase (empty for no passphrase): — 输入密码 ( 无密码时为空 ) Enter same passphrase again: — 再次输入相同密码 Your identification has been saved in C:\Users\abc27/.ssh/id_rsa. — 您的标识已保存在目录中 Your public key has been saved in C:\Users\abc27/.ssh/id_rsa.pub. — 您的公钥已保存在目录中 The key fingerprint is: — 关键指纹为: SHA256:dYSP7YEBGxxxxxxxxEaEhj7p6/Zk35s8zxxxxxxR6Y xxx@DESKTOP-xxxxUNB The key's randomart image is: +---[RSA 2048]----+ | +B+=+. | | .=++. oo| | . =B.o=o| | . .o.* E.*| | . S . o =o| | . . .| | .. .| | .. . +.o | | .. .+.oo | +----[SHA256]-----+
接下来打开公钥目录的文件为记事本,复制公钥,打开github的设置页面,
侧栏 SSH and GPG keys,点击右上角 New SSH key,
把公钥粘贴在这里并填写标题,点击 Add SSH key 添加公钥,输入密码验证完成添加
完成后 会获得 SSH 秘钥
在本地中配置ssh地址:
- git remote add origin git@github.com:Maxuan11/mgd.git
以后使用 git push origin master 推送代码的时候,git就会收到请求校验本机的 ssh 公钥再接收新版本
git忽略文件
默认情况下git会管理项目目录全部文件,如果有些文件不需要版本管理,可以忽略这些文件
在 git 管理的项目目录,创建 .gitignore 文件,记事本打开,在里面添加要忽略的 文件名、文件夹名 或者 规则
- node_modules/ — 过滤文件夹
- .env.local — 过滤文件
- !/fw/bin/ — 不过滤这个目录
- *.suo — 过滤所有 .suo 文件
- !src/ — 不过滤这个文件夹
- !a.suo — 不过滤这个文件
- !src/do.c — 不过滤这个文件
- *.py[a,b,c] — 过滤 *.pya / *.pyb *.pyc
- .gitignore — 可以添加忽略文件本身
配置语法:
以斜杠/开头表示目录
以星号*通配多个字符
以问号?通配单个字符
以方括号[]包含单个字符的匹配列表
以叹号!表示不忽略(跟踪)匹配到的文件或目录
.gitignore 配置文件是从上到下进行规则匹配的,如果前面的规则匹配的范围更大,后面的规则将不会生效
可以通过 # xxxxxxxx 来添加描述
任务管理相关
- issues — 提交Bug,文档以及任务管理,提交给程序员检查修改
- wiki — 项目描述,项目作用 / 由哪些部分组成 / 如何去运行 / 项目相关的知识点 ... 拿到一个github项目先看wiki描述