2012-06-27 220 views
38

我一直在玩git(仍然非常小巧),我想知道“重置”和“rebase”之间的区别。比另一个更强大吗?“git reset”和“git rebase”有什么区别?

说我想从历史记录中删除粗体的3个提交,哪个更好用,还是应该标记它,然后用git tag -d <tagname>删除它?

17a64df 2012-06-21 |你好使用style.css(HEAD,origin/style,master),
a6792e4 2012-06-21 |新增css样式表
801e13e 2012-06-21 |增加自述文件
5854339 2012-06-21 |新增index.html
0b1dd4c 2012-06-21 |将hello.html移动到lib
55649c3 2012-06-21 |添加作者/电子邮件评论
9b2f3ce 2012-06-21 |新增作者评论
cdb39b0 2012-06-21 |用文本提交p标签(v1.1)
b7b5fce 2012-06-21 |这将恢复提交a6faf60631b5fbc6ee79b52a1bdac4c971b69ef8。
a6faf60 2012-06-21 |恢复“哎呀,我们不想要这个提交”
a006669 2012-06-21 |哎呀,我们不希望这个提交
262d1f7 2012-06-21 |新增HTML标头(v1)
b1846e5 2012-06-21 |新增标准HTML页面标签(v1-beta)
bf1131e 2012-06-21 |新增HI TAG
02b86d0 2012-06-21 |第一次提交

回答

43

它们完全不同。 git-reset可以在您的工作目录和索引上使用refs,而无需触及任何提交对象(或其他对象)。另一方面使用git-rebase来重写先前提交的提交对象。

所以如果你想重写历史,git-rebase是你想要的。请注意,您应该从来没有重写历史记录被推送并可供其他人使用,因为重新绑定会重写这些对象,使它们与旧对象不兼容,从而导致涉及其他任何人的混乱。

这就是说,你想要做什么ist interactive rebasing。调用它使用git rebase -i 262d1f7,你应该得到一个提示,看起来像这样:

pick 262d1f7 Added HTML header (v1) 
pick a006669 Oops, we didn't want this commit 
pick a6faf60 Revert "Oops, we didn't want this commit" 
pick b7b5fce This reverts commit a6faf60631b5fbc6ee79b52a1bdac4c971b69ef8. 
pick cdb39b0 Commit p tags with text (v1.1) 
pick 9b2f3ce Added an author comment 
pick 55649c3 Add an author/email comment 
pick 0b1dd4c Moved hello.html to lib 
pick 5854339 Added index.html 
pick 801e13e Added README 
pick a6792e4 Added css stylesheet 
pick 17a64df Hello uses style.css (HEAD, origin/style, master), 

有,只需删除您要删除,保存并退出编辑器,Git会重写历史上提交的线条。如果您已经推送了更改,不会执行此操作。一般来说,在历史上这样的提交是完全正确的。

+0

感谢您的回复,并澄清了不同之处。 – Q10

+0

是否正在从rebase中删除行,就像将sques改为“s”一样? – Ninjaxor

+4

@Ninjaxor不,删除行将完全删除提交以及它们从历史记录中引入的更改。就好像提交从未做出。例如,如果您删除了添加了一行的提交,那么该行将不会出现在重新绑定之后的任何后续提交中。另一方面压缩将仍然保持在提交中引入的更改,而只是摆脱单独的提交本身。 – poke

8

虽然这并不比较两者之间的差异,但是here's是一篇很好的文章,可以很好的解释底纸。

+1

URL现在是http://www.jarrodspillers.com/git/2009/08/19/git-merge-vs-git-rebase-avoiding-rebase-hell.html – AnneTheAgile

+1

该文章说唯一的好处是有较少的合并提交,其余合并提交更有意义。这似乎不值得冒这个风险。还有其他优点吗? –

+0

那篇文章非常有帮助。迄今为止在互联网上看到的最好的解释。 –

相关问题