Git

133 阅读5分钟

主流的版本控制器

  • Git(代替BitKeeper)
  • SVN (Subversion)
  • CVS(Concurrent Versions System)
  • VSS (Micorosoft Visual SourceSafe)
  • TFS (Team Foundation Server)
  • ...

版本控制分类

本地版本控制

image.png

集中式版本控制

image.png

所有的版本数据都存在服务器上,用户的本地只有自己以前所同步的版本,如果不连网的话,用户就看不到历史版本,也无法切换版本验证问题,或在不同分支工作。而且,所有数据都保存在单一的服务器上,有很大的风险这个服务器会损坏,这样就会丢失所有的数据,当然可以定期备份。代表产品:SVN、CVS、VSS

分布式版本控制

image.png

每个人都拥有全部代码!这样会存在安全隐患!

所有版本信息仓库全部同步到本地的毎个用户,这样就可以在本地查看所有版本历史,可以离线在本地提交,只需在连网时push到相应的服务器或其他用户那里。由于每个用户那里保存的都是所有的版本数据,只要有一个用户的设备没有问题就可以恢复所有的数据,但这增加了本地存储空间的占用。

不会因为服务器损坏或者网络问题,造成不能工作的情况

GIT和SVN的区别

  1. GIT是分布式版本控制系统,SVN是集中式版本控制系统
  2. GIT不要中央服务器且不需要联网,SVN需要中央服务器且必须联网

GIT下载及安装

  • 正常渠道:git-scm.com
  • 镜像渠道:registry.npmmirror.com/binary.html…
  • 配置环境变量:只是为了在任意地方使用git,配不配都可以,安装的时候可以选择自动配置

GIT配置命令

  1. git config -l 配置
  2. git config --system --list 系统配置
  3. git config --global --list 当前用户配置
  4. git config --global user.name "xxxx" 配置用户名(必须配置)
  5. git config --global user.email "xxxxxx" 配置邮箱(必须配置)

GIT基本理论(重点!核心!)

  1. Git分为三个区域(算上远程仓库就有4个)
  • 工作区 Workspace
  • 暂存区 Stage
  • 本地仓库 Repository
  • 远程仓库 Remote Repository (例如GitHub Gitee)
  1. 原理图解

image.png

GIT项目搭建

image.png

1.创建Git仓库

  • git init 创建本地仓库,生成.git,包含版本信息等等
  • git clone "url",下载远程仓库的资源

2.Git忽略文件

image.png

Gitee仓库创建+克隆指南

  1. 创建仓库,语言选java、添加java .gitignore、证书可以选GPL3.0
  2. 克隆仓库主要分为两种HTTPS、SSH
  • HTTPS
    1. 复制HTTPS项目链接
    2. git clone HTTPS项目链接
    3. 输入gitee的账号/密码,完成克隆
    4. 输入一次密码后,git push/pull远程仓库可能会免密,这是因为gitee账号/密码被记录到了用户本机的钥匙串中,删掉钥匙就无法做到免密了
    5. 因此不推荐这种方式,很不安全
  • SSH
    1. 检查本机是否有创建公钥/私钥:ls -al ~/.ssh
    2. 若没有创建则使用命令生成 ssh-keygen -t rsa -C "自己的邮箱"
    3. 查看公钥 cat /Users/当前用户名/.ssh/id_rsa.pub
    4. 复制公钥,到Gitee上录入SSH公钥,后续使用git push/pull远程仓库Gitee就可以免密
    5. 使用ssh -T git@gitee.com,检查SSH公钥是否录入成功
    6. 复制SSH项目链接
    7. git clone SSH项目链接,完成克隆
    8. 推荐使用

GitHub仓库创建+克隆指南

  1. 创建仓库
  2. 通过SSH克隆(同gitee)

Git命令

  1. git clone "URL" // 从远程仓库克隆项目
  2. git branch // 查看分支
  3. git branch 新分支名 // 创建分支
  4. git checkout -b 新分支名 // 创建并切换到新分支
  5. git checkout 分支名 // 切换分支
  6. git branch -d 分支名 // 删除分支
  7. git branch -D 分支名 // 强制删除分支
  8. git branch -d -r 分支名 // 删除远程分支
  9. git add 文件 // 文件从untracked(未跟踪)添加到暂存区
  10. git commit -m "提交内容" // 文件从暂存区提交到本地仓库
  11. git push origin 当前分支 // 文件从本地仓库推送到远程仓库
  12. git pull origin 分支名 // 获取分支/远程分支
  13. git reset HEAD^ // 回退到commit上一个版本
  14. git reset HEAD 指定版本号 // 回退到commit的某一个版本
  15. git reset 文件 // 文件从暂存区移动到工作区
  16. git checkout 文件 // 在工作区中,文件从修改状态回滚到修改前的状态
  17. git fetch 分支名 // 拉取远程仓库的代码,但不会做合并,pull会自动合并,fetch需要单独做merge操作
  18. git merge // 合并文件
  19. git remote -v // 查看当前项目的远程仓库地址
  20. git remote set-url origin "url" // 替换远程仓库的地址
  21. git branch -r // 查看远程分支
  22. git branch -dr 远程分支名 // 删除远程分支
  23. git rebase
  24. git rebase -i HEAD~数字
  25. git rebase -i 哈希码
  26. git cherry-pick
  27. git branch -f 分支名
  28. git stash
  29. git stash list
  30. git stash show stash@{no}
  31. git stash pop
  32. git stash apply stash@{no}
  33. git stash drop stash@{no}
  34. git stash clear
  35. git stash --help

给已有的项目加上Git

  • 方法1
  1. 到项目目录下执行git init
  2. 依次执行git add 需要的文件git commit -m "提交内容描述"到本地仓库
  3. 执行git remote add origin "远程仓库地址"
  4. 执行git pull origin master,一般来说默认分支是master,可以在gitee上设置
  5. 如果pull时遇到仓库编号不一致的错误,可以执行git pull origin master --allow-unrelated-histories
  6. 最后执行git push origin master,把项目推送至到远程仓库
  • 方法2
  1. 把方法1的第一个步骤改为,复制一个其他项目的git基础文件即可

idea创建springboot项目

  1. 打开克隆下来的仓库
  2. 创建新模块[new Module]

image.png

3.选择依赖

image.png