Git
1、版本控制
SVN 集中式的版本控制系统,版本库集中放在中央服务器,工作的时候需要联网
Git是分布式的版本控制系统,没有中央服务器,每个人的电脑就是一个完整的版本库。工作的时候不需要联网
2、命令
# 查看系统config
git config --system --list
# 查看当前用户(global)配置
git config --global --list
# 编辑配置文件
git config --global -e
git config --global user.name "realguo" # 配置用户名
git config --global user.email 1101036063@qq.com # 配置邮箱
3、基本理论 核心
working directory # 工作目录 平时存放项目代码的地方
stage(index) # 暂存区 临时存放改动,本质是一个文件,保存即将提交的文件列表信息
repository(directory) # 资源库 仓库 保存所有提交过的版本的数据,head执行最新存放入库的版本
remote directory # 远程git长裤 远程仓库
4、本地仓库搭建
# 方法一
git init # 初始化
# 方法二 克隆一个项目到本地
git clone [url]
# 方法三:拉取指定分支
git clone -b 分支名 [url]
5、文件操作
文件的四种状态
# 未跟踪:在工作目录中,但是没有加入git库中
# git add 状态变为 staged
untracked
# 未修改:在git库中,工作目录中的内容和git库中的完全一样
# 被修改 变为modified
# git rm 从git库中删除,变为untracked
unmodify
# 修改了:在git库中,工作目录中的内容和git库中的不一样
# git checkout 状态变为unmodify 即还原
# git add 状态变为 staged
modified
# 暂存状态
# git commit 将修改同步到库中,之后文件变为unmodify
# git reset head filename 取消暂存,文件变为modified
staged
基本操作
# 查看文件状态
git status
# 添加所有文件到暂存区
git add .
# 提交到本地仓库
git commit -m "a new test file"
.gitignore
文件里面记录不需要进行版本控制的文件
*.txt # 忽略所有.txt结尾的文件
!lib.txt # 但 lib.txt除外
/temp # 进忽略项目根目录下所有文件,但temp除外
build/ # 忽略build目录下所有文件
doc/*.txt # 忽略dco目录下所有.txt结尾的文件
6、使用码云
6.1 ssh设置
设置本地绑定SSH公钥,实现免密码登录!
# 进入用户目录下 .ssh
ssh-keygen -t rsa # 生成公钥
# 将公钥放在码云上
在码云上新建仓库
# 公开仓库的话,要选择开源许可证 GPL APACHE
# 许可证:
1、开源是否可以随意转载
2、开源但是不能商业圣咏
3、不能转载
4、.....
6.2 SSH原理
1、SSH一种网络协议,用于加密登录
2、目前已经称为linux系统的标准配置
1、SSH登录原理
口令登录
存在的问题
# 中间人攻击,伪造公钥
1、如果有人拦截登录请求,冒充远程主机,将伪造的公钥发给用户,那么用户很难辨别真伪
2、不像https,SSH协议的公钥没有证书中心(CA)
公钥登录
1、本地生成一对密钥,并把公钥放到需要访问的服务器上。
2、如果需要连接到SSH服务器上,客户端软件就会向服务器发送请求,请求用本地的密钥进行安全验证
3、服务器收到请求后,先在该服务器上的主目录下寻找客户端的公钥,然后把它和客户端发来的公钥进行比较。
4、如果一致,服务器就用这个公钥加密“质询”(challenge)并把它发送给客户端软件
5、客户端本地接收到“质询”之后,就可用本地的私钥解密再把它发给服务器,即建立连接。
7、IDEA中集成git
一般用法
1、新建仓库
2、git pull
3、然后把内容复制到新建的项目里面
本地关联远程仓库
# 本地
git init
git add .
git commit -m "init"
git remote add origin 远程仓库地址
git pull --rebase origin master
git push
8、分支
git branch # 查看分支
git branch -r # 查看远程分支
git branch dev # 新建分支
git checkout -b [branch] # 新建分支 并切换分支
git checkout [branch] # 切换分支
git merge [branch] # 合并指定分支当当前分支
git branch -d [branch] # 删除分支
# 删除远程分支
git push origin --delete [branch]
git branch -dr [remote/branch]
9、push到指定分支
# 如果你本地的分支名称和远程名称相同,则使用以下命令:
git push origin branchName
# 如果本地的分支跟远程的分支不一样,则指定本地和远程的分支的名称:
git push origin localBranchName:remoteBranchName
10、版本回退和变基
git reset --hard 版本号
git reset --soft 版本号 返回指定版本,但是保留代码
# 查看版本号
git log
# 强制让远程仓库与本地同步
# 注意分支名不要搞错,谨慎对待远程master分支
git push origin 本地分支名:远程分支名 --force
# 合并commit
git rebase -i 版本号
# 添加源
git remote add origin ssh地址