今天写这个,就说说常见的有未提交修改,但是马上要去修改一些别的东西,如何建立所谓…

今天写这个,就说说常见的有未提交修改,但是马上要去修改一些别的东西,如何建立所谓“临时分支”。

在Git里面,这个叫stash,是一个线性堆栈

git stash

而后你的修改会被放在stash里面,可以多次提交,它们被线性的保留在堆栈里面

git stash apply

这个会用后进先出的方式将修改恢复为本地修改,而后你可以选择去提交了。

在HG也就是Mercurial里面,有更强大一些的叫做q的东西

hg qnew -f filename.diff -m "your coments" //创建一个q,并给它命名为filename.diff(同时这也是diff文件的名字)
hg qnew ...
hg qpop //可以将一个q弹出来
hg qpush //又把它推回去
hg qapplied //看看哪些q目前被应用了
hg qseries //看看一共创建了哪些q
hg qfold //合并两个q
hg qfinish -a//将已经应用(applied)的q转换为check-in的版本。

HG这一套比较复杂,主要原因是Git和HG两者哲学不同。Git推荐你用轻量级的本地branch功能,而hg推荐你用基于hard-link的local branch配合q来实现并行开发。

Git里面还有一个非常先进的东西,叫做interactive rebase gi…

Git里面还有一个非常先进的东西,叫做interactive rebase

git rebase -i HEAD~5

然后会打开一个$EDITOR,你可以编辑前面5次(也就是~5,可以改为你需要的值)的提交,你可以选择保留–pick,修改–edit,合并–squash,或者删除(删除一行提交信息就可以)。

这可以进一步鼓励你频繁的使用git提交。