查看原文
其他

[笨叔点滴6] 叔,这个git咋玩啊?

小笨叔 奔跑吧Linux社区 2019-04-24


“今天在食堂门口遇到了暗恋已久的女神,女神笑着给我递了张纸条就进食堂了,我打开纸条看到上面写的两个字“钙氧钨氧”,我以为是瞎写的就扔了,晚上我睡觉时越想越不对劲,现在我肠子都悔青了... 



大家有没有被这个语文搞晕了,反正笨叔是晕了!


下面和大家讲一个git的案例。是这样的,我们接了项目,在选择内核版本的时候,客户说,既然笨叔的内核用4.0,那我们就用4.0开发吧,我们一听好高兴。客户说,你们先建一个git树,这个git树里需要包含Linux 4.0所有社区里的git log信息。


我让小明同学去建这个git树,结果小明同学搞了1天还没搞出来。他说,叔,我只会建git 树的时候一把把所有文件都push到新的git树里,这个把社区的git log搞进行怎么玩啊,我网上搜了一天了,也没找到靠谱的文章。


那咋办,我们和小明同学一起来建这个树吧。



01 建树啦



比如我们在码云上建这棵树。

1)       登录Gitee网站,注册一个新账号。

2) 添加SSH keygitee上。

3) 在Gitee中创建项目

在“Name”对话框中填入“ben-linux-test”,其他保持默认设置,点击“New”按钮就成功创建了一个新的git仓库了。从github网页中我们能找到我们新建的仓库的地址:

https://gitee.com/benshushu/ben-linux-test.git


4)  下载这个仓库到本地。

$ git clone https://gitee.com/benshushu/ben-linux-test.git


5) 这时候这个仓库是空的,我们生成一个补丁并且提交到远程仓库中。

$ cd ben-linux-test

$ echo "#ben-linux-test" >> README.md

$ git add README.md

$ git commit -m "firstcommit"

$ git push origin master

最后通过git push origin master命令把本地仓库推送到github上,需要输入github上的用户名和密码。


6) 下载Linux官方仓库代码。接下来的工作就要在这个本地的git仓库里下载官方linux-4.0的代码,那应该怎么呢?首先我们需要添加Linux官方的git仓库。这里可以使用“git remote add”命令来添加一个远程仓库地址,如下面命令所示。 

$ git remote add linux https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git


git fetch命令可以把新添加的远程仓库代码下载到本地。 

$ git fetch linux


7)  创建Linux 4.0分支。

接下来我们需要把官方仓库中Linux 4.0标签的所有commit添加到Gitee上的master分支上。首先需要从remotes/linux/master分支上checkout一个名为linux-4.0的本地分支。

 

$ git checkout -b linux-4.0linux/master

$ git reset v4.0 --hard


这样本地linux-4.0分支就是真正基于Linux-4.0的内核,并且包含了Linux 4.0上所有的提交的信息。


8)  合并本地修改到Linux 4.0

接下来的工作就是需要把本地linux-4.0的分支上的commit统统都merge到我们本地的master分支上。

$ git checkout master

$ git merge linux-4.0 --allow-unrelated-histories


最后这个本地的master分支的提交就变成这样:

这样我们本地master分支上就包含了所有linux-4.0内核的git log信息了。最后一步只需要把这个master分支推送到我们Gitee上的远程仓库即可。

$ git push origin master

 推送完成之后,我们在Gitee网页上最终效果如图所示



这下小明同学心服口服了!


[往期精彩]

[笨叔点滴1] 为什么do_page_fault函数里代码需要判断用户态还是内核态?

[笨叔点滴2] 为啥子ARM32体系结构中每个处理模式都有一个单独的栈?

[笨叔点滴3] “栈”谁便宜了?

[笨叔点滴4]“栈”谁便宜了2

[笨叔点滴5] git rebase和git merge究竟有啥区别?

LinuxCon 2018北京游记(1)

LinuxCon2018北京笨叔笨游记 2

《奔跑吧linux内核》配套资源迁移到码云上

考点来了:4月18号视频更新

代码导读之如何使用qemu来单步调试head.S

代码导读之内存管理初始化 - 启动汇编

视频更新:内存管理代码框架导读

DMA那些事儿

私密VIP群答疑

高级运维必杀技:如何图形化单步调试RHEL/Centos 7里的内核?

首发:Meltdown漏洞分析与实践

[奔跑吧Linux内核] 故乡

致敬Beyond

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存