????直接克隆项目和先fork后克隆项目都是使用 Git 进行代码协作的常见方式,它们在不同的场景下有不同的用途和好处。
????直接克隆项目是指先将原始仓库(中央仓库)克隆代码到本地。这种贡献代码方式适用于以下场景:
非fork模式下,中央仓库(远程仓库)、本地仓库三者要保持同步(绿色线条的循环)
克隆中央仓库:
git clone <remote-url> [<local-directory>]
git?clone?-b?<branch-name>?<remote-url
查看本地仓库关联的远程情况:
git remote -v
配置远程仓库名称和连接协议:
配置ssh协议连接(好处是不需要每次输入密码)
- git remote add upstream git@github.com:xxx/xxx.git(添加ssh协议)
删除当前远程仓库使用的这种协议连接
- git remote rm upstream
配置https协议连接
????-?git?remote?add?upstream?https://github.com/xxx/xxx.git(添加https协议)
从这一步到2.6创建PR是一个开发周期
查看分支情况:
git?branch
git?branch?-r
git?branch?-a
新建本地分支并切换:
git checkout -b feat
创建同名远程分支,并且本地分支关联:
git push --set-upstream origin feat
查看本地分支关联的远程分支情况:
git?branch?-vv
接下来你就可以在这个功能分支做开发,敲代码了。这一步是我们每天重复的工作。
先pull一下中央仓库dev分支保证代码最新:
git?pull?upstream dev
开敲......
一天结束了,想要提交代码了,将代码放入暂存区stash:
git stash save "save message"
再次pull 主仓库的代码:
git?pull?upstream?dev
这样是不会产生冲突的,这时我们将暂存区的内容拿出来:
git?stash?pop?(?这一句的作用相当于 git stash apply stash@{0}?+ git stash drop stash@{0})。
查看变更情况:
git diff
提交到暂存区:
git add . #这里的点是全部修改内容,或者自行选中单个文件
查看提交状态,显示有变更的文件:
git status
提交到本地仓库:
git?commit?-m?"feat:add?UserManagement
将本地的分支推送到自己的远端:
git push origin
#?由于建立了feat分支(本地功能分支)与origin/feat关联,可以直接git?push origin
这时如果出现冲突,需要手动解决冲突。
当你觉得这个功能开发完成了,这个周期可以结束了。你就可以进行这一步了,创建PR或MR。这里的PR是中央仓库的feat分支-->中央仓库的dev分支
????????这种模式流程比fork模式简单了一些,只有一个远程的中央仓库,本地仓库直接同中央仓库同步通信,PR是中央仓库两个分支之间的合并。这种模式适合于开发者有向中央仓库直接push的权利,而且合作开发的人数不多的情况下。如果开发人员较多,那么每个人需要在中央仓库新建一个功能分支,这显然就不行了,那就得用fork模式了。
作者简介:
读研期间发表6篇SCI数据挖掘相关论文,现在某研究院从事数据算法相关科研工作,结合自身科研实践经历不定期分享关于Python、机器学习、深度学习、人工智能系列基础知识与应用案例。致力于只做原创,以最简单的方式理解和学习,关注我一起交流成长。需要数据集和源码的小伙伴可以关注底部公众号添加作者微信!