关于 git 的一些东西

用了很久的 git 了,但更多的是用基本的东西,也没有深究过是不是合适。长假过来重新总结一下。

git flow

主分支有两个,master 和 develop。

develop 是当前的主要开发分支,当足够稳定可以进行发布版本的话就可以把代码 merge 到 master。

其余的称为辅助分支,如下:

  • feature,可能从 develop 派生出来,但最后一定合并到 develop
    • feature 可以只留在本地
  • release, 用于准备进行发布的版本,允许针对部署环境的小修改,bug 的修改
    • bug 修改以及一些其它的修复在之后需要合并回 develop 和 master
    • 合并到 master 之后记得加上 tag
  • hotfix, 从 master 派生出来,进行发布时意料之外的 bug 的修复
    • 修复之后进行版本号的更新
    • 最后也需要合并代码到 develop

需要注意的是,在这里合并分支使用的是 git merge --no-ff <branch> 来进行合并。这样合并后会新增一个节点,这样子保证了版本演进的清晰。

有用的东西

rebase

rebase 试用于不想保留分支信息的情况,你 checkout 了一个新分支出来,修改了提交了几个 commit 之后,如果之前的分支也有别人的提交,你进行合并的时候就造成了分支的交叉。如果你不想合并就使用 git rebase <origin> ,这样子就会把你在当前的分支的提交取消,把你的修改更新到原来的分支去。

rebase 适合在本地只修改几个文件,新建的分支也不需要发布到远端。

日志查找

1
2
3
4
5
6
7
8
# 查找最近五个小时的提交
git log --since="5 hours"

# 查找五个小时之前的提交
git log --before="5 hours"

# 按精确的 commit 范围提交 [beg, end) 7 位 hash 码
git log <beg>...<end>

修改提交

增补提交

在已经提交之后,修改某个文件,然后使用下方命令即可直接复用刚才的提交

1
git commit -C HEAD -a --amend

反转提交

如果代码没有提交,可以简单使用 git reset

如果提交了的话,则可以使用 git revert -n HEAD 撤销提交,添加了 -n 参数之后,撤销的改动不会马上提交,撤销了提交,之后修改后再重新提交。

压缩版本库

1
git gc

grep

1
2
# 指定查找指定版本库的信息
git grep xmmap v1.5.0

最后的最后

目前在用的时候可能回用到的就是上面这些了,还是历史版本的修改,二分查找一类的高级功能尚未涉及。

参考


关于 git 的一些东西
http://yoursite.com/2015/10/07/about-git/
Author
Shing
Posted on
October 7, 2015
Licensed under