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版本控制简单范例

试验环境:E:\测试代码\github\Demo
版本控制对象:test.txt

1. 创建或获取git仓库

a. 创建一个仓库

在当前路径E:\测试代码\github\Demo下右键点击 Git Base Here
会弹出一个命令行,如下
在这里插入图片描述

指令初始化仓库

git init

在这里插入图片描述

该命令将创建一个名为 .git 的子目录,这个子目录含有你初始化的Git仓库中所有的必须文件,这些文件时Git仓库的骨干。但是,在这个时候,我们仅仅是做了一个初始化的操作,你的项目里的文件还没有被跟踪

b. 获取(克隆)现有的仓库

如果你想获得一份已经存在了的Git仓库的拷贝,这时就需要用到克隆指令

指令克隆仓库

git clone <url>

如果你想克隆远程仓库的时候,自定义本地仓库的名字,你可以通过额外的参数指定新的目录名:

git clone <url> <newname>

我克隆了我自己的一个线上库到本地命名为:djc
在这里插入图片描述

2. 将内容更新到仓库中

现在本地路径中有了一个Git仓库,可能是初始化的,也可能是克隆的。
从简单的入手,我们选择初始化仓库。
有了仓库,也一定有对应需要被存储的文件。
于是我在当前路径下新建了一个test.txt,作为我们本次版本控制的对象。
在这里插入图片描述

a. 检查文件状态

新建之后,我们可以检查一下该文件目前在仓库中处于什么样的状态。

指令检查文件状态

git status

如果当前目录下出现处于未跟踪状态的新文件,那么这条指令就会将他们都列举出来。test.txt就属于未跟踪的新文件!
在这里插入图片描述

test.txt已经在Untracked files中被标红,说明仓库目前并没有对其进行跟踪

b. 跟踪新文件

未跟踪的文件意味着Git在之前的快照(提交)中没有这些文件;Git不会自动将之纳入跟踪范围,除非你明明白白告诉他“我需要跟踪该文件”。而test.txt确实是我们需要跟踪管理的。

指令跟踪新文件

git add test.txt

在这里插入图片描述

运行结束之后也没有什么特殊的提示,如果我们此时再运行git status
在这里插入图片描述

我们会看到test.txt文件已经被跟踪,并处于暂存状态。
如果目录下文件很多,无法逐个进行跟踪。

可执行统一跟踪指令

git add -A

当前目录下所有文件都会被仓库跟踪,处于暂存状态

c. 暂存已修改的文件

如果此时我们对test.txt中的内容进行修改,再重新git status一下
我们会发现又出了一些问题,test.txt即处于暂存状态,又处于未跟踪状态。
在这里插入图片描述

因为test.txt修改前的内容,仓库进行了暂存跟踪。而修改后的内容,仓库并没有进行跟踪。所以会出现处于两种状态的情况。要解决这个问题就再执行一次跟踪指令。

d. 忽略文件

一般我们总会有些文件无需纳入Git的管理,也不希望它们总出现在未跟踪文件列表。例如:日志文件、临时文件等。在这种情况下,我们可以创建一个名为 .gitignore的文件,列出要忽略的文件的模式。
首先我们先在路径下创建一个文件,名为.gitignore
用记事本打开该文件后输入:

*.[oa]    // 忽略所有以.o或.a结尾的文件
*~    // 忽略所有名字以波浪符结尾的文件
*.log    // 忽略所有后缀为.log的文件

完毕执行指令

忽略文件指令

cat .gitignore

返回结果:
在这里插入图片描述

e. 查看已暂存和未暂存的修改

git status或许显示的信息太过于简洁,想知道具体哪些地方产生了修改,我们可以使用其他命令来查询。

查询修改内容指令

git diff

我们先对test.txt的文本进行一些修改,但不执行git add命令,直接使用git diff。
在这里插入图片描述
在这里插入图片描述

如图看到指令返回红色那行是产生修改行,具体修改了哪些内容已经由绿色字体标出。

请注意!git diff本身只是显示尚未暂存的改动,而不是自上次提交以来所做的所有改动。所以有时候你一下子暂存了所有更新过的文件,运行git diff后却什么也没有,可能是这个原因。

f. 提交确认暂存区所有修改

前面章节我们使用 git add 命令将内容写入暂存区。现在,我们要将暂存区内容中的所有修改添加到本地仓库中。

提交命令

git commit -m [commit content]

先将刚刚在git diff时的修改暂存,git add
然后执行git commit

