Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。
Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。
Git 与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,不必服务端软件支持。
git, 分布式版本控制工具 可以实现软件的版本控制,在多个版本之间切换; 可以实现多分支开发,提高开发效率; 可以实现历史记录,历史状态的恢复; 团队内部实现权限管理等。 初始化本地仓库: 项目根目录下git init
分布式:git,能有效解决单点故障,C语言开发
集中式:svn,各个版本存于服务器,易单点故障
Git 不仅仅是版本控制系统,它也是个内容管理系统(CMS),工作管理系统等。
如果你是一个具有使用 SVN 背景的人,你需要做一定的思想转换,来适应 Git 提供的一些概念和特征。
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 哈希算法。这能确保代码内容的完整性,确保在遇到磁盘故障和网络问题时降低对版本库的破坏。
在==项目根目录下==执行如下:
git init
或者克隆远程仓库
git clone url
git config --global user.name “jack”
git config --global user.email "[email protected]"
git status
将所有文件增加到暂存区
git add .
将一个文件增加到暂存区
git add test.txt
提交版本到本地仓库
git commit -m "版本号或者描述信息"
git log
git log --oneline # 日志过长时,按行显示
git reflog # 历史操作
git reset --hard HEAD^ # 回退到当前版本的前一个版本 HEAD^^表示回退到当前版本的前两个版本
git reset --hard HEAD`1 # 回退到当前版本的前一个版本 HEAD`5表示回退到当前版本的前5个版本
git reset --hard 版本号序号 # 回退到指定的版本
git checkout -- <文件名>
git reset HEAD <文件名> # 先撤消暂存区的修改,从暂存区撤回
git checkout -- <文件名> # 再撤消工作区修改
对比本地仓库(HEAD) 与工作区文件的差异
git diff HEAD -- <文件名>
xxxxxxxxxx git diff HEAD HEAD^ -- <文件名>
rm <文件名>
查看分支
git branch -v
# 创建分支,不切换
git branch <分支名>
# 切换分支
git switch <分支名>
or
git checkout <分支名>
# 创建分支,并切换
git checkout -b <分支名>
# 创建dev分支,并切换
git checkout -b dev
# 1. 切换到主分支
git checkout master
# 2. 合并分支dev 到主分支
git merge dev
注意:合并分支内容需要先切换到主分支上
# 删除一个分支
git branch -d <分支名>
# 删除dev分支
git branch -d dev
git log --pretty=oneline
master,负责版本发布、历史记录; dev, 负责开发 其他分支,适当的时候合并到dev分支。