01.Git

什么是Git

  1. Git是免费的
  2. 开源的分布式版本控制工具

什么是版本控制

版本控制是一种记录一个或若干个文件内容变化,以便来查阅特定版本修订情况的系统。

版本控制系统的分类

1.集中化版本控制系统

在这里插入图片描述

集中化版本控制系统诸如:CVS,SVN,Perforce等,都有一个单一的集中管理的服务器,保存所有文件的修订版本,而协同工作的人们都通过客户端连到这台服务器上,取出最新的文件或者提交更新。多年以来,这已成为版本控制系统的标准做法,这种做法带来了很多好处,例如,每个人都可以在一定程度上看到项目中其他人正在做什么。而管理员也可以轻松掌控每个开发者的权限,并且管理一个集中化的版本控制系统;要远比在各个客户端上维护本地数据库来得轻松容易。
事分两面,有好有坏,这么做最显而易见的缺点就是单点故障。如果装了版本控制系统的服务器宕机一小时,那么在这一小时内,谁都无法提交更新,也就无法协同工作。

2.分布式版本控制系统

由于上面集中化版本控制系统的那些缺点,于是分布式版本控制系统面世了。
在这类系统中,像Git,BitKeeper等,客户端并不只提取最新版本的文件快照,而是把代码仓库完整的镜像下来。
在这里插入图片描述

Git的安装

1.Git官网

Git官网——https://git-scm.com/

2.安装过程

没有列举出来的步骤默认即可
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

Git本地结构

工作区

写代码的地方

暂存区

打算提交还没有提交的代码

本地库

最终提交到本地库,存储了历史版本信息

代码托管平台

代码托管平台的任务就是帮助我们维护远程库,所谓的远程库就是保存在远端的仓库,常见的代码托管平台有的GitHub(国外的),Gitee(国内的),这些是外网的局域网的是GitLab
,GitLab需要自己搭建,GitHub与Gitee是现成的代码托管中心。
GitHub官网——https://github.com/
Gitee官网——https://github.com/

本地库与远程库的交互方式

团队内部协作

在这里插入图片描述

跨团队协作

在这里插入图片描述

常用命令

#设置全局用户名
git config --global user.name "shanguoyu"
#设置全局邮箱
git config --global user.email "1259591265@qq.com"
#将当前目录初始化为本地库
git init
#将文件或目录添加到暂存区
git add [目录/文件名]
#将文件或目录提交到本地库
git commit -m "此次提交信息" "提交文件名" 
#查看工作区和暂存区的状态
git status
#查看commit记录,数据过多有分页效果,下一页:空格,上一页:b,--pretty=oneline的作用是在一行显示不加也可以
git [--pretty=oneline/--oneline] log
#查看commit记录,效果与git --oneline log类似,只不过显示了回退需要几步
git reflog  
#回退或前进commit,--hard 参数可以让本地库指针移动的同时,重置暂存区,重置工作区,--mixed是本地库移动,暂存区移动但是工作区不移动,一般使用hard不适用mixed,soft是本地库动但是暂存区与工作区都不动用的也少一般参数都是hard
git reset --hard --mixed --soft [索引,可以用git reflog命令查看前面那段黄色的就是]
#查看工作区与暂存区的差异
git diff [文件名,直接不写就是比对所有文件]
#比较暂存区与本地库的差异
git diff [历史版本索引] [文件名]
#查看分支
git branch -v
#新建一个分支,但依然停留在当前分支
git branch [branch-name]
#切换分支
git checkout [branch-name]
#新建一个分支,并切换到该分支
git checkout -b [branch-name]
#克隆远程仓库
git clone [url]
#删除分支
git branch -d [branch-name]
#合并指定分支到当前分支
git merge [branch-name]
#列出所有远程分支
git branch -r
#拉取远程库代码,等于 fetch+merge
#--allow-unrelated-histories参数是可选的在没写本地分支名字的时候会自动合并到当前分支,并告诉git允许不想管历史合并
git pull [远程库地址] [分支名字]:[本地分支名] --allow-unrelated-histories
#推送代码到远程库
git push [远程库地址] [分支名字]
#因为远程库的HTTPS地址较长所以可以使用别名的方式访问,这个命令是查看别名
git remote -v
#添加别名
git remote add [别名] [远程库HTTPS地址]
#拉取代码到本地新分支中,配合合并分支使用
git fetch [url] [远程分支名称]:[本地分支名称,不需要存在会自动创建]
#远程仓库强制覆盖本地仓库命令
git fetch --all && git reset --hard origin/master && git pull
#强制推送到远程仓库,且覆盖远程代码库
git push -f --set-upstream origin master:master
#本地关联远程分支,其中origin/remote_branch是你本地分支对应的远程分支;your_branch是你当前的本地分支。
git branch --set-upstream-to=origin/remote_branch  your_branch

