Git(简介、基本使用、远程仓库操作、常用命令集、IDEA中操作Git、gitee远程仓库邀请成员)

一、git简介

1. Git概念

Git 是一个免费的、开源的分布式版本控制系统,可以快速高效地处理从小型到大型的 项目。

2. 版本控制工具的作用

  1. 协同修改 :多人并行不悖的修改服务器端的同一个文件。
    数据备份 不仅保存目录和文件的当前状态,还能够保存每一个提交过的历史状态。
  2. 版本管理 :在保存每一个版本的文件信息的时候要做到不保存重复数据,以节约存储空间,提 高运行效率。这方面 SVN 采用的是增量式管理的方式,而 Git 采取了文件系统快照的方式。
  3. 权限控制: 对团队中参与开发的人员进行权限控制。 对团队外开发者贡献的代码进行审核——Git 独有。
  4. 历史记录 :查看修改人、修改时间、修改内容、日志信息。 将本地文件恢复到某一个历史状态。
  5. 分支管理: 允许开发团队在工作过程中多条生产线同时推进任务,进一步提高效率

3.git优势

  1. 大部分操作在本地完成,不需要联网
  2. 尽可能添加数据而不是删除或修改数据
  3. 分支操作非常快捷流畅
  4. 与 Linux 命令全面兼容

二、Git的基本使用

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

1.安装及初始化本地仓库

仅普通开发者来说,一般选择安装路径后一直选择下一步即可。需要注意的是安装路径不能报考中文。
新建一个文件夹当git仓库,鼠标右击,点击git Bash here
在这里插入图片描述
输入 git --version 输出版本信息证明安装成功
填写用户名和邮箱作为一个标识
git config --global user.name “用户名”
git config --global user.email “邮箱地址”
在本地创建一个目录作为 git 仓库,并通过 git init 命令进行初始化,初始化成功后会在 当前目录生成一个.git 目录文件,不要删除及修改。

在这里插入图片描述
初始化完成后,该目录下会出现一个.git的隐藏文件
在这里插入图片描述

2.git存储流程

代码工作区—>执行 git add —>暂存区(临时存储)—>执行 git commit—>本地库(历史版 本) 工作区、暂存区和本地仓库,逻辑上是本地计算机。

当我们新建一个文件时,文件位于 工作区,处于已修改(modified)状态,表明文件已进行了修改,但还没有提交保存;通过 命令 git add 将其添加到暂存区,文件是已暂存(staged)状态,表示把已修改的文件放到 下次提交时要保存的清单中;通过命令 git commit 将文件放入本地仓库,文件为已提交 (commited)状态,表示该文件已经被安全地保存在本地数据库中,到这一步可以说是成 功生成了一个新的版本。

远程仓库用来将本地仓库上传到网络,实现备份、共享和合作。

例:我们在仓库目录下新建一个test.txt文件
在这里插入图片描述
在这里插入图片描述
提交之后,会在.git的objects/5e/ 下多一个二进制文件
在这里插入图片描述
修改test.txt内容后重新提交
在这里插入图片描述
提交结果显示:test.txt文件没有变化
输入git status
在这里插入图片描述
结果为文件修改后没有被提交,你需要把它添加到缓存中再进行提交
对文件进行先添加到缓存中,再提交,结果添加成功
在这里插入图片描述
使用 git add 文件名 将操作系统中的文件存放在git缓存中,使用 git commit将缓存中的文件提交到git中做文件的版本管理,其会把同目录下的同名文件做增量保存,其实它是一个文件快照。同目录下的同名文件,上一次提交后的文件会变成本次提交的一个文件快照。旧的版本形成快照,新的版本保存起来。

3. Git 常用命令

[1]添加文件

git add 文件名
将文件添加到暂存区
在这里插入图片描述

[2]提交文件

git commit -m “提交注释”
将文件提交到本地仓库
在这里插入图片描述

[3]查看状态

git status 查看目录中是否还有文件未提交
在这里插入图片描述
表示工作区的文件和git中保存的文件一致,没有什么需要提交的

在这里插入图片描述
则表示工作区的文件和git中保存的文件不一致,需要添加并保存。

[4]查看文件修改对比差异

git diff :比较文件差异
git diff [文件名] :将工作区中的文件和暂存区进行比较
在这里插入图片描述
其中, - 表示管理中的内容, + 表示未管理的内容

