bug修复
- 【约定】修复bug时,我们会通过创建新的bug分支进行修复,然后合并,最后删除;
- 【经验】当手头工作没有完成时,先把工作现场git stash一下,然后去修复bug,修复后,再git stash pop,回到工作现场;
- 【经验】在master分支上修复的bug,想要合并到当前dev分支,可以用git cherry-pick 命令,把bug提交的修改“复制”到当前分支,避免重复劳动。
详情参见:跳转链接
feature分支
- 【经验】开发一个新feature,最好新建一个分支;
- 【约定】如果要丢弃一个没有被合并过的分支,可以通过git branch -D 强行删除。
多人协作
- 【约定】查看远程库信息,使用git remote -v;
- 【约定】本地新建的分支如果不推送到远程,对其他人就是不可见的;
- 【经验】从本地推送分支,使用git push origin branch-name,如果推送失败,先用git pull抓取远程的新提交;
- 【约定】在本地创建和远程分支对应的分支,使用git checkout -b branch-name origin/branch-name,本地和远程分支的名称最好一致;
- 【约定】建立本地分支和远程分支的关联,使用git branch –set-upstream branch-name origin/branch-name;
- 【经验】从远程抓取分支,使用git pull,如果有冲突,要先处理冲突。
Rebase
- 【定义】rebase操作可以把本地未push的分叉提交历史整理成直线;
- 【缘由】rebase的目的是使得我们在查看历史提交的变化时更容易,因为分叉的提交需要三方对比。
标签管理
- 【定义】发布一个版本时,我们通常先在版本库中打一个标签(tag),这样,就唯一确定了打标签时刻的版本。将来无论什么时候,取某个标签的版本,就是把那个打标签的时刻的历史版本取出来。所以,标签也是版本库的一个快照。
- 【区别】Git的标签虽然是版本库的快照,但其实它就是指向某个commit的指针(跟分支很像对不对?但是分支可以移动,标签不能移动),所以,创建和删除标签都是瞬间完成的。
- 【为什么tag】tag就是一个让人容易记住的有意义的名字,它跟某个commit绑在一起。
创建标签
- 【约定】命令git tag <tagname>用于新建一个标签,默认为HEAD,也可以指定一个commit id;
- 【约定】命令git tag -a <tagname> -m “blablabla…“可以指定标签信息。如:git tag -a v0.1 -m “version 0.1 released” 1094adb,其中用-a指定标签名,-m指定说明文字,最后的一串hash码代表commit id
- 命令git tag可以查看所有标签。
操作标签
- 【约定】命令git push origin <tagname>可以推送一个本地标签;
- 【约定】命令git push origin –tags可以推送全部未推送过的本地标签;
- 【约定】命令git tag -d <tagname>可以删除一个本地标签;
- 【约定】命令git push origin :refs/tags/<tagname>可以删除一个远程标签。
忽略特殊文件
- 【约定】忽略某些文件时,需要编写.gitignore。
- 【约定】.gitignore文件本身要放到版本库里,并且可以对.gitignore做版本管理!
- 【注意】使用Windows的童鞋注意了,如果你在资源管理器里新建一个.gitignore文件,它会非常弱智地提示你必须输入文件名,但是在文本编辑器里“保存”或者“另存为”就可以把文件保存为.gitignore了。
- 【操作】可以用git check-ignore命令检查gitignore是否写的有问题。
- 【操作】如果你确实想添加某文件,可以用-f强制添加到Git,如:git add -f App.class。
最后