文章目录
一、Git简介与安装
1.Git概述
发展史:
git是在2005年的时候,由Linux之父Linus花两周时间开发的分布式版本控制系统
作用:
分布式版本控制
优点:
1.速度快
2.简单的设计
3.对非线性开发模式的强力支持(允许上千个并行开发的分支)
4.完全分布式
5.有能力高效管理类似 Linux 内核一样的超大规模项目(速度和数据量)
2.Git与Svn的区别
共同点:
都是分布式版本控制工具
不同点:
-
Svn:所有的电脑都连接到某一台服务器中,一旦断网就连接不到了
-
Git:git会先提交到本地仓库去,先在本地仓库来进行版本控制,如果需要多人配合开发,那么就只需要把你的版本推送到他的电脑即可
3.协作开发流程
4.Git安装
git的安装其实没有什么需要选择的东西一路next即可
如果有什么有需要注意的话那一定是下面这个,其他的没有选择的必要
5.Git的配置
配置签名:
git config --global user.name “nameVal”
配置用户名
git config --global user.email “emailVal”
配置邮箱
二、Git命令
1.创建版本库
步骤:
1.创建一个文件夹
2.进入文件夹
3.初始化版本库
命令:
//创建文件夹
mkdir 文件夹名
//进入文件夹
cd 文件夹名
//初始化版本库
git init
2.添加文件并提交
步骤:
1.创建文件或修改文件
2.把新文件或修改后的文件添加到临时区
3.把临时区的文件添加到本地库
4.把本地库的文件推送到外部或代码平台
命令:
//把文件添加到临时区
git add 文件名
//把文件提交到本地库
git commit -m "备注信息"
//把文件推送到平台
git push 连接名 分支名
3.工作区、暂存区、版本库
工作区:
其实就是你创建的文件夹,也就是你初始化仓库的那个文件夹
暂存区:
临时区,其实就是一个临时放代码的地方,这里必须要提交到本地库才有数据
版本库:
工作区下的隐藏目录.git文件夹下,被称为版本库,存放的就是每次提交到版本库的信息,也可以称为本地库
4.文件的修改、状态、日志
比较差异:
//拿仓库中的这个文件的最新版和工作区的文件对比
git diff 文件名
查看状态:
git status
查看日志:
//查看配置信息
//如果需要翻页,enter或者小键盘↓来翻页移动,退出ctrl+c退出
git log
//美化缩小版
git log --oneline
5.版本回退
退回到某个版本:
git reset --hard 版本号
6.撤销修改
//撤销工作区的修改
git checkout -- 文件名
//撤销暂存区的修改
//1.先撤销暂存区的修改
get reset head 文件名
//2.再撤销工作区的修改
git checkout -- 文件名
7.忽略文件
作用:
上传时忽略这些文件,因为写好代码测试运行之后,会有一些生成文件,而多人协作的时候别人不需要你这些文件,所以就要忽略这些不需要的文件。
创建方式:
在当前工作区创建.gitignore忽略文件
配置信息:
# 1: 打开`git bash here` 输入如下命令:
vim .gitignore
target
*.iml
.idea
# 2: 保存退出
:wq
gitignore 语法规则:
空行或是以 # 开头的行即 注释行,将会被忽略。
示例如下:
# 忽略所有 .a 文件
*.a
# 递归忽略 build/ 文件夹下的所有文件
build
# 忽略 /doc/notes.txt,不包括 doc/server/arch.txt
doc/*.txt
# 忽略所有的 .pdf 文件 在 doc/ directory 下的
doc/**/*.pdf
三、Git上传远程仓库
1.添加远程仓库地址:
# 执行此命令必须要进入该仓库对应的工作区
# 为了方便记忆,这个连接名可以随便改
# github
git remote add origin https://github.com/pkxing1/gitdemo.git
# 码云
git remote add origin2 https://gitee.com/leesiuwah/gitdemo.git
# 删除之前关联:
git remote rm origin
git remote add origin 改成新的地址
2.同步本地仓库到远程仓库:
# github
git push -u origin master
# 码云
git push -u origin2 master
3.克隆远程仓库到本地:
# 克隆远程仓库到本机
# git clone ssh/https
# github
git clone https://github.com/pkxing1/gitdemo.git
# 码云
git clone https://gitee.com/leesiuwah/gitdemo.git
4.多人协作容易出现的问题:
! [rejected] master -> master (fetch first)
error: failed to push some refs to 'https://gitee.com/kekesam/pingyougou2.git'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
解决方案:
//说明: 它会把远程仓库中所有的信息全部清空,在把本机仓库版本提交上去。
git push -f origin master
5.配置ssh协议登录
为什么使用SSh协议登录:
ssh协议: 免密登录,加密传输
https协议: 用户名与密码登录
加密方式:
非对称加密:加密和解密使用不同的秘钥
公钥:加密,私钥解密
私钥:加密,公钥解密
对称加密:加密和解密使用同一个秘钥。
创建SSH密钥
-
Git-bash中已经集成了ssh功能,所以我们只需要简单的命令,即可生成密钥:
命令: ssh-keygen -t rsa
一路回车向下走,不要输入任何内容即可!
ssh-keygen -t rsa 一路三个回车
-
执行命令完成后, 在C:\Users\Administrator
\
.ssh下面生成公钥和私钥: -
具体步骤如下:
第一步: 打开命令工具"git bash here" 输入命令 “ssh-keygen -t rsa” 生成密钥和公钥
ssh-keygen -t rsa
第二步: 然后将
C:\Users\Administrator\.ssh
生成的公钥文件【id_rsa.pub】内容复制出来第三步:
-
打开gitee官网–【登录】–【设置】-【SSH公钥】
-
打开github官网–【登录】–【settings】-【SSH and GPG keys】
第四步: 测试和体验ssh的免密操作
-
添加远程仓库和本地仓库的关联:(origin 是默认的远程版本库名称)
# github git remote add origin git@github.com:zhjpkx/gitdemo.git # 码云 git remote add origin2 git@gitee.com:zhjpkx/gitdemo.git
提示:如果你想更换远程仓库的地址:
git remote rm origin # 删除原来的origin git remote rm origin2 # 删除原来的origin2 # 然后在执行 git remote add origin 远程仓库地址
-
提交代码到远程仓库中:
git push origin master git push origin2 master
-
克隆远程仓库到本机:
# github git clone git@github.com:pkxing1/gitdemo.git # 码云 git clone git@gitee.com:leesiuwah/gitdemo.git
注意:新克隆下来的远程仓库访问名称默认为 origin
-
拉取最新代码到本机
git pull origin master
注意:记得将https地址更换ssh地址。
-
6.分支的创建、切换、合并和删除
创建分支:
git branch dev 创建分支 dev
git checkout dev 选中当前分支 dev
# 注:上面两个命令可以组合成一个复合命令
git checkout -b dev
# git checkout -b dev = (git branch dev + git checkout dev)
查看分支:
git branch
合并分支:
# 切换回master分支
git checkout master
# 将dev下面的内容全部合并到master
git merge dev
删除分支:
git branch -d dev
7.git命令总结
命令 | 含义 |
---|---|
git init | 初始化仓库 |
git add | 添加到暂存区 |
git commit -m “日志信息” | 提交到本地仓库 |
git status | 查看状态 |
git log 或者 git log --oneline 或 git reflog | 查看日志 |
git diff | 查看版本差异 |
git checkout – 文件名 | 撤销工作区修改 |
git reste --hard 文件名 | 撤销暂存区修改 |
git reset --hard 版本号 | 回退到某个版本 |
git remote add 连接名 仓库地址 | 本地仓库关联远程仓库 |
git remote rm 连接名 | 删除关联的远程仓库 |
git push 连接名 分支名 | 推送本地代码到远程仓库 |
git pull 连接名 分支名 | 拉取远程仓库代码 |
git clone 远程仓库地址 | 克隆远程仓库代码 |
git brancd 分支名 | 创建分支 |
git checkout 分支名 | 切换分支 |
git merge 分支名 | 合并分支 |
git branch | 查看当前分支 |
git branch -d 分支名 | 删除分支 |
四、客户端TortoiseGit
概述:
一个带有GUI界面的git,配合git使用,可以让我们在界面里操作,而不需要写命令
虽然是带GUI的,但是由于我们经常在编译中直接使用,所以很少会用这个
而且因为可以配置成中文的没有任何操作难度,所以难点就只剩下安装了
安装:
小乌龟的安装其实也没有什么难度,也没有什么比较难的配置
其实只有两个需要配置的点,一个是git的路径,一个是用户名和email
如果你不喜欢英文,安装好之后可以直接去官网下载中文包
五、IDEA操作Git
这点其实没有太多要说的,如果有不清楚的可以去看一下我之前的另一个关于IDEA操作Git的文章:IDEA git上传码云、GitHub、华为云
关于实际操作,可能遇到的问题就是版本冲突了
那什么是版本冲突呢?
其实就是多个人同时修改某个公共部分的代码,使得合并分支的时候不能兼顾
接下来就说一下版本冲突在IDEA中的操作
IDEA解决冲突
制造冲突:
1.先在主分支创建一个类,并写几行代码,并提交到本地库
2.创建分支,然后再分支中修改代码,并提交到本地库
这表示已经切换到了分支中
3.切换回到主分支修改并提交到本地库
4.尝试合并分支,也就是在这里出现错误
解决方案:
1.选择合并方式
2.选择要自己合并
3.比较双方的代码,然后根据需要选择,顶上面的箭头就可以直接把代码拿过来了。修改好之后点apply就这样了
4.记得提交代码到本地库,看到这样就表示合并分支彻底完成了