IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> 手把手教你熟悉Git操作 -> 正文阅读

[开发工具]手把手教你熟悉Git操作

Git

当下较为流行的分布式版本控制系统

一、版本控制

功能类似备份,方便在修改后查看早期版本

二、Windows安装Git

1. Git 安装

点这里下载


在这里插入图片描述
然后安装一路 Next 即可

安装完成后,桌面鼠标右击
在这里插入图片描述
选择Git Bash Here
在这里插入图片描述
输入

get --version

查看当前下载版本
在这里插入图片描述
如果显示出版本号则安装成功

2. Git 一次性配置

在使用Git工作之前,我们需要做一个一次性的配置。方便后续Git能跟踪到谁做了修改,我们需要设置对应的用户名和邮箱地址。

git config --global user.name "your_username"
git config --global user.email your_email@qq.com
git config --list 查看所有配置

配置前输入

git config --list

会发现没有用户名邮箱这两项
需要自己配置
在这里插入图片描述

这就配置好了,接下来输入

git config --list

查看,发现已经配置好了

在这里插入图片描述

三、理解Git文件的三种状态与工作模式

  1. Git 的三种工作状态

1) 已提交(committed)
表示数据已经安全的保存在本地数据库中。
2) 已修改(modified)
表示修改了文件,但是还没保存到数据库中。
3) 已暂存(staged)
表示对一个已修改的文件的当前版本做了标记,使之包含在下次提交的快照(可以理解为将文件复制了一下)中。

  1. 三个工作区域

1) 工作区
在电脑里能看到的目录,比如自己创建的本地项目目录
2) 暂存区
Git的版本库里存了很多东西,其中最重要的就是称为 stage (或者叫index)的暂存区,还有Git自动创建的第一个分支 master ,以及指向 master 的一个指针叫 HEAD
3) Git仓库
工作区有一个隐藏目录 .git,这个不算工作区,而是 Git 的版本库。

  1. 对以上概念有了一个粗略的了解,我们来看看 Git 的工作流程描述

1) 把 Git 仓库中的文件在工作区进行修改
2) 对修改后的文件进行快照,添加到暂存区
3) 将暂存区的文件快照永久转存到 Git 仓库中

四、创建版本库并提交文件

版本库(又名仓库),可以理解为一个目录,这个目录里面的而所有文件都可以被 Git 管理起来,每个文件的修改、删除,Git 都能跟踪,以便在任何时刻都可以追踪历史,或者在将来某个时刻“还原”。

下面通过一个例子熟悉 Git 对于文件的基本操作:

1. 初始化git

打开一个文件夹,右键进入 GIT BUSH HERE
在这里插入图片描述

初始化git本地仓库
git init在这里插入图片描述
创建一个文本
在这里插入图片描述
文本中任意添加内容后保存
在这里插入图片描述

2. git 加入暂存区

输入

git add +文件地址 

把文件添加到暂存区
在这里插入图片描述
然后输入

git status

查看是否添加成功
在这里插入图片描述

On branch master (在主分支上)

No commits yet (还没有提交)

Changes to be committed: (可以提交的文件)
	(将 xxx 文件从缓存区清除)
	new file: 当前在缓存区的文件

当然你也可以尝试以下清除
在这里插入图片描述
清除之后文件显示为红色,也就是不在缓存区,无法提交
需要重新添加到缓存区

经过上述操作我们已经将 git_1.txt 添加到缓存区了

3. git 提交

git commit -m '这里是属性备注,方便查看此次做了什么修改'

在这里插入图片描述

[master (root-commit) 7e8788f(存储地址)]  属性备注
一个文件发生变更, 插入了一个文件
创建了git_1.txt

4. 查看 git 操作日志

git log

在这里插入图片描述

输入

exit

退出界面

五、时光穿梭机

多人的项目开发环境下,使用 Git 版本控制器工具对项目进行管理时,通常会对不同版本的文件进行查看,对历史版本和未来版本进行切换操作。

1. 修改文件与提交

重新在初始化仓库所在的文件夹中打开 Bush
输入

git status

会发现之前暂存区的文件不在了
在这里插入图片描述
小事,再放进去就行
先修改文档
在这里插入图片描述
保存后关闭

