这是我参与「第三届青训营 -后端场」笔记创作活动的第2篇笔记
Git是什么
Git是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。
基本原理:
- 每个库都存有完整的提交历史,可以直接在本地进行代码提交
- 每次提交记录的都是完整的文件快照,而不是记录增量
- 通过Push等操作来完成和远端代码的同步
优点:
- 分布式开发,每个库都是完整的提交历史,支持本地提交,强调个体
- 分支管理功能强大,方便团队合作,多人协同开发
- 校验和机制保证完整性,一般只添加数据,很少执行删除操作,不容易导致代码丢失
缺点:
- 相对SVN更复杂,学习成本更高
- 相对大文件的支持不是特别好(git-lfs工具可以弥补这个功能)
Git基本使用方式
Git基本命令
获取本地仓库
要使用Git对我们的代码进行版本控制,首先需要获得本地仓库
- 创建一个空目录作为我们的本地Git仓库
- 执行git init
- 如果创建成功后可在文件夹下看到隐藏的.git目录
其他参数
--initial-branch初始化的分支
--bare 创建一个裸仓库(纯Git目录,没有工作目录)
--template 可以通过模板来创建预先构建好的自定义git目录
Git Remote
查看Remote
git remote -v
添加Remote
git remote add origin_ssh git@github.com:git/git.git
git remote add origin_http https://github.com/git/git.git
Git Remote &Git Add
git add 单个文件名|通配符(工作区 -> 暂存区)
git commit -m '注释内容'(暂存区 -> 本地仓库)
分支
查看本地分支
git branch 创建本地分支 git branch 分支名 切换分支 git checkout 分支名
git checkout -b 分支名(创建并切换) 合并分支 git merge 分支名称
版本回退
命令形式
git reset --hard commitID(commitID可以使用git-log或git log指令查看) 查看已删除的记录 git reflog
Git研发流程
添加远程仓库
此操作是先初始化本地库,然后与已创建的远程库进行对接
git remote add <远端名称><仓库名称> 远端名称,默认是origin,取决于远端服务器设置
仓库路径,从远端服务器获取此URL
推送到远程仓库
命令:git push [-f][--set-upstream][远端名称[本地分支名][:远端分支名]]
如果远程分支名与本地分支名相同,则可只写本地分支
git push origin master
本地分支与远程分支的关联关系
可用git branch -vv 命令
从远程仓库克隆
命令:git clone<仓库路径>[本地目录]
本地目录可以省略,会自动生成一个目录
从远程仓库中抓取和拉取
抓取命令:git fetch [remote name][branch name]
- 抓取指令就是将仓库里的更新都抓取到本地,不会进行合并
- 如果不指定远端名称和分支名,则抓取所有分支
拉取命令:git pull [remote name][branch name]
- 拉取指令就是将远端仓库的修改拉取到本地并自动进行合并,等同于fetch+merge
- 如果不指定远端名称和分支名,则抓取所有分支
铁令
- 切换分支前先提交本地修改
- 代码及时提交,提交过了就不会丢
- 遇到任何问题都不要删除文件目录