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命令来熟悉git的使用,在此过程中,我会尽可能模拟可能出现的一些异常情况,分析原因并告诉你如何解决,希望你以后在遇到新的问题时也能用类似的方法去解决。
项目地址:https://github.com/Wang-Yongqiang/git-test.git
学习的git命令:git clone、git status、git add、git commit、git push、git pull
执行环境:MacOS、终端(防止大家受IDE的影响而不清楚各命令到底是在干嘛)

实操

step 1

选择一个你想放置该项目的目录,这里我选择如下目录,该目录下暂无任何其他文件
在这里插入图片描述
然后执行git clone命令

git clone git@github.com:Wang-Yongqiang/git-test.git   

git@xxx这个链接表示用ssh协议传输,会更稳定,强烈推荐使用,用http协议经常会莫名其妙断掉。

clone完之后该目录下就有了git-test这个项目
在这里插入图片描述

在这里我再clone一次看看会发生什么事情
在这里插入图片描述
它说git-test项目已经存在了,因此不能再clone,只有把这个项目删掉才能再clone。

step 2

对clone到本地的项目进行一些修改,我们进入到该项目里面去修改一个文件
在这里插入图片描述
在这里插入图片描述
先按 esc键,然后执行 :wq命令将修改保存并退出。
在这里插入图片描述
我们可以看到README.md中的内容已经改变了,但它的改变仅仅保留在文件系统中,对于git来说该文件和之前是一样的
可以用git status命令查看当前项目下哪些文件在文件系统中有改动。
在这里插入图片描述
通过上图我们可以发现只有README.md文件在文件系统中有改动。

step 3

为了让git知道我们对该文件做了修改,我们需要将修改添加到git的缓存区里。
如果只是将单个改动的文件添加到git缓冲区里,则添加指定文件

git add README.md

如果改动文件很多,且需要添加全部改动文件,则通常统一添加

git add .

在这里插入图片描述
我们再执行一下git status看看会发生什么
在这里插入图片描述
此时改动且被添加到git缓冲区里的文件提示信息变成绿色了,其实这种颜色的变化就是在告诉你该文件现在处于什么状态。

step 4

在添加到git缓冲区之后,我们需要将缓冲区里的信息提交到本地仓库,以使得新的项目文件称为一个新版本。

git commit -m "这是一个新版本"              // -m表示这次提交的描述信息

在这里插入图片描述
提交之后我们可以发现本地仓库之前的一个版本,这个新版本有一个文件被改变了,具体改变为插入了2行数据。
我们再执行一个git status看看会有什么变化
在这里插入图片描述
此时提示信息告诉我们,本地仓库该分支领先远程仓库的main分支一次提交/一个版本,且git缓冲区中没有需要提交的信息。
也就是说git status会记录文件系统中和git缓冲区中具体文件的改变,而在仓库中只记录提交版本的变化,不到具体某个文件。

step 5

既然本地仓库版本已经更新了,那么我们可以将其推送到远程仓库。

git push

在这里插入图片描述
推送之后我们到远程仓库里看看是否更新了,此处我用的远程仓库是github里的,其实还有很多其他的远程仓库,例如gitee、私有云仓库等等。
在这里插入图片描述
我们可以看到远程仓库里该项目的README.md文件的确是更新了。

step 6

最后,我们模拟经常遇到的一种情况,即别人对远程仓库进行了更新,而我们还在对远程仓库的之前的某个版本在更新,此时直接推送是无法成功的,我们首先需要将远程仓库的最新版本拉取下来,但这时很容易产生冲突,需要手动更改冲突,只有冲突改完了,再次将改动文件添加到git缓冲区,并提交到本地仓库,才能推送成功。
我在另一个终端里用该用户来模拟第二个用户对该仓库的更新,我们看到远程仓库的内容更新如下。
在这里插入图片描述
而原终端中README.md里面的内容还是和原来一样。
在这里插入图片描述
此时我们试试做一点点改变,然后直接推送看看会发生什么事情
在这里插入图片描述
此处我没有放前面的git add和git commit操作界面,但是需要执行这两条命令的,然后执行git push命令,结果发生了如下的事情。
在这里插入图片描述
提示信息告诉我们本地仓库最新版本没有远程仓库最新版本的一些东西,即本地仓库没有更新到远程仓库的最新版本,由于版本不对应,直接推送被拒绝了。
我们应该先拉取远程仓库的最新版本。

git pull

在这里插入图片描述
根据提示信息我们发现在本地仓库的README.md文件与远程仓库的README.md文件内容合并时产生了冲突,我们需要手动选择冲突的部分
在这里插入图片描述
这里我选择保留本地仓库的内容,删掉远程仓库的内容。
在这里插入图片描述
我们再次执行git status命令查看当前各文件的状态。
在这里插入图片描述
根据提示,我们需要执行git rebase --continue,这用来告诉git我们已经解决了冲突,不过在这之前需要先执行git add和git commit将新内容添加到本地仓库里。
在这里插入图片描述
接下来再次和git push就可以推送成功了。
在这里插入图片描述
我们再次看看远程仓库里的内容。
在这里插入图片描述
它和本地仓库最新版本中的内容保持一致了。

总结

以上几乎是git中最常用的一些命令,如果能够清楚各个命令做的事情以及执行完之后整个项目所处的状态,那么用git进行版本控制就能轻车熟路了,希望大家能够带有思考地进行使用,这样用起来才会更有收获。

  开发工具 最新文章
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常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2022-10-08 21:02:36  更:2022-10-08 21:04:36 
 
开发: 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/25 20:23:59-

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