分类 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原理分析

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……

阅读全文

最近文章

分类

友情链接

标签

其它