[5]查看日志

git log :查看历史记录,显示从最近到最远的日志
在这里插入图片描述
简化日志显示:git log --pretty=oneline
只显示一行,显示的信息为 版本号 和 注释
在这里插入图片描述
查看简短日志
git reflog 查看历史记录,并以简短信息显示
在这里插入图片描述
HEAD@{移动到当前版本需要多少步}

[6]前进回退版本

git reset --hard [局部版本号] 前进后退版本
在这里插入图片描述
此时工作区的文件则切换成了该文件指定版本

[7]文件删除

rm [文件名]
彻底删除:将文件添加到缓存区中,然后提交
在这里插入图片描述

[8]文件恢复

对于彻底删除的文件,使用回退版本的方式恢复文件
在这里插入图片描述
此时该文件恢复到了工作区
若删除文件后未提交可以使用 git checkout – 文件名 来恢复
在这里插入图片描述

[9]分支操作

在版本回退那里,已经知道每次提交,git 都会把他们串成一条时间线,这条时间线就 是一个分支。截止到目前,只有一条时间线,在 git 里,这个分支叫主分支,即 master。切 换分支即可以理解为切换时间线。 在版本控制过程中,使用多条线同时推进多个任务。每条线成为一个分支。 例如:
在这里插入图片描述

  1. 创建分支 git branch 分支名
  2. 查看分支 git branch –v
  3. 切换分支 git checkout 分支名
  4. 合并分支(merge/rebase)
    4.1. 第一步:切换到接受合并的分支
    git checkout 接受合并的分支名
    4.2. 第二步:执行 merge 命令
    git merge 待合并的分支名
  5. 删除分支命令 git branch –d 分支名

三、远程仓库操作(以码云为例)

1.在码云注册账号

地址: https://gitee.com/

2.创建SSH Key

因为数据保存在远程服务器,服务器需要对你的身份进行识别,SSH key 可以让你的电 脑和码云之间建立安全的加密连接。
2.1. 运行命令 ssh-keygen -t rsa -C “你的邮箱”,会有三次提示输 入,直接回车即可。
在这里插入图片描述
2.2. 在用户目录下生成 .ssh 目录,里面有一个 id_rsa.pub 文件, 保存的就是公钥。
在这里插入图片描述
登录码云,在 SSH 公钥文本框里粘贴 id_rsa.pub 文件的内容
在这里插入图片描述
输入码云密码后完成公钥的添加
在这里插入图片描述
2.3. 验证秘钥是否添加成功 执行命令 ssh -T git@git.oschina.net
Git 使用 SSH 连接第一次验证服务器的 key 时,需要你进行确认,此时输入 yes 回车即 可。
在这里插入图片描述

3.创建远程仓库

在这里插入图片描述
新建完成后在个人主页可以找到仓库
在这里插入图片描述

4.克隆远程仓库到本地

4.1. 复制远程仓库地址
进入仓库后选择对应协议复制链接在这里插入图片描述
4.2. 创建一个新文件夹作为仓库目录,使用git base进入该目录
在这里插入图片描述
4.3. 在 bash 窗口中执行 git clone + 复制的地址,回车
在这里插入图片描述
4.4. 进入克隆目录,添加新文件
在这里插入图片描述
在该仓库工作区新建一个Test.java文件
在这里插入图片描述
4.5. 执行 git add . 将工作区所有内容上传到暂存区
4.6. 执行 git commit -m ‘本次提交的注释’ 提交到本地仓库
在这里插入图片描述
4.7. 执行 git push 别名 分支名
其中别名和分支名可省略。将 本地仓库所有内容上传到远程仓库码云 ,码云刷新可看到最 新内容
在这里插入图片描述
在这里插入图片描述
刷新码云的仓库页面
在这里插入图片描述
4.8. 使用(git pull 仓库地址) 拉取远程库内容
在码云新增一个文件
在这里插入图片描述
在这里插入图片描述
查看本地git 仓库的工作区,新增或改动的文件则会被同步到本地
在这里插入图片描述

5.远程库扩展操作

[1] 创建远程库地址别名

增加别名的作用:使用git push或git pull命令来从远程仓库下载或上传代码时,可以用别名来代替仓库路径

