1.什么是版本库?
仓库=>文件夹=>存储代码
只要在git仓库内部的全部操作都会记录(日志),可以将指定的某个操作进行还原、删除、修改
安装后设置git姓名和邮箱:
git config -- global user.name " "
git config -- global user.email " "
git init : 将当前文件夹变成文件仓库
git add 文件名称 : 将本地文件添加到缓冲区
git add * : 将所有本地文件添加到缓冲区
git commit -m " " : (从缓冲区)提交消息
git log : 查看对当前仓库所有的操作日志
git log --pretty=oneline : 简化日志展示方式
git reset --hard HEAD^ : 返回上一个版本
git reset --hard HEAD^ : 返回前两个版本
git reset --hard HEAD~数量 : 返回前n个版本
git reset --hard 版本号 : 前几位不同就可以
git relog : 展示操作日志
工作区(本地文件):新建文件,没有被git管理
缓冲区 :添加到缓冲区但是还没有被提交到仓库
仓库 : 完全被git管理
git status : 查看当前仓库中文件的所有状态
changes to be committed:缓冲区的改变
changes not staged for commit:git仓库的改变
untracked files:新建文件
git checkout --文件名 : (对缓冲区的文件使用)让文件返回之前状态,而且在日志中不显示
git rm 文件名 : 删除仓库中的文件
2.分支
在版本控制器中,每一次提交就会生成一个版本线,在git中这个分支线被称为分支(master)。
HEAD默认指向master分支,一开始git仓库只有一个master分支。
git branch 分支名称 : 创建分支(会将当前所在分支的文件复制一份到自己的分支中)
git branch : 查看当前仓库下面的所有分支
git checkout 分支名称 : 切换分支
git checkout -b 分支名称 : 创建(会将当前所在分支的文件复制一份到自己的分支中)并进入该分支
在主分支master下,创建文件a.txt并提交,该文件处于master分支下,创建一个新分支dev并切换到新分支dev下,此时就看不到文件a.txt了
git merge 分支名称 : 将该分支合并到当前所在分支下
git branch -d 分支名称 : 删除该分支
合并:
如果对同一名称的文件的同一行进行不同的操作
(1)将子分支合并到父分支上,合并的时候会出现冲突。
(2)将父分支合并到子分支上,父分支会覆盖子分支内容。
(3)两个平级的分支,将A分支合并到B分支,B分支中会包含A分支的所有内容
3.本地仓库和远程仓库(SSH遵循Linux协议)
将本地仓库和远程仓库进行关联:
git remote add 远程仓库名称 仓库地址
git remote -v
免密登录:
https :第一次必须输入用户名和密码,以后可省略
ssh : 必须配置密钥才可以登陆
ssh-keygen -t rsa -C '提交者名称'
打开码云,单机设置->ssh公钥->添加确定
拉取(fetch):
将远程仓库的内容分支下载到本地(但不合并);
git fetch origin master:temp
在本地新建一个temp分支,并将远程仓库的master分支的代码下载到本地分支上面;
使用 git diff temp 可以比较当前本地仓库和temp仓库;
使用 git merge temp就可以将远程仓库的分支合并到当前的仓库。
抓取(pull):
将远程仓库的内容分支下载到本地并合并;
git pull 远程仓库名称
git merge 远程仓库名称/分支
推送(push):
将本地仓库的内容分支推送到远程仓库,第一次输入命令:git push -u origin master,
使用-u参数是推送内容并关联分支。下次提交可以直接使用:git push origin master,把最新内
容推送到远程仓库。