git 管理
git有啥东西?不就是add、commit、push 、 pull 、reset 、log 、reflog 、status 、tag、 branch 、checkout….
常用也就是这些了,但是,还有很多其他的操作,这些操作是更加面向团队和管理的首先,pr,还有分支管理和分支保护,管理员,fork,ssh
git ssh
ssh就是建立一个安全的下载链接罢了,但是如果是下载私有仓库,那还是得进
行github登录才能实现下载,不是说有ssh就可以直接下载了
git fork
我们经常可以看到github上面好多代码贡献的,比如linux,这个提交量
非常大,而且fork数量也非常多。
fork不等于clone,更不等于zip下载。
zip下载就是下载一个版本或者当前版本,常见就是Tag进行版本管理,这些是没有.git。
clone和ssh就是把整个开发的过程的git都下载过来,这个,就是直接把开源库复制一份到自己的分布式主机上面。此时是无法通过push提交到原仓库的。那为什么gitee那些又可以拉人,又可以下载和提交呢,那是因为所有clone都是默认为不可push,只有管理员去修改我的访问和提交权限,我才能提交和修改。
fork 这个就是不一样了,是自己生成一个仓库副本,就是在github上面直接生成这个这个仓库,此时,就要切换为一个新分支,然后,正常提交,然后push给新分支,然后选择pr就可以提交到原仓库中,然后等待原仓库管理员去解决冲突和选择、审批等。如下操作:
1.首先打开一个项目,然后直接fork,点击创造fork。这样就会在我的账户下面生成一个fork副本。
2.此时可以使用git clone 或者ssh来下载。
3.git remote add upstream https://github.com/original-author/project-name.git
4.新建分支 git checkout -b feature-or-bugfix
5.修改和提交代码
6.推送分支 git push -u origin feature-or-bugfix
7.创建Pull Request (PR) 跟提交分支一样的操作是
8.等待原仓库管理人进行处理
如果不想要fork,就进入到fork仓库,点击settings中的delete仓库,对,就是删库就好了。
git branch保护
为什么要分支保护啊?我们在看gitee一些项目,可以看到main分支上面有一把锁,这个时候就是管理员把main分支进行上锁,就是变为可读模式,此时就是无法修改。使用的是Lock branch这个一般是短期无需修改才会选择这个状态,这个是管理员随时可以修改得状态。
一般常用就是Require a pull request before merging,就是只能通过pr合并来实现main分支的更新,不允许直接push提交,这样就可以让整个结构和流程更加简洁和方便管理,防止胡乱提交导致版本错误等诸多问题。
此时还可以Require approvals,这个就是添加审核人,审核人必须发言和评价才能合并。
使用Do not allow bypassing the above settings就是管理员和用户一视同仁,这个不建议勾选,因为管理员就是为了快速方便管理分支和仓库,只要管理员认真点,仔细点就行了,只要分支保护做的好,都是ok的
git 令牌 & git 小组
git 令牌
这个就是把我的私有仓库通过令牌的方式,给与他人使用权限。这个就是在个人然后点击settings,然后点击Developer settings,
然后选择token,两个都可以new和classic,无脑选择new就行了,然后就是权限限制读写操作,然后就仓库限制,时间天数限制。然后点击确认就是生成令牌。使用git 令牌下载只能使用https下载不能使用ssh下载。下载的时候,直接git clone 仓库,然后写上我的名字,然后就输入这个生成的token就可以下载,分享啦。
git 小组
就是拉人到自己的仓库,一起创作进入仓库,点击settings,然后点击collaborators,添加用户的邮箱,然后进入即可,然后就是小组啦自然还有那些企业版啥的,我目前还没用过,我感觉大差不差应该都是这个原理,企业版就是,可以把所有人拉到一个开发组,然后方便拉近仓库和管理。
git 小组踢人
就是在collaborators中,点击删除就好了
git 小组主动退出
点击右上角的头像,点击setting,点击仓库,就可以看到共同工作的仓库,里面有leave按键,然后确认就好了
git总结
git一句话分布式管理,这个本质就是为了团队,大家一起工作,小公司可能用不到git,但是为了项目管理,为了整体发展git的重要性非常高。git只是自己一个人用,那么就是失去了分布式的意义了,这不就是变成了一个同步了吗?没用的!!!