git remote -v (查看当前所有远程地址别名)
git remote add 别名 远程地址 (增加远程地址)
git remote remove 别名 (删除远程地址)

[2]解决冲突

冲突:我们在上传一个修改过的文件到远程仓库时,别人已经对这个文件进行了修改。导致本地仓库最近一次从git服务器上下载的文件版本和git服务器上文件的现版本不一致,这时会发生冲突。
例:目前git远程仓库中的application.yml中定义的端口号为8000,使用git客户端把该仓库中的文件下载下来。先在gitee上手动更改远程仓库中该文件,将端口号改为8001
在这里插入图片描述
在本地工作区中将该文件的端口号改为8080
在这里插入图片描述
保存后,添加并提交
在这里插入图片描述
将本地git中的文件上传到远程服务器,这是会出现冲突
在这里插入图片描述
这时,我们需要把项目先从远程仓库下载到本地
在这里插入图片描述
打开工作区中的application.yml文件
在这里插入图片描述
这时你可以和另一个修改文件的作者商讨,将该文件修改成讨论的最终结果
在这里插入图片描述
将修改后的文件,添加并提交到本地git仓库
在这里插入图片描述
然后将本地git仓库中的文件上传到远程git仓库
在这里插入图片描述
此时刷新远程仓库,该文件即为冲突修改后的内容
在这里插入图片描述

[3]远程仓库分支操作

(1)新建分支
创建并切换一个分支 b1
在这里插入图片描述
切换之后将分支上传
在这里插入图片描述
这时,远程仓库会多一个b1分支
在这里插入图片描述
我们在b1分支下修改Test.java文件并上传至远程git仓库
在这里插入图片描述
会发现分支b1下的Test.java文件为
在这里插入图片描述
而master分支下的Test.java文件并未修改
在这里插入图片描述
(2)合并分支
先切换至所需要的分支,再将当前的分支和指定的分支合并,再上传至远程git服务器
在这里插入图片描述
合并分支并上传至远程git服务器后,master分支中的Test.java文件也变成了b1分支中的Test.java文件的内容
在这里插入图片描述
(3)删除分支
先用git branch -d 分支名 删除分支,再用 git branch -v 查看分支确保该分支已被删除
在这里插入图片描述
注意:该方式只能删除本地的分支,远程分支需要从git服务器端删除
在这里插入图片描述
在这里插入图片描述

四、git中常用命令集

mkdir: XX(创建一个空目录 XX 指目录名) 
pwd: 显示当前目录的路径 
git init 把当前的目录变成可以管理的 git 仓库,生成隐藏的.git 文件。 
git add XX 把 XX 文件添加到暂存区。 
git commit -m “XX” 提交文件 -m 后面的是注释 
git status 查看仓库状态 
git diff XX 查看 XX 文件修改了哪些内容 
git log 查看历史记录 
git reset -hard HEAD^ 或者 git reset -hard HEAD~ 回退到上一个版本(如果想回退到 100个版本,使用 git reset -hard HEAD~100) 
cat XX 查看 XX 文件内容 
git reflog 查看历史记录的版本号 id 
git checkout --XX 把 XX 文件在工作区的修改全部撤销 
git rm XX 删除 XX 文件 git remote add origin https://gitee.com/oldlu_wk/gittest.git 关联一个远程库 
git push -u (第一次提交要用-u 以后不需要)origin master 把当前 master 分支推送到远 程库
git clone https://gitee.com/oldlu_wk/gittest.git 从远程库中克隆 
git checkout -b dev 创建 dev 分支 并切换到 dev 分支上 git branch 查看当前所有分支 
git checkout master 切换回 master 分支 
git merge dev 在当前分支上合并 dev 分支 
git branch -d dev 删除 dev 分支 
git branch name 创建分支 
git stash 把当前的工作隐藏起来等以后恢复现场后继续工作 
git stash list 查看所有被隐藏的文件列表 
git stash apply 恢复被隐藏的文件,但是内容不删除 
git stash drop 删除文件 
git stash pop 恢复文件的同时也删除文件 
git remote 查看远程库的信息 
git remote -v 查看远程库的详细信息 
git push origin master Git 会把 master 分支推送到远程库对应的远程分支上

五、IEDA中操作Git

现在gitee上新建一个仓库 仓库名为test_idea

1.使用idea提交代码

