1.版本控制概述
Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。
Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。
Git 与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持。
Git 与 SVN 区别
Git 不仅仅是个版本控制系统,它也是个内容管理系统(CMS),工作管理系统等。
如果你是一个具有使用 SVN 背景的人,你需要做一定的思想转换,来适应 Git 提供的一些概念和特征。
Git 与 SVN 区别点:
-
Git 是分布式的,SVN 不是:这是 Git 和其它非分布式的版本控制系统,例如 SVN,CVS 等,最核心的区别。
-
Git 把内容按元数据方式存储,而 SVN 是按文件:**所有的资源控制系统都是把文件的元信息隐藏在一个类似 .svn、.cvs 等的文件夹里。
-
Git 分支和 SVN 的分支不同:分支在 SVN 中一点都不特别,其实它就是版本库中的另外一个目录。
-
Git 没有一个全局的版本号,而 SVN 有:目前为止这是跟 SVN 相比 Git 缺少的最大的一个特征。
-
Git 的内容完整性要优于 SVN:Git 的内容存储使用的是 SHA-1 哈希算法。这能确保代码内容的完整性,确保在遇到磁盘故障和网络问题时降低对版本库的破坏。
集中式和分布式区别
git工作流程
2.Git命令
初始化本地git仓库:
git init
查看本地仓库状态:
git status
设置提交代码时的用户信息:
git config --global user.name 用户名
git config --global user.email 邮箱
eg:
git config --global user.name luyang
git config --global user.email 330027364@qq.com
工作区提交至暂存区:
git add 文件名
eg:
git add .
git test.c
git *.c
把文件移除暂存区:
git rm --cached 文件名
提交本地仓库:
git commit -m "日志信息" 文件名
eg:
git commit -m "v1.0 xxx"
简要日志信息:
git reflog
查看提交历史:
git log
git log [选项] [分支名/提交哈希]
- 常用的选项包括:
-p
:显示提交的补丁(具体更改内容)。--oneline
:以简洁的一行格式显示提交信息。--graph
:以图形化方式显示分支和合并历史。--decorate
:显示分支和标签指向的提交。--author=<作者>
:只显示特定作者的提交。--since=<时间>
:只显示指定时间之后的提交。--until=<时间>
:只显示指定时间之前的提交。--grep=<模式>
:只显示包含指定模式的提交消息。--no-merges
:不显示合并提交。--stat
:显示简略统计信息,包括修改的文件和行数。--abbrev-commit
:使用短提交哈希值。--pretty=<格式>
:使用自定义的提交信息显示格式。
以列表形式查看指定文件的历史修改记录:git blame 文件名
git blame [选项] <文件路径>
- 常用的选项包括:
-L <起始行号>,<结束行号>
:只显示指定行号范围内的代码注释。-C
:对于重命名或拷贝的代码行,也进行代码行溯源。-M
:对于移动的代码行,也进行代码行溯源。-C -C
或-M -M
:对于较多改动的代码行,进行更进一步的溯源。--show-stats
:显示包含每个作者的行数统计信息。
版本切换:
git reset --hard 版本号
查看分支:
git branch -v
列出分支:
git branch
创建分支:
git branch 分支名
切换分支:
git checkout 分支名
切换并创建分支名:
git checkout -b 分支名
删除分支名:
git branch -d 分支名
合并分支(无冲突):
git merge 分支名
合并分支(有冲突):在master分支下合并dev分支,然后修改冲突代码,重新add,commit。在dev分支中,合并master主分支,让内容是最新版本
git merge dev
产生公钥:
ssh-keygen -t rsa
查看公钥:
cat ~/.ssh/id_rsa.pub
验证公钥:
ssh -T git@gitee.com
添加与推送远程仓库master:
git remote add origin 仓库地址
查看远程仓库:
git remote
推送远程仓库:
git push origin master
推送远程仓库(dev分支):
git push origin dev
建立关联:
git push --set-upstream origin master
git branch -vv (查看关联)
git push (建立好关系后,直接可以推送)
克隆命令:
git clone 仓库路径 本地目录