在此处有个问题需要注意,commit提交的是暂存区的内容,也就是执行过add指令的内容。如果在执行add指令之后有些文件又发生了变化,并直接执行commit,那么add之后修改的内容将不会保存到仓库中!

3. 分支管理

使用分支意味着你可以把你的工作从开发主线上分离开来,以免影响开发主线。在提交操作时,Git会保存一个提交对象,该对象包含一个指向暂存内容的快照指针。在仓库初始化时,默认就由一个分支master。
我们到此将目前的所有内容commit一下

在这里插入图片描述

当前也只有test.txt一个文件
在这里插入图片描述

在test.txt文件中

12312313
ASDFASDF
12sadfsadf 
asdfkjaskdfjk
asdfaksldfjkl
askdfjkalsdfassdf
aksdjflasdf
QWERERasd
this is the second amend!
master
5bd104e
HEAD

这是目前仓库指针情况,5bd104e代表本次commit的版本

a.分支创建

现在我们将在此基础上创建一个新的分支testbranch

创建分支指令

git branch [branchname]

创建一个可以移动的名为testbranch的新指针。
在这里插入图片描述

此时仓库指针情况如下:

master
5bd104e
HEAD
testbranch

b.分支切换

切换到一个已存在的分支testbranch

切换分支指令

git checkout [branchname]

在这里插入图片描述

此时仓库指针情况如下:

master
5bd104e
HEAD
testbranch

c.分支切换会改变工作目录

现在我们两个分支都指向了同一个commit版本。
我们将现有内容略作修改,新建一个新的test1.txt并重新commit一次。
在这里插入图片描述

在这里插入图片描述

此时的仓库分支情况:

master
5bd104e
e8b758f
HEAD
testbranch

此时master指针还在第一次commit的版本上,而testbranch指针指向了新的commit版本。
如果我们重新切换回master版本
在这里插入图片描述

在这里插入图片描述

刚刚新建的test1.txt文件不见了!

如果我们再重新切换回testbranch分支:
在这里插入图片描述

在这里插入图片描述

test1.txt文件又回来了!

由此可见,分支切换会改变你工作目录中的文件!

现在,这个项目的提交历史已经产生了分叉。因为刚才你创建了一个新的分支,并切换过去进行了一些工作。上次改动针对的是不同的分支,你可以在不同的分支间不断地来回切换工作,并在时机成熟的时候将他们合并起来。

d.分支合并

我们一般认为master分支指向的都是稳定版本,也可以认为master是主线。在项目不成熟前的所有修改调试都在分支上。此时我们的master是主线,testbranch是分支。在testbranch上我们也做了一些修改,新建了一个test1.txt文件。

有这样一个场景,此时主线项目(master)在运行时出了个BUG, 为此我们不得不放下当前testbranch的修改。去master处理bug。于是我们在testbranch上重新commit一下保存我们之前修改,回到master上去处理。

  1. 对testbranch存盘

在这里插入图片描述

master
5bd104e
e8b758f
b82422a
HEAD
testbranch
  1. 切换回master分支
    在这里插入图片描述
master
5bd104e
e8b758f
b82422a
HEAD
testbranch
  1. 处理test.txt中的Bug
    我用一行文字代替了bug的位置,然后用diff查看了一下修改内容。
    在这里插入图片描述

确认,再commit一下。
在这里插入图片描述

此时仓库的分支情况:

master
a0b13e5
5bd104e
e8b758f
b82422a
HEAD
testbranch

现在a0b13e5(bug修改)与b82422a(testbranch修改)已经出现了分叉。假设你已经修正了bug问题,并且打算在testbranch分支中拉取bug所做的修改,你可以将master分支合并入testbranch分支,或者你也可以等到testbranch分支完成其使命,再将其合并进入master分支。

分支合并指令

git checkout [mergedbranch]
git merge [maergebranch]

我们现在选择将master合并进入testbranch
在这里插入图片描述

这样就可以在修改bug的情况下,继续完成testbranch上的任务

e.分支删除

在当前分支与别的分支完成合并之后,就可以将其删除。
如果此时testbranch分支已经完成它的使命。就可以将其与主线(master)合并。然后将其删除。

分支删除指令

git branch -d [deletebranchname]

在这里插入图片描述

  开发工具 最新文章
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-09-10 11:03:42  更:2021-09-10 11:06:01 
 
开发: 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年12日历 -2024/12/23 4:57:29-

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