Git Rebase教程:用Git Rebase让时光倒流(2)

要将f3分成两个提交,我们所要做的是重置git的指针到先前的提交(f2)而保持工作目录和现在一样。这就是git reset在混合模式在做的。由于混合模式是git reset的默认模式,我们可以直接用git reset head~1。就这么做并在运行后用git status看下发生了什么。

Git Rebase教程:用Git Rebase让时光倒流

git status告诉我们userService.js和wishlistService.js被修改了。如果我们运行 git diff 我们就可以看见在f3里面确切地做了哪些更改。

Git Rebase教程:用Git Rebase让时光倒流

如果我们看一眼日志我们会发现f3已经消失了。

Git Rebase教程:用Git Rebase让时光倒流

现在我们有了准备提交的先前的f3提交,而原先的f3提交已经消失了。记住虽然我们仍旧在rebase的中间过程。我们的f4、f5、f6提交还没有缺失,它们会在接下来回来。

让我们创建两个新的提交:首先让我们为可以提交到主分支的userService.js创建一个提交。运行git add userService.js 接着运行 git commit -m "f3a: add updateUser method"。

太棒了!让我们为wishlistService.js的改变创建另外一个提交。运行git add wishlistService.js,接着运行git commit -m "f3b: add addItems method".

让我们在看一眼日志。

Git Rebase教程:用Git Rebase让时光倒流

这就是我们想要的,除了f4、f5、f6仍旧缺失。这是因为我们仍在rebase交互的中间,我们需要告诉git继续rebase。用下面的命令继续:git rebase --continue。

让我们再次检查一下日志。

Git Rebase教程:用Git Rebase让时光倒流

就是这样。我们现在已经得到我们想要的历史了。先前的f3提交现在已经被分割成两个提交f3a和f3b。剩下的最后一件事是cherry-pick出f3a提交到主分支上。

为了完成最后一步,我们首先切换到主分支。我们用git checkout master。现在我们就可以用cherry-pick命令来拾取f3a commit了。本例中我们可以用它的SHA值bd47ee1来引用它。

Git Rebase教程:用Git Rebase让时光倒流

现在f3a这个提交就在主分支的最上面了。这就是我们需要的!

Git Rebase教程:用Git Rebase让时光倒流

这篇文章的长度看起来需要花费很大的功夫,但实际上对于一个git高级用户而言这只是一会会。

Linux git命令参数及用法详解

Fedora通过Http Proxy下载Git

Ubuntu Server上安装Git

服务器端Git仓库的创建(Ubuntu)

Linux下Git简单使用教程(以Android为例)

Git权威指南 PDF高清中文版

Git 的详细介绍请点这里
Git 的下载地址请点这里

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/17384.html