Git常用命令备忘

1. 获取远程tag : git fetch origin tag <tagname>
2. 删除tag : git push origin --delete tag <tagname>
3. 删除tag :git tag -d <tagname>
git push origin :refs/tags/<tagname> (推送一个空的tag到远程)

4. reset/checkout/revert区别
reset : 回滚到某个提交,会重写提交历史
checkout : 移动head到某个分支或者提交,通常用来切换分支或者查看某个历史提交
revert : 撤销一个提交,同时会创建一个新的提交,不会重写提交历史
reset 指定文件A :将某个提交中的A文件放入到缓存区供下一个提交使用,不影响工作目录
checkout 指定文件A : 将某个提交中的A文件替换工作目录中的文件,类似git reset *** -hard

reset 提交层面 : 在私有分支上舍弃一些没有提交的更改
reset 文件层面 : 将文件从缓存区中移除 , 例 git reset HEAD A.txt, 相当于把HEAD中的A放入到缓存区,也就是从缓存区移除A
checkout 提交层面 : 切换分支或查看旧版本
checkout 文件层面 : 舍弃工作目录中的更改,和eclipse中的replace by 一样
revert 提交层面 :在公共分支上回滚更改
revert 文件层面 : 无

5. rebase和merge的区别, 参考文章http://www.bubuko.com/infodetail-1408579.html
主分支合并feature分支一定要用merge,不要用rebase
Rebase黄金法则:绝不要在公共的分支上使用它
我们可以用rebase清理本地分支,合并远程分支
在主分支合并feature分支时,也可以先rebase主分支,再merge feature分支,来保持线型,不过我觉得没有必要这样做
记得一定不要重写主分支的提交