* `git`是一个优秀的分布式版本控制系统,支持跨网络的软件本本控制;
* 版本库: 通常来说是一个目录,在这个目录里面包含的文件都是可以被`git`管理起来的,每个文件的修改,删除,`Git`都是可以进行追踪的,用于在需要的时刻进行还原;
* 配置:
* 使用命令行配置,自己的用户信息
* `git config --global user.name`:通常是`Github`的用户名
* `git config --global user.mail`:通常是`Github`的注册邮箱;
* 创建本地仓库:
* 首先可以在一个适合的地方创建一个空目录
* 然后进入这个目录,执行git
命令进行初始化
* 对于这个目录里面的.git
目录里面的内容一定不能够进行修改
* 创建文件,将文件添加到交给git
进行管理
* 提供版本,并且提供注释信息
* 几个基本的命令;
* git status
:用户输出当前仓库的状态
* 如果修改文件内容在进行查看,就会出现是否提交的提示
* git diff
:用于查看具体的内容变化
* 如果确定当前的内容是准确的,就可以进行提交
* git log
;用于查看提交日志,
* 只显示提交的信息
* 回退到上一个版本
* 会退到上上一个版本git reset --hard HEAD^^
* 会退到第几个版本git reset --hard HEAD~num
* 会退到具体的某个版本git reset --hard 具体的版本号码
* 上面是回退到之前的版本,如果需要回退到之后的版本,就需要具体的版本号;
* 现在回退到第三个版本
* 对于版本的回退,不需要完整的版本号码,只要输入的版本号码可以唯一的识别各个不同的版本就可以了
* git reflog
: 用于查看历史的提交记录
* 通常来说add
命令是将文件放到缓冲区,通过commit
命令将文件提交到版本区
* add
执行的操作
* commit
执行的操作
* git checkout --filename
:
* 如果filename
文件自修改后还没有放到暂存区,现在撤销修改,就会回到和版本一样的状态;
* 如果fileName
文件已经添加到暂存区,又进行了修改,进行撤销之后,就回到添加到暂存区后的状态
* 总之使filename
文件回到最后一次git commit
或者git add
的状态一致
* 远程仓库
* 远程仓库一般选择github
,也就是将代码托管到github
官网上面
* 首先需要输入ssh-keygen -t rsa -C '注册的邮箱地址'
* 上面的页面使用回车就可了,需要记住的是.ssh
秘钥保存的目录,找到id_rsa.pub
这个文件
* 登录github
,选择setting
,找到下面的页面
* 选择new SSHKey
* 这里添加的是公钥,通过上面的步骤,就完成了主机和github
的通信,这个通信通过成通过私钥签名,公钥验证;
* 对于上面过程的测试
* 在主页选择start a project
,然后按照下面的页面添加信息
* 上面的信息可以根据英文提示填写,一般来说选择默认的就可以了
* 关联远程仓库,这个关联操作是电脑关联远程仓库
*然后继续执行,进行关联操作
* 删除关联是通过git remote rm origin
* 在将本地文件推送到远程仓库之前,首先应该拉取远程仓库的软件到本地
* 按照第一次的会出错,因为是两个无关的历史
* 拉取成功之后的文件
* 然后执行推送命令
* 查看github
就会出现新的内容
* 如果仍然出错,就不要在本地库里面进行操作,重新创建目录,然后进行拉取操作;
* 一把来说是先有远程库,然后拉去远程库到本地;
* 拉取到的数据和远程库是一样的,在完成代码之后就可以进行提交;
*一个特殊文件.gitignore
: 通常来说,试讲不需要向远程仓库推送的文件名写到这个文件里面;
* 分支管理
* 是为了避免多个人协同开发的时候,出现自己代码的错误或者未完成,导致别人的代码出现错误,分支是可以合并的;
* 分支是每个人独立的,可以进行代码的提交等操作,这些并不影响别人在原有的分支上面进行编码,自己也可以进行代码的保存,在项目的最后进行代码的合并;
* 分支的操作:
* 创建分支:
*git branch 分支名
* 查看创建的分支
* git branch
* 切换分支
* git checkout 分支名
* 创建并且进行切换
* git checkout -b 分支名
* 分支的合并,首先需要在master
分支上,然后才可以将其他分支上面的数据合并到master
上面;
git merge 分支名
- 如果需要在本地推送,并且创建新的分支使用
git push --set-upstream origin 分支名
* 无论是从master
还是branch
的分支上面拉取的数据,最后本质上都是是master
分支,拉取下来之后,可以自己创建自己的分支,最后选择需要拉取的分支;
* 如果多个分支包括主分支都进行了提交操作,并且进行了合并主分支上面的内容会出现混乱,master
上面就会显示每个人的操作,只能够手动选择留下那些内容;
* 查看文件的内容
* 这里需要选择,是否保留master
分支上面的内容
* 查看分支的合并图
* 分支策略:master
分支是十分稳定的,不建议在上面进行修改操作,所有的操作都应该是自己创建的branch
上面.需要的时候进行合并操作,应该创建一个dev
,用来检查合并的操作是否是规范的,如果规范,在提交各master
- 标签管理
- 创建标签
git tag 标签名 commitID
:指定commit ID
打标签git tag -a 标签名 -m '标签信息'
:用于指定标签信息git show 标签名
:查看说明文字
git tag -d 标签名
:用于删除不需要的标签- 切换到标签
v1.0
- 推送标签到远程仓库
- 一次性推送本地所有标签
git push origin --tags
删除已经推送到远程的标签
先本地删除
git tag -d 标签名
- 远程删除
git push origin :refs/tags 标签名