然后放入暂存区并提交
在这里插入图片描述
在这里插入图片描述
输入

git log

查看日志
在这里插入图片描述
分别记录了

提交版本的唯一标识
作者
提交日期
属性备注

不放入暂存区会怎样?

提醒大家提交文件前先放入暂存区

先对文件进行第三次修改并保存
在这里插入图片描述

直接 commit 后会是什么样?

BUSH中输入

git diff HEAD -- git_1.txt

来查看文件的修改状态
在这里插入图片描述

在这里插入图片描述
a后面是第一次修改的文件
b后面是第二次修改的文件

在这里插入图片描述
---a是修改前
+++b是修改后

在这里插入图片描述
在这里插入图片描述
第一行没有发生变更
在这里插入图片描述
该命令成功变更
在这里插入图片描述
该行没有只在本地修改,没有在仓库变更

已经放入暂存区的文件怎样撤销

新建一个 test.txt 并加入暂存区
在这里插入图片描述

查看
在这里插入图片描述

加入暂存区,并查看是否添加成功
在这里插入图片描述

这时候没有女朋友的我生气了,我不想让 test.txt 进入暂存区了,我要让它滚出去
输入

git reset HEAD

在这里插入图片描述

再查看发现它出去了,单身狗舒服了
在这里插入图片描述

2. 版本回退

我们现在可以把没用的test.txt 删除
将第三次修改正确提交
在这里插入图片描述

添加第四次和第五次修改
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

然后我们

clear

清除一下

查看日志
在这里插入图片描述

是不是感觉很不直观

git log -5 --pretty=ontline

(打印五行,每一条的第一行)
在这里插入图片描述
舒服了

回到过去版本

git reset --hard HEAD^

一个 ^ 表示回退到当前的上一次修改,这时候你开始举一反三了,那 ^^ 是不是往前回退两次, ^^^是回退到三次修改前。
我去!你真是个小机灵鬼,确实如此

在这里插入图片描述
我从第五次修改穿越到了第四次修改
打开文档发现,文档果然回到了第四次修改的样子

也可以在命令行中用

cat git_1.txt

查看当前文档内容
在这里插入图片描述

但是如果我先返回到 5201314 次修改之前怎么办?
打 5201314 次 ^吗?
显然不行,于是就有了下面这个新的命令

git reset --hard HEAD~k

表示从当前往前回退 k 个版本

假如我从第二个版本往前回退
在这里插入图片描述

去到未来版本

怎么回到现在呢?

还记不记得这个清晰的显示
在这里插入图片描述
我们知道每个版本前面这个黄色的编码都是独一无二的,
就像你的学号对应着你,它用于守护着自己的版本
于是我们利用这个编码来跳转

git reset --hard 编码的前几位(一般用五位,不过几位都行,不够自己加)

在这里插入图片描述
好耶!我们又回来了

如果不小心 clear 或则关掉了窗口,我找不到回到未来的路咋办

比如我们先回到过去第三个版本
在这里插入图片描述
然后我们

clear

屏幕上啥都没了
在这里插入图片描述
查看也只能看到前三次的
咋办啊?
姑娘别哭,继续往下看
输入

git reflog

就可以查看到我们之前的做过的一些操作命令,
前面黄色的编码就是我们之前分支的应用位置
在这里插入图片描述

于是我们查看后去到第五次修改的位置
git reset --hard b0e94
在这里插入图片描述

嘿嘿,我们又回来了。

3. 文件删除

首先我们新建一个文本文件
在这里插入图片描述
将文件从工作区提交到仓库内部
在这里插入图片描述

查看一下仓库里的文件
git ls-files
在这里插入图片描述

然后将在工作区将文件删除(但是仓库中仍然保留),并查看
在这里插入图片描述
我们发现已经检测到工作区的文件被删除
在这里插入图片描述
但是它还在仓库里

如果是工作区误删怎么找回呢?

git checkout -- wushiyi.txt

相当于从仓库拷贝过来

在这里插入图片描述
可以看到文件又回来了,打开发现内容也在
在这里插入图片描述

删除仓库中的文件

输入

git rm wushiyi.txt

