本文目录
- Git 就这么学
- 前言
- Git的发展历史
- 版本控制
- Git 基本理论(核心知识)
- Git文件操作——文件的4种状态
- Git 环境配置
- Git的常用指令
- 创建本地版本库 git init
- 查看当前版本库中文件所处状态 git status
- 再来讲下Git的工作流程——常用命令
- 所有历史记录都无一幸免 git reflog
- git 的并行操作——分支操作
- 多作用的git checkout
- 分支合并 ——完全形态 git merge
- 开发中分支应用——多人协作开发
- Git操作Github/Gitee
- github将本地版本库关联到远程仓库 git remote add origin
- git 将远程仓库关联到本地版本库中
- github 将本地仓库数据提交到远程仓库
- 工作中常用的保存当前更新操作 切换分支:git stash
- 将远程仓库中分支修改合并分支到本地仓库
- 当你在github上删除了分支后本地 依旧能看到 被删除的分支
- 拉取所有分支、或者拉取到指定的分支
- git删除分支
- 查看不同的分支当中指定文件的差异
- git在实际中分支开发的步骤与方法
- 感谢
- 写在最后
Git 就这么学
前言
本文借鉴了 《Git学习指南》这本书的学习思想与学习结构。
本文操作系统环境是在CentOS/Linux 7.6 环境下编写。
因为在现如今分布式系统盛行的时代,工作当中不可缺少git,最为博主的我最近也在学习这门技术,所以有了本篇文章。
作者会根据大体结构把可能经常在开发当中经常使用的命令进行划分归类并且细致整理。
望诸君 事业有成 学有所获。
如果可以 请记得 动动小手 一键三连
Git的发展历史
发展过程与历史
当一个小组团队(三个娃)打算开发一款很小的项目时,不乏会出现我此时对代码一处地方进行了修改,而另一位小伙伴并没有接收到我的修改,而在原来的基础上继续修改其他代码,此时就出现了三个版本:初始版本、我的版本和他的版本。那么最后我们该如何选择版本提交项目呢。
于是早在很久以前Linus这个人呢,(也就是把Linux操作系统写出来的神)在得知BitMover公司开发的BitKeeper分布式版本控制系统停止免费对外开放时,就自己用了两个星期的时间开发出了git,而git随着时间的发展,目前已经成为了世界上最大的开元分布式版本管理系统
版本控制
常见的版本控制工具
- Git(分布式版本控制代表)
- SVN(SubVersion 是集中式版本控制的代表)
那什么是分布式版本控制?什么是集中式版本控制呢?
分布式版本控制
就是每个开发者都在自己的计算机上有一个包含所有项目文件的工作目录(即Workspace 后面会说道)。当开发者都在本地作了修改之后,他会定期将自己的修改提交到远程服务器上。然后开发者在更新数据之前都会从远程服务器把当前版本给获取下来。这台远程服务器存储着这些文件(版本库)的当前版本和历史版本。不过增加了本地存储空间的占用。
集中式版本控制
所有的版本数据都存在服务器上,用户的本地只有自己以前所同步的版本,如果不联网的话,用户就看不到历史版本,也无法切换版本验证问题。而且所有数据都保存在单一的服务器上,有很大的风险这个服务器会损坏,这样就会丢失所有的数据,当然可以定期备份。
分布式版本控制与集中式版本控制的区别
Git与SVN区别
SVN是集中式版本控制
系统,版本库是集中放在中央服务器
的,而工作的时候,用的都是自己的电脑,所以首先要从中央服务器得到最新的版本
,然后工作,完成工作后,需要把自己做完的项目推送到中央服务器
。集中式版本控制系统是必须联网
才能工作,对网络带宽要求比较高。
Git是分布式版本控制系统
,没有中央服务器,每个人的电脑就是一个完整的版本库
,工作的时候就不需要联网了,因为版本都在自己电脑上,协同的办法是这样的:比如说自己在电脑上改了文件A,其他人也在电脑上改了A,这时,只需要把各自修改推送给对方
,就可以互相看到对方的修改了。
Git是目前世界上最先进的分布式版本控制系统。
Git 基本理论(核心知识)
在学习git的相关命令操作之前我们要先学习一下git的基本理论知识。(核心重点)
工作区域
Git本地中是有三个工作区域的:也就是之前说过的workspace(工作目录)、暂存区(Stage、Index指向的区域)、资源库(Repository)、再加上远程的git仓库 可以共分为四个工作区域,他们之间的转换关系如图所示:
- Workspace:工作区,就是你平时存放项目代码的地方。
- Index/Stage:暂存区,用于临时存放你的改动,事实上他只是一个文件,保存即将提交到文件列表信息。
- Repository:仓库区(或者本地仓库),就是安全存放数据的位置,这里面有你提交到所有版本的数据。其中HEAD指向最新放入仓库的版本。
ref: refs/heads/master
# 指向的是主分支
- Remote:远程仓库,托管代码的服务器,可以简单地认为是你项目组中的一台电脑用于远程数据交换。
Git文件操作——文件的4种状态
版本控制说白了就是对修改更新版本后的文件或者项目的版本控制,对文件更新、提交等操作,要先知道当前文件处于什么状态,是否在暂存区,是否需要提交,是否修改过,这就是文件的状态。转换之间如上个模块所示:
- Untracked:未跟踪,此文件在文件夹中,但并没有加入到git库,不参与版本控制,通过**
git add
状态转换为staged
.** - Unmodify: 文件已经入库,未修改,即版本库中的文件快照内容与文件夹完全一致,这种类型的文件有两种去处,如果他被修改了,而变为**
Modified
** . 如果使用 **git rm
**移除版本库,则成为 **Untracked
**文件。 - Modified:文件已修改,仅仅是修改,并没有进行其他的操作,这个文件也有两个去处,会通过**
git add
** 可进入暂存staged
状态,使用 **git checkout
**则丢弃修改过,返回到unmodify
状态,这个git checkout
即从库中取出文件,覆盖当前修改! - Staged:暂存状态,执行**
git commit
** 则将修改同步到库中,这时候库中的文件和本地文件又变为一致,文件为unmodify
状态,执行git reset HEAD filename
取消暂存,文件状态为Modified
.
Git 环境配置
安装Git
[root@alascanfu ~]# yum -y install git
配置Git
## 本文这里代表注释哦~
## config是配置
## --global是当前全局配置
## 配置用户与邮箱
[root@alascanfu ~]# git config --global user.name Alascanfu
[root@alascanfu ~]# git config --global user.email 3201256097@qq.com
## -l 是显示除了系统配置以外的配置
[root@alascanfu ~]# git config -l
user.name=Alascanfu
user.email=3201256097@qq.com
## 这个是显示系统设置 其主要是访问gitconfig文件中所写好的配置
[root@alascanfu ~]# git config --system -l
diff.astextplain.textconv=astextplain
filter.lfs.clean=git-lfs clean -- %f
filter.lfs.smudge=git-lfs smudge -- %f
filter.lfs.process=git-lfs filter-process
filter.lfs.required=true
http.sslbackend=openssl
http.sslcainfo=F:/Git/mingw64/ssl/certs/ca-bundle.crt
core.autocrlf=true
core.fscache=true
core.symlinks=true
pull.rebase=false
Git的常用指令
创建本地版本库 git init
创建本地版本库(也被称之为workspace):git init
[root@alascanfu ~]# git init
Initialized empty Git repository in /root/.git/
[root@alascanfu ~]# cd .git
[root@alascanfu .git]# ls
branches config description HEAD hooks info objects refs
这里作者是举例哈~
在当前用户根目录下git init
创建好了本地版本库,随后会生成一个隐藏的文件夹.git
进入文件夹之后查看当前目录下的文件。其中这个Index指向的是暂存区,而HEAD指向的是分支。
查看当前版本库中文件所处状态 git status
查看文件状态
[root@alascanfu ~]# git status
# On branch master
#
# Initial commit
#
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
# helloGit.txt
nothing added to commit but untracked files present (use "git add" to track)
此处的helloGit.txt是博主通过touch helloGit.txt
创建出来的文件所以此时他此时处于Untracked files
,
[root@alascanfu ~]# git status helloGit.txt
# On branch master
#
# Initial commit
#
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# helloGit.txt
nothing added to commit but untracked files present (use "git add" to track)
也可以通过git status [filename]
来获取指定文件的状态、
## 随后将其加入到暂存区 再看其状态
[root@alascanfu ~]# git add helloGit.txt
[root@alascanfu ~]# git status helloGit.txt
# On branch master
#
# Initial commit
#
# Changes to be committed:
# (use "git rm --cached <file>..." to unstage)
#
# new file: helloGit.txt
#
## 此时状态为new file 需要被提交的状态 也就是已经加载到暂存区的位置了
git commit -m “msg”
## 将暂存区的文件提交到本地仓库当中。-m 后面接更新的信息
[root@alascanfu ~]# git commit -m "First-version"
[master (root-commit) a65df0c] First-version
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 helloGit.txt
git commit --amend
这个又是什么呢? --amend
这个参数是用来改写提交的,且此次提交不会出现在log当中。 而是以此次提交作为最后结果,不过 git reflog
还是可以看到滴,所以还是要注意提交哦~
既然刚刚说道log了 那接着讲查看历史版本提交情况 git log
## git log 查看版本日志
## git log [file-name]查看指定文件的版本日志
[root@alascanfu ~]# git log
## 提交的是一串hash值
commit a65df0cd4e5cf73a8b922e0b38ce39bd1b693fac
## 用户 <邮箱>
Author: Alascanfu <3201256097@qq.com>
## 格林时间 + 东八区
Date: Sat Dec 18 01:20:27 2021 +0800
## 提交的版本信息
First-version
回滚到之前版本
既然有版本之分就不得不提到回滚,当测试猿小fu不小心启用新的版本的时候,发现有新的错误使得当前版本不可上线,但是我却上线了这个项目,那就可不只是kill 个开发那么简单了,所以弥补办法也就是回滚出现了。
## 比如此时小付呢 对这个刚才提交的版本的文件进行了更新 写入了数据
[root@alascanfu ~]# vim helloGit.txt
## 那么此时其状态 就会变成modified 这个时候就需要重新 add 与 提交
[root@alascanfu ~]# git status helloGit.txt
# On branch master
# Changes not staged for commit:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: helloGit.txt
#
no changes added to commit (use "git add" and/or "git commit -a")
[root@alascanfu ~]# git add helloGit.txt
[root@alascanfu ~]# git commit helloGit.txt -m "Second-version"
[master cfd37d4] Second-version
1 file changed, 2 insertions(+)
commit cfd37d4e8d55d842e0f444f893792a165f309dde
Author: Alascanfu <3201256097@qq.com>
Date: Sat Dec 18 01:38:29 2021 +0800
Second-version
commit a65df0cd4e5cf73a8b922e0b38ce39bd1b693fac
Author: Alascanfu <3201256097@qq.com>
Date: Sat Dec 18 01:20:27 2021 +0800
First-version
## 所以此时 有了两个版本了
咱们进行回滚
回滚到对应hash值的版本
git reset --hard [hashcode]
回滚到当前版本分支指向的的上一个版本
git reset --hard HEAD^
回滚到本地仓库中分支指向的指定版本
git reset --hard HEAD~3
这里都用HEAD指向当前仓库的版本
git log [filename]
查看单个文件可回滚的版本。
再来讲下Git的工作流程——常用命令
git的工作流程一般是这样的:
1、在工作目录中添加、修改文件;git add files
2、将需要进行版本管理的文件放入暂存区域;git commit
3、将暂存区域的文件提交到git仓库 git push
因此,git管理的文件有三种状态:已修改(modified),已暂存(staged),已提交(committed)
文件添加至暂存区 git add
文件从暂存区提交到本地版本库当中 git commit [file name]-m ‘msg’
当把一个新的文件通过git add [file-name]
命令时,他会将本地workspace中的文件给添加到暂存区(stage)当中,而此时其状态是由Untracked
转换为staged
(暂存状态),随后其git status
时可以发现其是需要进行从stage提交到本地版本库当中的 所以经过git commit [file-name] -m 'updateMsg'
来使其进入了本地的版本库中,而此时的文件变为Unmodify
状态。
所有历史记录都无一幸免 git reflog
查看所有的提交历史记录 git reflog
只要是对当前本地版本库进行过任何修改迭代的版本都会在这个里面显示,包括回滚记录也会显示(以及对应的分支)。
[root@alascanfu ~]# git reflog
cfd37d4 HEAD@{0}: commit: Second-version
a65df0c HEAD@{1}: commit (initial): First-version
git 的并行操作——分支操作
用来查看当前所有分支中所处于哪条分支当中
git branch
创建并且立即切换分支
git checkout -branch [branch-name]
[root@alascanfu ~]# git branch
* master
[root@alascanfu ~]# git checkout -b slave
Switched to a new branch 'slave'
[root@alascanfu ~]# git branch
master
* slave
[root@alascanfu ~]# git checkout master
Switched to branch 'master'
[root@alascanfu ~]# git branch
* master
slave
git branch [branchName]
branchName 必须是新的分支才能进行切换.
而git checkout [branchName]
是直接进行分支切换.
多作用的git checkout
git checkout [branchname]
在多分支中的作用是可以切换回之前已经存在过的分支继续执行当前分支的操作。
而git checkouy
的作用是检出,如果对文件状态来进行操作时,会放弃对文件的缓存区操作,但是需要重新reset进行操作。
分支合并 ——完全形态 git merge
当多个分支完成当前自己分支所需要做的事情之后,要把分支与主干进行更新操作,务必是保证当前分支已经稳定的完成当前分支所需要做的事情,那么此时执行git merge [branchName]
就可以了。
如果我们在分支slave中新建了helloSlave.txt文件
然后进行切换分支并且将其合并
[root@alascanfu ~]# touch helloSlave.txt
[root@alascanfu ~]# git branch
master
* slave
[root@alascanfu ~]# git checkout master
Switched to branch 'master'
[root@alascanfu ~]# git status helloSlave.txt
# On branch master
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# helloSlave.txt
nothing added to commit but untracked files present (use "git add" to track)
[root@alascanfu ~]# git merge slave
Already up-to-date.
[root@alascanfu ~]# git status helloSlave.txt
# On branch master
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# helloSlave.txt
nothing added to commit but untracked files present (use "git add" to track)
就可能会出现 疑问 ? 当前你在任意分支中创建文件,并没有添加到暂存区,也没有提交到本地本本库,那么在整个版本库当中都是可见的,就好比你在Slave这条分支上创建好了一个新的文件但是既没有git add
又没有git commit
,此时你切换回主分支,那么这个文件依旧存在,因为你创建的文件在工作目录当中,你切换本地时git只会更新有关的文件,而无关的文件还是放在工作区。
开发中分支应用——多人协作开发
开发之中,当多个小伙共同开发一个项目的时候,不管进行何种更新操作时,都要采用分支开发,因为master只有一个,每个人都可以从master中获取代码,拉去之后创建自己此次修改的分支,分支言简意赅,见名知意。
所以如果当项目出现严重错误的时候就可以从master中拉去上个版本就可以解决对应出现的错误了。
Git操作Github/Gitee
在本地需要首先生成ssh的公钥来进行与github进行ssh服务通信,以便免密登录。
[root@alascanfu ~]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): HHXF
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Passphrases do not match. Try again.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in HHXF.
Your public key has been saved in HHXF.pub.
The key fingerprint is:
SHA256:MRgw85***********qtZnQItMd426hOFwQXtsLTbSGe9H+U root@alascanfu
The key's randomart image is:
+---[RSA 2048]----+
|..+.+.. |
| = . + o |
|+ B = o o |
|.O.* * o + |
|+.X+. B S |
| *o=.= + E |
| .= + o . |
|.= . . |
|o.. |
-t 指定密钥类型
-f 指定密钥文件存储文件名 一般默认会存储在.ssh目录下
它会要求输入Enter file in which to save the key (/root/.ssh/id_rsa)
这里是生成的sshkey文件名,我们可以回车使用默认文件名
除此之外还会让你输入
Enter passphrase (empty for no passphrase):
这个密码会在让你push提交时候要输入的,除了git登录密码,还要输入这个密码,直接回车则空密码,这里我们直接回车
接着会让你在此输入密码,验证这里依旧回车
Enter same passphrase again:
对应生成如下两个文件
.pub 为结尾的就是你的公钥 你打开把它复制到你的SSH - KEYS/ADD NEWS中就可以了。
新建远程仓库如图所示进行相应的配置
创建好远程仓库就可以进行咱们的git相关操作了。
获取对应的项目地址然后就可以把远程仓库的数据复制下来了
[root@alascanfu studygit]# git clone https://github.com/HHXiaoFu/GitStudy.git
Cloning into 'GitStudy'...
## 然后就会克隆远程项目到本地工作目录当中啦~
github将本地版本库关联到远程仓库 git remote add origin
当我们想把我们自己本地的项目的版本推送到远程版本库当中的时候
我们就需要执行git remote add origin
这个命令
origin 是github上的远程仓库意思
首先找到SSH对应的远程仓库连接
先进行远程关联将本地版本库与远程版本库进行关联
$ git remote add origin git@github.com:HHXiaoFu/GitStudy.git
然后使用git push 推送到远程仓库
$ git push -u origin master
git 将远程仓库关联到本地版本库中
此时我们直接远程clone远程仓库
[root@alascanfu studygit]# git clone git@github.com:HHXiaoFu/GitStudy.git
Cloning into 'GitStudy'...
remote: Enumerating objects: 6, done.
remote: Counting objects: 100% (6/6), done.
remote: Compressing objects: 100% (5/5), done.
Receiving objects: 100% (6/6), done.
remote: Total 6 (delta 0), reused 0 (delta 0), pack-reused 0
此处不用在本地git init
因为clone 会自动帮我们初始化这个的。
默认会给我们拉取的是main分支
当然我们也可以通过git clone -b分支名
来拉取指定分支
[root@alascanfu studygit]# git branch
* main
github 将本地仓库数据提交到远程仓库
#当git add、git commit -m 之后
# git push -u orgin master
# 可能会报错
error: src refspec master does not match any
error: failed to push some refs to 'github.com:HHXiaoFu/GitStudy.git'
#git push <remote 名字> <本地分支的名字> : <远程库的名字>
git push origin HEAD:master !!! 可用
#git push <remote 名字> <本地分支的名字> 省略远程分支
git push origin master
#git push <remote 名字> : <远程库的名字> 省略本地分支
git push origin :master
#git push 全部省略
git push
git 的push 方法 如上图 依次进行测试。
工作中常用的保存当前更新操作 切换分支:git stash
## 保存当前工作 再去切换分支 否则可能导致之前的修改被清除
[root@alascanfu studygit]# git stash
No local changes to save
## 展示当前存储的工作状态
[root@alascanfu studygit]# git stash list
当你保存过后就可以 切换分支进行工作了。
当当前分支做完事情提交之后可以通过命令git stash pop
切换回刚刚的分支,然后在刚刚的分支中恢复状态。
就好比,我们做着做着项目,突然隔壁的项目经理喊我们紧急修改需求,这就不得不启动其他的分支进行操作,但是手里的事情还没有完成,那我们就可以先保存当前状态再去拉取另一个分支完成任务,之后在回来继续上条分支干活。
$ git stash pop # 会将stash list保存的列表也给删除掉
$ git stash apply # 不会删除列表里的内容会默认恢复第一个
# 如果想恢复```指定```内容可以使用git stash apply list名称
$ git stash drop # list名称可以移除指定list
$ git stash clear # 移除所有lsit
$ git stash show # 查看栈中最新保存的stash和当前目录的差异。
准确来说,这个命令的作用就是为了解决git不提交代码不能切换分支的问题。
将远程仓库中分支修改合并分支到本地仓库
git cherry-pick
$ git cherry-pick origin
The previous cherry-pick is now empty, possibly due to conflict resolution.
If you wish to commit it anyway, use:
git commit --allow-empty
Otherwise, please use 'git cherry-pick --skip'
On branch slave
You are currently cherry-picking commit e4650d3.
(all conflicts fixed: run "git cherry-pick --continue")
(use "git cherry-pick --skip" to skip this patch)
(use "git cherry-pick --abort" to cancel the cherry-pick operation)
Changes not staged for commit:
(use "git add/rm <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
deleted: test.txt
no changes added to commit (use "git add" and/or "git commit -a")
用来匹配当前分支中与远程仓库中的主分支有什么区别进行提示。
当你在github上删除了分支后本地 依旧能看到 被删除的分支
$ git remote show origin
用来查看github上目前的分支情况,如果分支被删除 需要使用参数prume来刷新本地版本库。
$ git remote prume origin
拉取所有分支、或者拉取到指定的分支
# 拉取所有的分支
$ git fetch
# 拉取指定分支的内容
$ git fetch branchName
git删除分支
git branch -D [branchName]
这个是删除本地的分支
如果要删除远程仓库的分支还需要进行操作
git push origin :branchName
#帝白灬黎墨@DESKTOP-85NIFSS MINGW64 /h/Git/studygit/GitStudy (main)
$ git push origin :slave
To github.com:HHXiaoFu/GitStudy.git
- [deleted] slave
#帝白灬黎墨@DESKTOP-85NIFSS MINGW64 /h/Git/studygit/GitStudy (main)
$ git branch -r
origin/HEAD -> origin/main
origin/main
origin/master
强制删除分支
帝白灬黎墨@DESKTOP-85NIFSS MINGW64 /h/Git/studygit/GitStudy (main)
$ git branch -D slave
Deleted branch slave (was 1920702).
帝白灬黎墨@DESKTOP-85NIFSS MINGW64 /h/Git/studygit/GitStudy (main)
$ git branch
* main
查看不同的分支当中指定文件的差异
git diff
git在实际中分支开发的步骤与方法
我们在开发的时候不要去直接修改master分支
1、拉取一个分支下来,分支名简明扼要,见名知意
2、然后在当前分支,进行相应的数据更新,数据修改等操作
3、然后合并分支 之后删除分支。
操作步骤大体如下:
1、首先在github上创建好一个远程仓库用来进行相应的git操作。
2、随后打开本地的版本库位置打开git bash 窗口。进行如下操作:
1)复制好对应的SSH链接,通过git clone
将远程仓库克隆到本地(可以这样做的前提是必须要先将生成好的SSH公钥添加到对应Github设置中的SSH key中,前面提到过这里就不再陈述)。
$ git clone git@github.com:HHXiaoFu/GitStudy.git
Cloning into 'GitStudy'...
remote: Enumerating objects: 38, done.
remote: Counting objects: 100% (38/38), done.
remote: Compressing objects: 100% (24/24), done.
remote: Total 38 (delta 18), reused 26 (delta 11), pack-reused 0
Receiving objects: 100% (38/38), 4.37 KiB | 72.00 KiB/s, done.
Resolving deltas: 100% (18/18), done.
2)随后你就会在对应的工作目录中看到克隆下来的远程仓库
cd GitStudy
进入本地仓库 进行git操作。
此时在目录右侧会出现你当前所处于的分支为(main)
3)根据工作流程 咱们需要不修改原分支的前提下 进行数据更新修改等操作,那咱们就来创建另一条分支来进行,见名知意,言简意赅的起名字 会让你工作更加顺利。如图显示:
此时 我们通过git branch branchname
来创建分支,然后通过git checkout branchname
来进入分支。
4)然后我们来进行 模拟生产环境 中 新建一个文件并且对其进行修改 操作步骤 如图所示:
此时来查看当前本地仓库中所有的文件状态:
你会发现此时本地仓库中出现了一个处于Untracked
状态的文件,所以我们需要将其 先通过git add
添加到暂存区、然后再通过git commit -a -m "msg"
来将其从暂存区提交到本地版本库当中,操作如图:
注意此时 我们所处分支 是我们自己创建出来的分支 而非远程仓库中的主分支。
此时我们可以通过 git branch -a
来查看所有的分支
通过 git branch -r
来查看github上存在的分支
如图:
所以我们知道此时远程仓库并没有我们当前分支的数据:
我们就需要进行push 提交当前分支的数据从本地版本库到远程仓库具体操作如下:
git push origin HEAD:updateFileData
这步会将你当前分支所做的修改上传到远程仓库当中,同时远程仓库中也会生成新的一条叫做updateFileData
的分支。
所以在此时此刻,远程仓库github中就进行了相应的数据更新,在你对应的分支上已经进行了相关的操作以及提交,所以你就可以看到如图:
我们的application.yaml已经被更新到updateFileData这条分支当中。
5)当我们对分支的所有操作都操作完毕之后,我们就该将这条分支合并到远程仓库的main分支当中了,操作如图所示:
首先我们进行了分支切换,切回到主分支,随后将分支updateFileData合并到了主分支当中。
此时 我们还需要再将本地仓库的数据push到远程仓库:
如图所示我们已经成功完成了数据修改、分支合并 、也没有对之前的主分支进行额外的操作。大功告成? 不 ,因为此时你的分支操作进行了合并,但是远程仓库与本地仓库中都还有这条分支的记录,所以最后一定要记住不要忘记把这条多出来的分支删除掉。
git branch -d branchname
删除本地的分支
git push origin :branchname
删除远程仓库中的分支
操作如图:
大功告成!这就是 最基础的git的相关操作 与 开发中的相关步骤,更多的话就是结合idea来进行项目测试,在idea中一样可以使用bash来进行操作,此处不再赘述。
感谢
非常感谢
17岁boy想当攻城狮
博文《关于Git这一篇就够了》:链接地址。
给了作者很多的启发与帮助 以及 他总结归纳的git常用操作
同时 也感谢 正在阅读此篇博文的你
学无止境 每天学一点 每天收获一点
博主在这里 祝愿 诸君能 事业有成 学有所得
写在最后
最后本文共计2w7k字
希望读者们慢慢食用
加油!致敬成长道路上的你和我~
如果可以 请记得 动动小手 一键三连