分支

什么是分支

在版本控制过程中,使用多条线同时推进多个任务。这里面说的多条线,就是多个分支。

通过一张图展示分支

在这里插入图片描述

分支的好处

同时多个分支可以并行开发,互相不耽误,互相不影响,提高开发效率
如果有一个分支功能开发失败,直接删除分支即可,不会对其他分支产生影响。

SSH免密登录(Win10)

为什么需要SSH免密登录

因为在push的时候每次都需要输入账号和密码很麻烦!

参考链接

https://gitee.com/help/categories/38

码云设置流程

  1. 进入git bash here
  2. 执行命令——cd ~
  3. 执行命令后三次回车确认——ssh-keygen -t rsa -C “xxx@xxx.com”
  4. 执行命令——cd ~/.ssh
  5. 执行命令——cat id_rsa.pub
  6. 复制上个命令展现出来的内容
  7. 进入自己的码云
  8. 进入设置
  9. 进入安全设置下面的SSH公钥
    10.粘贴内容到公钥里面点击确定
  10. 在push的时候使用ssh地址即可

IDEA整合Gitee

参考地址

https://gitee.com/help/articles/4117#article-header2

  1. 设置git.exe地址
    在这里插入图片描述
  2. 初始化当前项目(跟git init一样)
    在这里插入图片描述
  3. 添加文件到暂存区(当有文件没被追踪的时候会提示你是否add,勾选了选项就是不问你只要没被追踪的文件自动add)
    在这里插入图片描述
  4. commit
    在这里插入图片描述
    在这里插入图片描述
  5. 设置远程仓库
    在这里插入图片描述
    在这里插入图片描述
  6. pull与push
    在这里插入图片描述

解决github过慢

1.hosts域名映射增加

52.216.207.203  github-cloud.s3.amazonaws.com

2.刷新DNS缓存

ipconfig/flushdns

3.下载时域名修改(例子)

git clone https://github.com/mybatis/mybatis-3.git 
修改为
git clone https://github.com.cnpmjs.org/mybatis/mybatis-3.git
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and WebStorm
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839

# User-specific stuff
.idea/**/workspace.xml
.idea/**/tasks.xml
.idea/**/usage.statistics.xml
.idea/**/dictionaries
.idea/**/shelf

# Generated files
.idea/**/contentModel.xml

# Sensitive or high-churn files
.idea/**/dataSources/
.idea/**/dataSources.ids
.idea/**/dataSources.local.xml
.idea/**/sqlDataSources.xml
.idea/**/dynamic.xml
.idea/**/uiDesigner.xml
.idea/**/dbnavigator.xml

# Gradle
.idea/**/gradle.xml
.idea/**/libraries

# Gradle and Maven with auto-import
# When using Gradle or Maven with auto-import, you should exclude module files,
# since they will be recreated, and may cause churn.  Uncomment if using
# auto-import.
# .idea/modules.xml
# .idea/*.iml
# .idea/modules

# CMake
cmake-build-*/

# Mongo Explorer plugin
.idea/**/mongoSettings.xml

# File-based project format
*.iws

# IntelliJ
out/

# mpeltonen/sbt-idea plugin
.idea_modules/

# JIRA plugin
atlassian-ide-plugin.xml

# Cursive Clojure plugin
.idea/replstate.xml

# Crashlytics plugin (for Android Studio and IntelliJ)
com_crashlytics_export_strings.xml
crashlytics.properties
crashlytics-build.properties
fabric.properties

# Editor-based Rest Client
.idea/httpRequests

# Android studio 3.1+ serialized cache file
.idea/caches/build_file_checksums.ser

.idea/
.vscode
.gradle
mvnw
mvnw.cmd
*.iml
*.class
*.gitignore
*.mvn
LICENSE
target


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值