每当我尝试rebase
时,我就陷入了无法解决的无限冲突循环。在解决x冲突之前,会出现y冲突,然后x再次冲突,依此类推。
关键是(显然)merge
,甚至cherry-pick
,提供了与rebase
相同的功能,不是吗?如果不是,那rebase
的用处是什么?
答案 0 :(得分:4)
rebase
重写历史记录。 方式 超过merge
或cherry-pick
- 一个非常先进的工具,需要练习(并且可能很危险,因为它会重写历史记录。 ..小心git push -f
)。当rebase
与merge
类似地使用时,过程就会截然不同。
git fetch origin && git merge origin/master
:
git fetch origin && git rebase origin/master
:
rebase
在这种情况下的一大优势是,您只是更新本地仓库并在顶部应用您的提交,并且不会有任何“粗略”合并提交说“嘿,我刚刚合并这个东西。“缺点是,如果你有大量的提交修改相同的文件,你将不得不一遍又一遍地解决冲突,因为没有“粗略”的合并提交。
但同样,rebase
是一个非常先进的工具,用于重写历史记录。您可以修改以前的提交标题,删除过去的提交,将许多提交压缩在一起等等。Read up on it!
答案 1 :(得分:2)
我只在一个案例中使用for (i in 1:(dim(dummydata)[2]-1)){
title<-paste0("graph_", i, ".pdf")
pdf(title)
print(ggplot(data = dummydata, aes(x=Time, y=dummydata[,i+1]))+geom_point())
dev.off()}
。案例:
rebase
分支与当前版本的应用。master
feature-branch
feature-branch
中进行提交,在这种情况下我会feature-branch
。我完成了rebase
,我只是将它合并为主。
feature-branch
这使我可以位于git checkout master
git checkout feature-branch
git commit -am "feature commit #1"
git commit -am "feature commit #2"
git commit -am "feature commit #3"
git checkout master
git commit -am "hot fix"
git checkout feature-branch
git rebase master
git commit -am "i'm done"
git checkout master
git merge feature-branch
分支的顶部并拥有干净的git历史记录。