[1]在idea中配置git路径

IEDA中配置git的位置,点击Test后会出现git的版本号
在这里插入图片描述

[2]创建本地仓库

进行git仓库初始化:点击VCS–> import into version control—> create git repository
在这里插入图片描述

选择当前项目所在位置作为仓库目录
在这里插入图片描述
完成后相当于在项目所在位置进行git init初始化。
在这里插入图片描述

[3]将项目添加到缓存

选择项目,鼠标右击,选择git—>add
在这里插入图片描述

[4]提交文件

同样鼠标右击项目
在这里插入图片描述
在这里插入图片描述
在idea中,只要文件第一次增加到缓存之后,后续修改就不需要手动add添加到缓存中,idea会自动完成。只需要提交即可

[5]回退文件版本

在这里插入图片描述

[6]添加远程仓库地址

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
结果:提交到远程仓库时出错。原因:git仓库中的代码和本地不一致
在这里插入图片描述
我们先下载到再上传
在这里插入图片描述
结果仍然出错,应为远程和本地的版本仍不一样。远程只有两个初始化文件,但本地却没有初始化文件而只有项目。
在这里插入图片描述
解决方案:
在git仓库根目录下,鼠标右击,打开git bash ,用命令行做本地内容和远程内容 忽略历史版本的强转换
git pull origin master --allow-unrelated-histories (应为origin是默认的简称,可以代替路径)
在这里插入图片描述
若该方式出错,也可以将两个缺失的初始化文件下载下来放到仓库根目录下。
然后用git 命令行上传到远程仓库
$ git push -u origin master -f
在这里插入图片描述
在这里插入图片描述
这时,远程仓库中的内容就和本地仓库保持一致了。再去进行push就可以执行了。
修改Test文件并提交到本地git后,再上传到远程git仓库
在这里插入图片描述
结果,提交成功
在这里插入图片描述

[7]查看上传状态

在这里插入图片描述
如果上传时出现 Push rejected: Push to origin/master was rejected 解决办法:
1.选择你要上传代码的文件夹,鼠标右键 git Bash Here
2.输入下面两行命令
git pull origin master --allow-unrelated-histories --把远程仓库中的内容 pull 到本地工 作目录
git push -u origin master -f --在 pull 下来的项目中做修改,通过以上命令 push 到远程 仓库了

2.使用IDEA获取新项目的代码

在这里插入图片描述
输入仓库的URL后,点击克隆在这里插入图片描述
点击克隆后,等待至项目下载完成。

3.在IDEA上解决冲突

[1] 产生冲突的原因

冲突产生的根本原因是:两个人修改了同一个文件的同一块区域,在前者已经提交代码 到远程仓库的情况下,后者修改代码前没有使用 pull 命令更新代码,而是修改完代码后再使 用 pull 命令,这时就会产生冲突。这也是最常见的冲突,下面介绍解决冲突的办法也主要针 对这种冲突
在这里插入图片描述

[2] 预防冲突

在修改代码前,使用 pull 命令更新代码,能够保证在开始修改代码前本地的代码与远程 仓库中的版本一致,这样能够大大降低冲突发生的概率。

[3]解决冲突

在gitee上手动编辑Test.java文件并保存
在这里插入图片描述
在idea中修改相同的文件
在这里插入图片描述
修改完毕之后,使用IDEA保存并推送至gitee仓库
在这里插入图片描述
推送后会提示版本冲突,点击Merge合并
在这里插入图片描述
选择被合并的文件,点击merge
在这里插入图片描述
和上一个作者讨论后得出最终结果,将最终结果放在中间的Result栏
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
点击apply后,将本地仓库代码推送至远程gitee仓库
在这里插入图片描述
结果:远程服务器上的文件修改成功
在这里插入图片描述

六、gitee远程仓库邀请成员

进入仓库–>管理–>仓库成员管理–>所有–>添加仓库成员–>邀请用户
在这里插入图片描述
在这里插入图片描述
方式一:通过链接邀请
在这里插入图片描述
方式二:直接添加
在这里插入图片描述
在这里插入图片描述
方式三:通过仓库邀请
在这里插入图片描述
发送请求后,被邀请的成员的gitee会收到私信,点击私信进行查看,然后点击却加入
在这里插入图片描述
在这里插入图片描述

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值