Git是什么
Git是分布式版本管理工具
1.下载
下载地址: https://www.git-scm.com/download/
2.安装
安装一直next就行了
安装完成在桌面单击鼠标右键,显示出上图中红线括出来的表示安装成功
3.创建本地仓库
打开Git Bash Here
①配置身份,设置用户名与邮箱
git config --global user.name "username" //你的git用户名
git config --global user.email "your email" .//绑定的邮箱
②查看配置的用户名和邮箱(和设置时差不多,去掉用户名和邮箱即可)
git config --global user.name
git config --global user.email
③创建代码仓库
用于保存版本管理所需要信息,所有本地提交的代码都会被提交到这里,如果有需要还可以在推送到远程仓库中
- 创建本地仓库目录
- git init (会在指定的目录下生成一个隐藏的.git文件夹)
④查询本地仓库
ls -al
⑤删除本地仓库
直接删除这个.git文件夹即可
⑥提交本地代码(只需要使用add与commit命令即可)
git add 文件名 //添加单个文件
git add 目录名 //添加一个目录
git add . //添加所有文件
git commit -m "版本描述" //提交
在commit命令的后面我们必须通过-m参数加上提交的描述信息,否则认为是不合法的
⑦将指定的文件或目录排除在版本控制之外
touch .gitignore
4.常用命令
①git清空内容
clear
②git比对上次
// An highlighted block
var foo = 'bar';
②git比对上次
使用git查看自上次提交后修改了的文件 : git status
使用git查看自上次提交后修改的所有的内容及其上下文: git diff
仅查看某一个文件修改后的内容: git diff 文件路径及其名字
结果中,减号代表删除的部分,加号代表添加的部分
③查看历史提交信息
查看所有提交信息:git log
查看一条提交信息: git log 提交记录的id -1
查看该条记录具体修改了什么:git log 提交记录的ID -1 -p
④撤销自上次提交后的所有更改
git checkout . 撤销自上次提交后的指定更改(如果本地代码被误删了,这个功能也能从本地仓库中下载最近一次提交的代码)
git checkout 指定文件路径【如果更改的内容已经进行了add,则无法撤销,即无法撤销已经add了的内容】
⑤撤销已添加的修改
- 先将修改重置为未添加状态:git reset HEAD 文件路径名
- 在通过:git checkout 修改 进行撤销
⑥显示某一版本更改详情
git show 版本号
⑦版本回退
方法一:
首先我们可以通过git log查看我们的提交记录, 我们需要从这里获取一个版本号,一般我们只需要前七位字符就够了
git reset --hard 要回退的版本号
方法二:
在Git中,用HEAD代表当前版本,上一个版本就是HEAD^,再上一个版本就是HEAD ^^ 依次类推!
git reset --hard HEAD^
4.Git分支
当我们要同时维护多个版本时,分支就尤其重要了,每个分支都可以代表一个版本
- 查看当前的版本库中有哪些分支
git branch -a
- 创建一个分支
git branch 分支名 //如git branch version2
若分支前有一个*号,表示当前分支为我们代码所在分支
- 切换当前分支
git checkout 分支名 //如: git checkout version2
在分支A修改并且提交的代码并不会影响到分支B
- 合并分支
git merge 分支名 //这样就会把分支合并到当前分支
- 删除分支
git branch -D 分支名
- 从远程克隆时(git clone 地址),只能克隆主分支。除非加上 -b 分支名(git clone -b dev 地址)
- 如果在分支A上进行了更改,然后却没有提交,那么在切换到分支B上时,会和分支B进行合并
- 创建一个分支后,要提交的话,需要先对现有内容进行一定的更改才行
5.Git远程仓库
创建远程仓库——>复制仓库地址——>克隆到本地——>开发管控
①几个本地和远程版本库交互的命令
git pull
功能:从服务器中的Git仓库中获取最新代码,并与本地代码自动merge,如果服务器中的代码与本地要提交的代码有冲突,冲突部分会在文件中体现
git push
功能:向服务器的Git仓库中提交本地Git仓库已修改的文件或目录
②如果本地已有仓库,我们可以通过两种方式将本地仓库推送到远程
方式一
git clone 仓库地址
先把代码克隆到本地,然后把克隆下来的所有文件复制到本地仓库的根目录下,然后执行add-commit-push流程
方式二
6.Git从远程仓库拉取代码的两种方式
①https
我们正常的clone代码一般就是采取的https协议
如果你使用https时每次都要输入用户名和密码的话,就按照如下操作即可
git bash进入你的项目目录,输入:
git config --global credential.helper store
然后你会在你本地生成一个文本,上边记录你的账号和密码。当然这些你可以不用关心。
然后你使用上述的命令配置好之后,再操作一次git pull,然后它会提示你输入账号密码,这一次之后就不需要再次输入密码了。
如果密码输入错误,却也给你保存了,这时就去Windows凭据上删除即可,修改流程:
②ssh
ssh方式除了用ssh密钥代替用户名和密码外,其他完全一样
所谓用ssh密钥代替用户名和密码即不管是项目发起者还是成员都应该先在本地创建ssh密钥,然后将公钥复制进入github上的个人setting中,然后分发地址时选择ssh方式的地址
具体操作:
在本地生成密钥
生成之前可以先检查下本地是否有ssh密钥,一般为.ssh文件夹,在本地打开git bash here 命令窗口:
$ cd ~/.ssh //如果有则进入
$ ls //查看当前所在文件的目录
没有的话就可以在本地打开git bash here 命令窗口,然后执行命令创建密钥了:
ssh-keygen -t rsa -C "youremail@example.com"
//代码参数含义:
//-t 指定密钥类型,默认是 rsa ,可以省略。
//-C 设置注释文字,比如邮箱。
//-f 指定密钥文件存储文件名
//youremail@example.com是你的在github注册时候使用的时候的邮箱
以上代码省略了 -f 参数,因此,运行上面那条命令后会让你输入一个文件名,用于保存刚才生成的 SSH key 代码,如:
当然,你也可以不输入文件名,使用默认文件名(推荐),那么就会生成 id_rsa 和 id_rsa.pub 两个秘钥文件
接着又会提示你输入两次密码(该密码是你push文件的时候要输入的密码,而不是github管理者的密码),当然,你也可以不输入密码,直接按回车。那么push的时候就不需要输入密码,直接提交到github上了,如:
接下来,就会显示如下代码提示,如:
当你看到上面这段代码的时候,那就说明,你的 SSH key 已经创建成功
查看 ssh 公钥内容:
$ cat id_rsa.pub
在码云上添加公匙:
检查是否配置成功:
ssh -T git@gitee.com
在第一链接时可能会问下你,你输入yes即可
然后当前项目拥有者就可以通过ssh类型地址进行clone并且无需密码就能push代码了:
git clone ssh地址
ok,使用ssh的方式和使用https比起来,就是添加密钥,并且用密钥来代替用户名和密码外,其他没什么区别,还是一样的分发地址(地址类型不一样),成员通过地址clone项目,然后创建自己的分支,然后合并到开发分支下,然后push到远程