[Git和SVN比较]_[初级]_[Git速查手册]
来源:互联网 发布:管家婆网络远程软件 编辑:程序博客网 时间:2024/06/05 22:42
场景
1.使用SVN的都知道, SVN是集中化的版本控制系统. 本地只存储最新的版本快照, 不能查看整个库的历史记录; 修改代码过后, 如果需要提交代码到中心仓库,是需要联网的; 如果别人更快的提交, 那么必须先update之后解决冲突才可以提交, 相当麻烦.
说明
下边比较Svn(集中化版本控制) 和 Git(分布式版本控制)的优缺点:
Svn
特性
1.只存储某个个版本的快照.
2.是以数值为版本号.
优点
1.每个人都可以在一定程度上看到项目中的其他人在做什么.
2.管理员可以轻松掌控每个开发人员的权限.(特别是对源码控制要求比较高的公司)
缺点
1.如果中央服务器单点故障, 那么任何一个客户端都无法提交更新, 也就无法协同工作.
2.如果中心数据库的磁盘发生损坏, 又没做备份, 那么会丢失整所有数据,包括变更历史, 如果有一个SVN里的中心数据文件损坏, 那么导致这个存储文件对应的记录或文件无法恢复, 严重的整个SVN库都因此报废.
3.本地开发时完成如果连不上代码仓库, 那么某个功能想提交保存又提交不了,做新功能时又担心覆盖或影响之前的功能,束手束脚(效率低,慢,容易出错). 提交失败时还得先打包备份。防止Update时不小心merge错误.
Git
特性
1.存储整个个仓库的镜像, 并不是某个快照.
2.git的文件存在3种状态: 已修改(modified)和已暂存(staged),已提交(committed)
3.是以sha1为版本号.
优点
1.客户端不只是提取最新版本的文件快照, 而是把代码仓库完整的Clone(镜像)下来.
2.中心服务器如果发生故障,可以用任何一个客户端的本地仓库进行恢复.
3.多阶段提交, 比如项目C=A+B, A=A1+A2+A3, 这样一个大项目可以分成足够细的子项目协同开发而不受影响.
4.基本所有的操作和提交都可以在本地执行提交而不受其他人影响,这样能保护代码不小心被还原或删除造成的变更丢失, 是个很好的功能. 它是先提交到本地的仓库(快速),之后再push到远程, 只有在push时才有可能发生冲突. 这时候解决冲突其实已经安全很多, 因为你自己的修改已经提交到本地.
缺点
1.权限控制相当麻烦, 默认没有对一个项目的权限控制.
常用操作
获取仓库
第一种:克隆仓库
git clone https://github.com/libgit2/libgit2 .
第二种:在现有目录初始化仓库
进入该项目目录-> git init
配置git
1.进入项目目录设置 user.name和 user.email, 设置编辑这个项目的用户名和email.全局的会在/etc/gitconfig 与
~/.gitconfig 里设置, 如果是某个项目的是在该项目的.git/config文件里.
git config [--global] user.name "Sam"git config [--global] user.email "Sam@gmail.com"
2.检测配置
git config list
3.获取帮助
git help <verb>git <verb> helpman git <verb>
操作git
1.查看当前文件状态
git status [-s]
2.添加一个跟踪文件
git add <file>
3.添加忽略, 比如pyc文件不提交, 全局的在 ~/.gitignore 文件里. 项目的在.git/info/exclude文件.
– 所有空行或者以 # 开头的行都会被 Git 忽略。
– 可以使用标准的 glob 模式匹配。
– 匹配模式可以以(/)开头防止递归。
– 匹配模式可以以(/)结尾指定目录。
– 要忽略指定模式以外的文件或目录,可以在模式前加上惊叹号(!)取反。
4.查看尚未暂存的文件更新了哪些部分
git diff
5.提交更新到本地
git commit -m "描述"
6.删除文件
git rm <file>
7.移动文件
git mv <file_from> <file_to>
8.查看提交历史,一个常用的选项是 -p,用来显示每次提交的内容差异。你也可以加上 -2 来仅显示最近两次提交
git log [-p -2]
9.撤销操作, 比如一次提交漏掉了某个文件或注释写错.
git commit -m 'initial commit'git add forgotten_filegit commit --amend
10.取消暂存的文件
git reset HEAD CONTRIBUTING.md
11.撤销(放弃)对文件的修改
git checkout -- CONTRIBUTING.md
12.显示需要读写远程仓库使用的 Git 保存的简写与其对应的 URL
git remote -v
13.添加远程仓库
git remote add <shortname> <url>git remote add pb https://github.com/paulboone/ticgit
14.从远程仓库中抓取与拉取
git fetch [remote-name]
15.推送到远程仓库
git push [remote-name] [branch-name]git push origin master
16.查看远程仓库信息
git remote show origin
17.列出标签
git taggit tag -l 'v1.8.5*' (过滤标签)
18.创建标签
Git 使用两种主要类型的标签:轻量标签(lightweight)与附注标签(annotated)。
一个轻量标签很像一个不会改变的分支 - 它只是一个特定提交的引用。
然而,附注标签是存储在 Git 数据库中的一个完整对象。它们是可以被校验的;其中包含打标签者的名字、电子
邮件地址、日期时间;还有一个标签信息;并且可以使用 GNU Privacy Guard
– 附注标签
git tag -a v1.4 -m 'my version 1.4'git show v1.4 (显示标签信息)
– 轻量标签
git tag v1.4
– 后期打标签, 对某个历史打标签,你需要在命令的末尾指定提交的校验和(或部分校验和)
git log (显示历史)git tag -a v1.2 9fceb02
– 共享标签,默认情况下 git push 不会传送标签到远程仓库服务器上.
git push origin [tagname]git push origin --tags (所有远程仓库不在的标签提交)
– 检出标签
git checkout -b [branchname] [tagname]
19.存储提交的email和密码
git config credential.helper storegit push origin master
…
会自动保存到 ~/.git-credentials, 下次提交不会再输入,缺点是明文的. 不建议使用.
最后补充下开源项目还是用github吧, code.csdn.net都用不了了还要迁移到码云,关键是码云还不能搜代码片段, 没什么意义. 自己写的博客备份工具会迁移到github.
参考
Pro Git 中文
is-there-a-way-to-make-git-remember-the-password-for-webdav-remotes
git-credential-store
- [Git和SVN比较]_[初级]_[Git速查手册]
- Git速查手册
- Git速查手册
- Git速查手册
- Git速查手册
- git和svn比较
- GIT和SVN比较
- Git和SVN比较
- SVN和Git比较
- GIT和SVN比较
- 安卓1113_版本介绍和控制 SVN GIT
- Git 命令速查手册
- Git 常用命令速查手册
- Git常用命令速查手册
- Git 自备速查手册
- SVN和Git的比较
- svn和git的比较
- SVN和Git的比较
- Spring Boot Servlet
- MFC——基础类及其层次结构
- 1001. A+B Format (20)
- POJ1106 (极角排序)
- idea开发javax.servlet.http不存在或者是其它包不存在
- [Git和SVN比较]_[初级]_[Git速查手册]
- 安装docker镜像时Error checking TLS connection: Error checking and/or regenerating the certs
- spring boot实战(第十五篇)嵌入tomcat源码分析
- Dockerfile -> Image -> Container
- Java 目录
- [kanzi]为设置3DTextBlock的颜色Demo
- Java内存模型(二)-顺序一致性
- 工业界 ▏Youbionic为“增强人类”提供双手机械手
- 什么是 Apache Spark?大数据分析平台如是说