包含标签 git 中的文章

git rebase 保留提交者原始日期?

1 Preface 当使用 git cherry-pick A^..B 来 copy 一组 commits 时,会默认使用当前的系统时间; 我们想修改一组 commits 的 author和 email,但是要保留 commit-date 和 author-date, 这时候该怎么做呢? 2 解决办法 1 git -c rebase.instructionFormat='%s%nexec GIT_COMMITTER_DATE="%cD" GIT_AUTHOR_DATE="%aD" git commit --amend --no-edit --reset-author' rebase -i ${hashid} 不使用-i,改为 -f,则不显示交互会话界面,直接执行。 默认只影响 hash-id 之后的commits,如果需要从 root 开始rebase,则使用 --root to rebase all。 3 参考 1 How to update git commit author 2 更多玩法 How to preserve the committer date in git-rebase.md……

阅读全文

Git 项目仓库中的 OWNERS 文件

1 Git 在开发中的常用术语 在团队开发过程中,我们经常会看到如下术语(terms),下面记录一下: terms means 翻译 WIP Work in progress, do not merge yet. 开发中 LGTM Looks good to me. Riview 完别人的 PR,没有问题,可以合并了 PTAL Please take a look. 帮我看下,一般都是请别人 review 自己的 PR CC Carbon copy 一般代表抄送别人的意思 RFC request for comments. 我觉得这个想法很好, 我们来一起讨论下 IIRC if I recall correctly. 如果我没记错 ACK acknowledgement. 我确认了或者我接受了,我承认了 NACK/NAK negative acknowledgement. 我不同意 2 OWNERS 文件 k8s 使用 owners 文件的灵感来自于Chromium OWNERS文件 owners 文件主要是为了解决代码审查过程中的问题: 项目中代码审查的速度, 受到能够审查代码的……

阅读全文

git 源码学习

Preface 最近趁上一个工作任务刚结束,新的任务还在规划中,难得清闲几天,可以抽点时间来看下 Linus 大神在2005年写的 git,为了简单,理解git 的原理,我们可以 checkout 刚开始的版本 比如hash为 79517a067。 这个版本总代码量只有1491 行。 Compile 依赖包:libssl-dev、zlib 修改编译选项:Makefile中LIBS 增加 -lcrypto 编译完之后会生成可执行文件: update-cache show-diff init-db write-tree read-tree commit-tree cat-file fsck-cache checkout-cache Analysis 1 init-db 初始化工作目录: 在当前路径下创建目录, .dircache └── objects ├── 00 ├── 01 ├── ...(255 dirs) ├── fe └── ff 2 update-cache……

阅读全文

Git原理分析

Git Analysis 1 我们通过实验的方式来分析,Git是如何管理本地代码的。 我们在alpha目录下新建一个number.txt文件,echo first >number.txt。 git init git add number.txt 此时在.git 下会产生一个index 文本文件 查看文件: object 下会产生一个9c的文件夹,然后后面跟长度为38的字符串。(也就是40位的sha-1,前面2位作为文件夹名作为索引。) 我们用sha-1计算出……

阅读全文

git cherry-pick

1 cherry-pick git cherry-pick可以选择某一个分支中的一个或几个commit(s)来进行操作。 例如,假设我们有个稳定版本的分支,叫v2.0,另外还有个开发版本的分支v3.0,我们不能直接把两个分支合并,这样会导致稳定版本混乱,但是又想增加一个v3.0中的功能到v2.0中,这里就可以使用cherry-pick了。 如下图,比如我们想将master的C5修改记录,也提交到dev-feature这个分支上,我们可以使用: git cherry-pick ee99d9a 如果没有修改文件的同一行则提交顺利。如果有冲突则需要手工解决。 2 冲突解决 如下图,我……

阅读全文

git merge 和git rebase的区别

最近在学习git的版本控制,分支之间的同步、冲突处理,cherry-pick等有趣的功能。下面是整理的一些学习笔记。 一、git merge [branchName] 顾名思义,就是合并分支,比如你当前代码库有两个分支一个是master,另一个是dev-feature。(如下图) 我们在dev-feature 分支,想同步master的通用修改: git checkout dev-feature git merge master Git会按照修改的时间点将master分支的修改记录依次应用到dev-feature分支。 我们使用git log 可以看到修改记录依次为(从新到旧):C7←C5←C6←C3←C4←C2←C1……

阅读全文

最近文章

分类

友情链接

标签

-Wall(1) 2017(1) 2023(1) about(1) AC自动机(1) algorithm(2) atomic(1) BigData(1) busy(1) C++11(3) cache(3) chrome(1) cluster(1) CMake(1) cmd(1) Code Review(1) communication(1) core(1) CPA(1) CPC(1) CPM(2) CPP(15) CPS(1) CPT(1) CPU(1) CR(1) CS(4) Diary(3) Docker(1) DP(1) duck-type(1) echarts(1) epoll(1) etcd(1) Eureka(1) event(1) eventfd(1) Feeling(1) future(2) Gerrit(1) git(6) go(3) go-cmp(1) Golang(8) hardware(1) Hundsun(2) intersection(1) iPhone(1) Java(2) js(1) kafka(2) lambda(1) Languages(2) LeetCode(3) libuv(1) Life(12) LinkList(1) Linux(2) LogReplay(1) lua(3) MacOS(1) MySQL(1) mysqldump(1) narrow cast(1) nullptr(1) OKR(1) oneof(1) OpenTelemetry(1) owners(1) pkg(2) plan(1) plugin(2) plugins(1) poll(1) postman(1) promise(1) proto3(1) Protobuf(1) rb-tree(1) Reactive(1) ready_future(1) rebase(1) recommend(2) recursive(1) Redis(1) reflection(3) Registry Center(1) Release(1) resume(1) rpm(1) seastar(4) select(2) set(1) shared_ptr(1) SIGABRT(1) Simulate Location(1) sql(2) std::thread(1) syscall(1) tcp(1) timeout(1) TodoList(1) Tools(3) tracing(1) Travel(1) unique_ptr(1) unwound stack(1) weak_ptr(1) Web(2) Wireshark(4) Work(9) zeromq(2) zookeeper(2) zsh(1) 个人旅游(1) 企微机器人(1) 优点(1) 全麻(1) 动态规划(1) 在线广告(1) 多模匹配(1) 工作总结(1) 广告(1) 开源工具(1) 开源库(4) 总结(2) 扔鸡蛋问题(1) 文本消息指令(1) 智齿(1) 流量录制回放(1) 用户标签(1) 缺点(1) 群收款(1) 背包问题(1) 读书笔记(8) 香港签注(1) 高可用(2) 鼻炎(1)

其它