git rebase使用 获取链接 Facebook X Pinterest 电子邮件 其他应用 - 九月 07, 2019 git rebase使用 目的:用于合并多个commit,使整个commit清晰且为线性。 唯一的可能不好影响是可能让历史记录变得过于简洁,中间过程的提交不可见。 git rebase -i HEAD~4 # 合并最近四个提交commit 如果已经推到远端,当处理完commit合并后需要用git push -f 推到远端。 如果是单个commit信息需要修改则: git commit --amend 参考资料 git rebase使用方法 获取链接 Facebook X Pinterest 电子邮件 其他应用 评论
Follow.is Feed Verification - 十月 12, 2024 This message is used to verify that this feed (feedId:68119418071751680) belongs to me (userId:67570460419266560). Join me in enjoying the next generation information browser https://follow.is. 阅读全文
给你的git仓库瘦身 - 九月 07, 2019 很久没有写博客了,最近遇到了一个git问题,比较典型,记录下来与大家分享。 我们使用git版本控制的时候享受了很多便利,不管是代码合并,分支提供给我们的并发,但我们也往往忽略了每次提交之后在我们本地项目根目录下.git文件夹里面的存储变化。我遇到的git“臃肿”问题就是因为在提交的时候把较大文本加入版本控制,在其他人拉取更新反推远程分支的时候,每一次都会加剧.git下面的objects的文件夹大小,最终的结果就是再也无法顺利从远程pull,也无法顺利clone该项目。 关于.git的产生和相关文件,可见此文的详细讲解:http://www.jianshu.com/p/fa31ef8814d2 。 简单的说,每一次提交修改的改变都会以文件的形式存储在本地项目根目录下的.git中,会在.git/objects下面形成一个Blob(一段二进制数据)文件记录。这意味着,即使你只改动了某个文件的一行内容,Git 也会生成一个全新的对象来存储新的文件内容。所以git仓库随着时间变化会自增长,我们往往忽视了这种潜在的危险。 下面来就我遇到的问题来思考解决方案,其实由于.git过大,我们可以从两种方向去思考,第一种治标不治本的方法:压缩git仓库。第二种删除git提交记录中大文件,在gc压缩。第一种方法是比较直接快捷的,可以使用命令:git gc --prune=now。 当你再次du -hs的时候会发现仓库大小有一定的变小。其实git自身在可承受范围内会自动用gc帮你压缩打包,所以除非真的遇到pull,push都困难的时候,可以不用手动执行。这个方法明显的缺点在于压缩的效果有限,且大文件还一直在之后的每次提交中,为以后埋下隐患。 本人更推荐第二种方法,大文件对象再删除。 先查找大文件,命令如下: git rev-list --objects --all | grep "$(git verify-pack -v .git/objects/pack/*.idx | sort -k 3 -n | tail -5 | awk '{print$1}')" 例如删除nspatientList1.txt文件: git filter-branch --force --index-filter 'git rm -rf -... 阅读全文
Specifying Systems 第五章笔记 - 十二月 14, 2019 5.1 内存的接口 本节通过一个规范表示接口,不涉及实现,也即不涉及判断真假的具体公式。 首先选择抽象的层级,第二章把“发送”操作用三个变量( val 、 rdy 、 ack )进行描述,并把 val 和 rdy 同时更改表示为一个原子操作。本章把“发送”操作用一个变量进行描述: val 。 接口试图规定“发送”操作是某一类 动作 ,这需要描述怎样的 动作 是符合本接口的,类似于在“函数是一等公民”的编程语言中描述函数。但 TLA+ 只能把 CONSTANT 、 VARIABLE 定义的变量作为模块的参数,而不能把 动作 定义的公式作为模块的参数。作为替代,TLA+ 中可以定义运算符以达到这个目的。把 动作 涉及的 N 个变量列举出来,定义一个 N 元运算符 CONSTANTS operator_as_action(_, _, _, _) 即可。 运算符的返回值不限定类型,而 动作 是一个公式,返回值是布尔型,所以还需要一个表示类型的假设 ASSUME \A p1, p2, p3, p4 : operator_as_action(p1, p2, p3, p4) \in BOOLEAN 在学习了需要的语法知识后,我们可以定义内存的规范了。 -------------------------- MODULE MemoryInterface --------------------------- VARIABLE memInt \* represent memory CONSTANTS Send(_, _, _, _), Reply(_, _, _, _), InitMemInt, \* set of possible initial values of memInt Proc, \* set of processor identiers Adr, \* set of memory addresses Val \* se... 阅读全文
评论
发表评论