SVN区别
Git 与 SVN 区别点:
1、GIT是分布式的,SVN不是:这是GIT和其它非分布式的版本控制系统,例如SVN,CVS等,最核心的区别。
2、GIT把内容按元数据方式存储,而SVN是按文件:所有的资源控制系统都是把文件的元信息隐藏在一个类似.svn,.cvs等的文件夹里。
3、GIT分支和SVN的分支不同:分支在SVN中一点不特别,就是版本库中的另外的一个目录。
4、GIT没有一个全局的版本号,而SVN有:目前为止这是跟SVN相比GIT缺少的最大的一个特征。
5、GIT的内容完整性要优于SVN:GIT的内容存储使用的是SHA-1哈希算法。这能确保代码内容的完整性,确保在遇到磁盘故障和网络问题时降低对版本库的破坏。
安装
windows
安装包下载地址:https://gitforwindows.org/
mac
自带
GUI
SourceTree安装包下载地址:https://www.sourcetreeapp.com/
工作流
工作区、暂存区、版本库
工作区:就是你在电脑里能看到的目录。
暂存区:英文叫stage, 或index。一般存放在 ".git目录下" 下的index文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)。
版本库:工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库。
仓库
克隆仓库
git clone [url]
克隆仓库是将仓库中的所有分支全部下载下来。
分支
创建分支
git branch [branchname]
git checkout -b [branchname]
切换分支
git checkout [branchname]
合并分支
git merge [branchname]
删除分支
git branch -d [branchname]
提交历史
我们使用git log
可以看到git过去提交的日志。在日志界面按向下方向键可以查看更久前的信息,按q
退出日志界面。
git log
命令可以加非常多的参数与选项以帮助我们更快地获得想要的信息。在此不一一赘述。读者可参考https://blog.csdn.net/daguanjia11/article/details/73823617。或是搜索其他博客进行学习。
git status
git的最常用指令,输出当前仓库的状态,并提示我们接下来的操作。
在上图中,我们执行git status
指令得到:
我们对三个文件进行了修改。其中有一个在暂存区(绿色),另外两个在工作区(红色)
git diff
在上面的例子中,我们知道在工作区中,我们对app/src/main/java/com/live/longsiyang/openglonandroid/picture/glrender/BitmapEffectGLRender.java
进行了修改。但我们具体改了哪些内容要如何查看呢?
git diff app/src/main/java/com/live/longsiyang/openglonandroid/picture/glrender/BitmapEffectGLRender.java
即可看到具体到代码层面的修改。
git rebase
git rebase
可以提供出更加完美的提交树,方便问题的回溯。
PS:rebase 只能在私人分支上完成
常用操作方法
at master :
git pull
git checkout ocean/develop
ocean/develop:
(after commits)
git rebase master
git add -A
git rebase --continue
...
git push origin ocean/develop --force
(request merge to master)