Yuan Yijun (bbbush) wrote,
Yuan Yijun
bbbush

2008-03-30

如果希望有线性的历史,就必须用 rebase

public tree 不可以用 rebase

是不是有个假设是不断 merge 后一定可以得到完整的内容

尝试:

从分支去 merge 或者 cherry-pick 主干的 changes,只有在最后才 rebase,再从主干 merge


刚才

做了错事,想修改一个历史的 commit,于是新签出来一个分支,修改,rebase,然后把新分支删掉,目前仍然位于分支上,又想合并到主干,rebase,发现合不进去,忘记了 rebase --abort 就执行了 checkout master,结果自己辛辛苦苦干了一天的分支找不到了…… T_T

幸好编辑器还有历史记录……


所以,rebase 时一定要在临时分支上做备份……

rebase 的混乱中,又 hit 到了 Git win32 的另一个严重问题:大小写

git add a 和 git add A 是不一样的,会创建两条记录,然而 a 和 A 又是同一个文件。所以,git add 要小心使用,把文件名记得清楚一点,多用 shell 的 tab 补全……



又几天过去了,发现分支很好用,不必把修改同步到多个分支上去,留在那里就可以了:分支才是保留历史的好场所,而主干则是 merge 的结果之一,是某个 merge 策略的结果,这个策略很可能不关心具体的历史细节。

而分支的数量,则是与 topic 有关,不应将多个 topic 的修改都提交到同一个分支,否则混合的 changeset 几乎没法分开,也不容易看到一致的,意义相通的 log。拆分很难,而 merge 很容易,所以个人的仓库里可以有很多很多分支。

保持 topic branch 的线性,制定合适的 merge 策略。我们既然是与 VSS 搭配,我感觉不需要做任何 merge...
Tags: 工作
Subscribe
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 1 comment