🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# Scratch3.0——克隆代码的正确姿势 [![](https://upload.jianshu.io/users/upload_avatars/1467184/95ae0015-2f6d-4456-8725-ff2d69f92ac1.jpg?imageMogr2/auto-orient/strip|imageView2/1/w/96/h/96)](https://www.jianshu.com/u/939ffcc5f39a) [帷幄庸者](https://www.jianshu.com/u/939ffcc5f39a) 2019.01.22 23:57:55字数 477阅读 2,837 [https://blog.csdn.net/weiwoyonzhe/article/details/86603450](https://blog.csdn.net/weiwoyonzhe/article/details/86603450) > 对Scratch3.0进行二次开发,首先要在github上fock[官方代码](https://github.com/LLK/scratch-gui.git),但是在自己开发的同时又要跟进官方的代码就要在git做如下配置。 #### 步骤: 1、配置上游项目地址。即将你 fork 的项目的地址给配置到自己的项目上。使用以下命令来配置。 ~~~csharp ➜ git remote add upstream https://github.com/LLK/scratch-gui.git ~~~ 然后可以查看一下配置状况,很好,上游项目的地址已经被加进来了。 ~~~cpp ➜ git remote -v origin https://github.com/***/scratch-gui.git (fetch) origin https://github.com/***/scratch-gui.git (push) upstream https://github.com/LLK/scratch-gui.git (fetch) upstream https://github.com/LLK/scratch-gui.git (push) ~~~ 2、获取上游(官方)项目更新。使用 fetch 命令更新,fetch 后会被存储在一个本地分支 upstream/master 上。如果长时间没有更新,可能会非常慢,一定要在网络环境好的情况下更新或从GitHub下载代码。 ~~~undefined ➜ git fetch upstream ~~~ 3、合并到本地分支。切换到 master 分支,合并 upstream/master 分支。 ~~~undefined ➜ git merge upstream/master ~~~ 如果提示: fatal: refusing to merge unrelated histories,这是因为本地和远端已经是两个独立的版本库,git认为是不相干的版本库。 ~~~undefined ➜ git merge upstream/master --allow-unrelated-histories ~~~ 4、合并冲突。因为是在原先代码的基础上二次开发,冲突不可避免,而最费时间的也是这里解决冲突这一步。 5、提交推送。根据自己情况提交推送自己项目的代码。 ~~~undefined ➜ git push origin master ~~~ 由于项目已经配置了上游项目的地址,所以如果 fork 的项目再次更新,重复步骤 2、3、4即可。 #### 留几个问题供大家思考交流: 1. 冲突在所难免,在开发中注意什么可以更快更高效的解决冲突合并代码? 2. 如果官方代码重构了某部分模块,你的代码严重依赖该模块该如何处理?