最近阅读golang源码,有时候需要对比不同版本之间的差异,所以fork了一份golang的源码到自己的github仓库,这样可以很方便checkout 到指定的版本,阅读源代码。需要注释源码时,就基于当前的代码切一个分支出来,比如 tt/chore/1.19.5,然后边阅读边写注释。
那如果golang源码仓库有更新,比如 1.20 版本发布了,我该怎么把最新的代码同步到自己的代码仓,方便阅读呢?
先说操作再做解释:
操作 第一步: 添加原始项目(upstream)作为远程仓库 执行 git remote -v
一般的仓库,应该是这种情况
origin git@github.com:taozhang-tt/go.git (fetch) origin git@github.com:taozhang-tt/go.git (push) fork 的仓库,会是这种情况
origin git@github.com:taozhang-tt/go.git (fetch) origin git@github.com:taozhang-tt/go.git (push) upstream git@github.com:golang/go.git (fetch) upstream git@github.com:golang/go.git (push) 如果发现没有 upstream,那就执行如下语句设置一下
git remote add upstream git@github.com:golang/go.git 第二步: 获取原始项目的更改 // 获取最新的更改,但并不会合并到你的当前分支 git fetch upstream 第三步: 将原始项目的更改整合到自己的仓库 // 切换到自己仓库的主分支上 git ck master // 将原始项目的mater分支rebase进来,当然你也可以merge进来 // 这里假设原始项目的主分支是mster git rebase upstream/master 解释 在 git 中,origin 和 upstream 是远程仓库的默认命名。它们表示了远程仓库的引用,但在不同的上下文中具有不同的含义。
文件 完整文件放在这里:github
创建docker-file目录,用于保存容器配置文件
创建子目录 mysql-master-slave 用于保存搭建mysql主从容器的配置文件
mysql-master-slave/master/my.cnf 文件
[mysqld] # 服务器唯一ID server-id=1 # 启用 binlog log-bin=mysql-bin # binlog 设置为 row 模式 binlog_format=ROW # 过滤mysql数据库,不做主从同步 binlog-ignore-db=mysql mysql-master-slave/master/Dockerfile 文件
FROM mysql:5.7 WORKDIR / COPY my.cnf /etc/my.cnf # 允许无密码登录 ENV MYSQL_ALLOW_EMPTY_PASSWORD=yes mysql-master-slave/slave/my.cnf 文件
[mysqld] # 服务器唯一ID server-id=2 # 启用 binlog log-bin=mysql-bin # binlog 设置为 row 模式 binlog_format=ROW # 过滤mysql数据库,不做主从同步 binlog-ignore-db=mysql mysql-master-slave/slave/Dockerfile 文件
FROM mysql:5.7 WORKDIR / COPY my.cnf /etc/my.cnf # 允许无密码登录 ENV MYSQL_ALLOW_EMPTY_PASSWORD=yes mysql-master-slave/docker-compose.
起因 事情的起因就是我爱折腾的毛病又犯了,10.15.7 的系统用的好好的,稳得一批,我就冒出个心思:你难道就不想体验体验12的系统?程序员要拥抱变化啊!那就开整吧
硬件 先说一下我的硬件配置:2018 款 14 寸 macbookbro,带 bar,8+256,过保以后找手艺人升级了一下内存,现在是 16+256。一块500G的移动硬盘做时光机器,大概每个月会做一次备份。
过程 升级系统前先做了一次备份,没错,就是准备体验完再还原回来。
升级的事就不说了,升级完体验确实好,也确实热!平时我的开发环境都是在服务器上的,本机就是一个kitty终端+chrome浏览器,外接机械键盘,没有外接显示屏。经常就是风扇也不怎么转,笔记本也没什么温度。升级完以后,使用习惯没变,但是能明显感觉到键盘区的温度比以前高很多!这我可忍不了,体验两天,准备还原。
时间机器恢复的流程简单说一下:关机、插入时光机器硬盘、按完开机键立马按住 cmd + r、一直到弹出工具窗口、选择从时光机器备份,接着就是按提示操作了,很简单。
就是这么个简单的流程,一直卡在了“正在准备恢复”,就一直卡着,我强制关机了,想着重试一次呗,上面的操作再来一次,结果工具窗口出不来了,就一个连接网络重装系统的界面了……
回想了一下我第一次的操作,手欠,再用时光机器恢复前,我手动格式化了我那块 256 的硬盘,导致我现在只能重装系统,什么都做不了,那就重装吧。连接网络,然后就是漫长的等待,安装结束,重新启动,这时候还是 12.6 的系统。
再次准备用时光机器恢复,这次不欠了,直接选时光机器恢复到硬盘上,然后又是卡在了“正在准备恢复”,这个时候我隐约觉得事情没那么简单了,开始逛论坛看大家有没有类似的情况,一大圈下来,初步结论就是:12.6 系统的时光机器可能有Bug,或者说是 12 系统和 10 系统差异太大,无法直接恢复。
重装10系统,再恢复,这总可以吧?那 mac 怎么重装老版本的系统呢?网上推荐两个做法:一个是重启电脑以后按住 shift+opt+cmd+r,然后给mac设置网络,它会重新安装出厂系统;另一个做法是使用U盘做一个老板系统的启动器,重装系统。
我先试了第一种方法,一直失败,报错 1008F,具体原因没找到,我猜测会不会是苹果那边觉得这个系统太老了,关闭了你的下载请求?
结果 试试第二种吧,如果你手边还有一台mac的话,做启动器很容易。刚好我老婆的mac在手边,下载 10.15.7 的系统,做启动器(具体过程下面总结吧),制作过程中我发现,我老婆的这个mac不就是 12.6 的系统吗!我为什么不直接体验……
启动器制作完,插上,关机,重启,按住 opt+cmd,选择从U盘启动,然后就是熟悉的工具窗口了,重装系统or从时间机器恢复都可以很顺畅。
注意:启动盘制作完成后,如果你是想通过时光机器恢复,那在启动页选择从U盘启动以后,不用重装系统,直接选择从时光机器恢复即可
总结 mac 重启的过程中,按不同的组合键是不同的效果:
cmd+r: 进入恢复模式,也就是那个工具窗口 opt+cmd+r: 连接网络,重新安装系统你mac的,最新的系统 shift+opt+cmd+r: 连接网络,重新安装你mac的出厂系统 opt+cmd: 进入选择启动器页面 制作mac启动器,可以参考官方文档:
下载要安装的系统 使用mac的磁盘工具格式化U盘,格式:Mac OS扩展(日志式),方案:GUID分区图 终端执行命令(不同版本命令不一样,参考文档): Catalina的命令 sudo /Applications/Install\ macOS\ Catalina.app/Contents/Resources/createinstallmedia --volume /Volumes/你的U盘名称 如果从U盘启动失败,可能是需要打开"启动安全性实用工具",具体做法参考:https://support.apple.com/zh-cn/HT208198
git comment alias [alias] st = status cl = clone ci = commit ca = commit -a co = checkout ck = checkout cp = cherry-pick pl = pull ps = push last = log -1 l = log --pretty=oneline -n 20 --graph --abbrev-commit ll = log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit -- br = branch ss = stash dc = diff --cached mt = mergetool git common commands view all branch
1. 公钥、私钥 非对称加密里的概念,公钥和私钥是成对出现的,公钥加密的信息只能由对应的私钥解密,私钥加密的信息只能由对应的公钥解密。
2. 命令行、实验 生成私钥 //1024 为 rsa 算法中一个因子的长度,一般为1024或2048 openssl genrsa -out private.pem 2048 查看生成的密钥信息 openssl rsa -in private.pem -text 从私钥中提取出公钥 openssl rsa -in private.pem -pubout -out public.pem 使用公钥加密 openssl rsautl -encrypt -inkey public.pem -pubin -in test.text -out encrypt_test.txt 使用私钥解密 openssl rsautl -decrypt -inkey private.pem -in encrypt_test.txt -out decrypt_test.txt 使用私钥签名 openssl rsautl -sign -inkey private.pem -in test.text -out sign.text 使用公钥验签 openssl rsautl -verify -pubin -inkey public.pem -in sign.text -out verify.