发现已经在工作区被删除了
在这里插入图片描述
查看发现,在仓库中也被删除了
在这里插入图片描述
这下真的找不回来了

六、远程仓库

多人开发,有一个远程仓库,我们从远程仓库把项目下载到本地(同时下载了所有的修改日志),在本地开发,开发完后提交到本地仓库,还需要上传到远端仓库才能和其他人的代码一起发挥作用。

最著名的两个开源仓库
Github (https://github.com/)
码云(https://gitee.com/)
企业可能会有自己搭建的仓库

1. 克隆远程项目到本地

打开 github 注册一个账号并登录
下面我们开始下载一个项目到本地

搜索java8在这里插入图片描述
点进第一个项目,并点击 Code在这里插入图片描述

我们可以看到两种下载方式

  1. 复制到命令行打开
  2. 直接本地下载为 ZIP

我们显然用命令行操作

新建一个文件夹JAVA8
在这里插入图片描述
在其内部打开 BASH

git clone https://github.com/winterbe/java8-tutorial.git

在这里插入图片描述
我们已经将项目克隆到了本地
在这里插入图片描述

2. 将本地库推送到远端

首先新建一个仓库
点右上角加号在这里插入图片描述
添加仓库信息(下面啥也别选)在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
图像中的命令,前几行在本地的操作我们已经进行过了,
最后两行分别代表

将文件的远端仓库设置为 刚刚新建的仓库
将本地仓库的文件推送到远端

在之前的文件夹,打开BASH,将…or push an existing repository from the command line 一栏中的代码复制进去
在这里插入图片描述
然后回弹出密码及用户名的输入按要求操作即可

接下来更新界面就能在github上看到在这里插入图片描述
之后可以直接推送远端,不用再次建立连接

还可以利用 HTTP/SSH 加密登录,需要申请密钥和公钥,这里我就不演示了
(但是它更高效,且安全)

七、Git 分支操作

多人协作时,当项目已经投入使用,我们不能直接在 master 主干上修改,不然如果产生新的 BUG 会使用户直接无法使用,于是我们一般从主干拉出一个分支进行修改,没问题之后再将其合并入主干。

git checkout branch	切换到指定分支
git checkout -b new_branch	新建分支并切换到新建分支
git branch -d branch	删除指定分支
git branch 	查看所有分支,并且`*`标记当前所在的分支
git merge branch	合并分支
git branch -m | -M oldbranch newbranch 	重命名分支,如果newbranch名字分支已经存在,则需要使用 -M 强制重命名,否则,使用 -m 进行重命名

1. 在本地创建分支

新建分支,在分支上添加部分工作区
开发完分治后合并到主干上,删除分支

2. 分支的Push和Pull操作

为了方便与其他人多人协同操作,就有了向远程仓库推送和拉取操作

git branch -a	查看本地分支
git push origin branch_name	推送本地分支到远程
git push origin :remote_branch	删除远程分支(本地分支还在保留)
git checkout -b local_branch origin/remote_branch	拉去远程指定分支并在本地创建分支

3. 分支操作冲突出现与解决

1.本地分支操作冲突

在分支和 master 的相同位置进行了不同修改,合并时会出现冲突
解决冲突
1) 保留 master
2) 保留 分支
3) 合并二者关键信息到一个文件中

git log --graph --pretty=oneline	方便查看冲突

2. 多人协同操作冲突

两个人拉取了同一版本的文件进行修改,A先修改后上传远端,B修改了相同位置后上传,发生冲突
解决冲突最简单的方法是拉取最新的文件,在此基础上修改

八、标签(releases)管理

git tag tag_name	新建标签 默认为 HEAD
git tag -a tag_name -m 'xxx'	添加标签并指定标签信息
git tag	查看所有标签
git tag -d tag_name	删除一个本地标签
git push origin tag_name	推送本地标签到远程
git push origin --tags	推送全部未推送过的本地标签到远程
git push origin :refs/tags/tag_name	删除一个远程标签

对设置标签时所有的文件做标记,下载 release 可以看到修改时的所有文件
相当于更新产品时,推送一个新的版本

  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2021-10-24 15:05:58  更:2021-10-24 15:06:55 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 22:23:25-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码