当前位置: 首页 > article >正文

Git的分支管理,远端仓库及标签管理

目录

一:分支管理

1.关于分支的基本操作

​编辑2.合并冲突的产生及解决 

 3.分支管理策略

4.bug分支

 二:远程操作

1.理解git

2.远程仓库 

3.向远程仓库推送(push)

4.拉取远程仓库 

5.配置Git 

​编辑 三:标签管理 

一:分支管理

1.关于分支的基本操作

在版本回退⾥,每次提交,Git都把它们串成⼀条时间线,这条时间线就可以理解为是⼀个分⽀。截⽌到⽬前,只有⼀条时间线,在Git⾥,这个分⽀叫主分⽀,即master分⽀,对于HEAD严格来说不是指向提交,⽽是指向master,master才是指向提交的,所以,HEAD指向的就是当前分⽀

 每次提交,master分⽀都会向前移动⼀步,这样,随着你不断提交,master分⽀的线也越来越⻓,⽽HEAD只要⼀直指向master分⽀即可指向当前分⽀

一些关于分支操作的常用命令

1.查看本地仓库的本地分支:      git branch

2.创建本地分支a:       git branch  a

3.切换到a分支:         git checkout a

4.创建并切换到新分支a:        git checkout -b a

5.a分支合并b分支(必须在a分支下合并) :        git merge b

6.删除分支a :    git branch -d a(必须在其他分支下进行删除操作)

7.强制删除还没有merge操作的分支a:      git branch -D a

8.以图的方式打印日志:       git log --graph --abbrev-commit

2.合并冲突的产生及解决 

场景设计:在dev分支中的readme文件添加一行 bbb on branch,在master分支中的readme文件添加一行ccc on branch

[mjwl@hcss-ecs-889f gitcode]$ git checkout -b dev
A	file2
M	readme
Switched to a new branch 'dev'

[mjwl@hcss-ecs-889f gitcode]$ vim readme //添加一行bbb on branch
[mjwl@hcss-ecs-889f gitcode]$ cat readme
hello git
hello world
bbb on branch
[mjwl@hcss-ecs-889f gitcode]$ git add .
[mjwl@hcss-ecs-889f gitcode]$ git commit -m "add file"
[dev a58c6ab] add file
 2 files changed, 2 insertions(+)
 create mode 100644 file2

[mjwl@hcss-ecs-889f gitcode]$ git checkout master
Switched to branch 'master'
[mjwl@hcss-ecs-889f gitcode]$ vim readme //添加一行ccc on branch
[mjwl@hcss-ecs-889f gitcode]$ cat readme
hello git
ccc on branch
[mjwl@hcss-ecs-889f gitcode]$ git add .
[mjwl@hcss-ecs-889f gitcode]$ git commit -m "add file1"
[master 8b99a67] add file1
 1 file changed, 1 insertion(+)
[mjwl@hcss-ecs-889f gitcode]$ git merge dev //合并dev分支
Auto-merging readme
CONFLICT (content): Merge conflict in readme //此处就出现了合并冲突的问题
Automatic merge failed; fix conflicts and then commit the result.

解决冲突的办法为手动修改,使用vim 打开readme文件,将文件中多余的内容进行删除

[mjwl@hcss-ecs-889f gitcode]$ vim readme
[mjwl@hcss-ecs-889f gitcode]$ cat readme
hello git
ccc on branch
hello world
[mjwl@hcss-ecs-889f gitcode]$ git status
# On branch master
# You have unmerged paths.
#   (fix conflicts and run "git commit")
#
# Changes to be committed:
#
#	new file:   file2
#
# Unmerged paths:
#   (use "git add <file>..." to mark resolution)
#
#	both modified:      readme
#
[mjwl@hcss-ecs-889f gitcode]$ git add .
[mjwl@hcss-ecs-889f gitcode]$ git commit -m "merge dev"
[master f2285fb] merge dev
[mjwl@hcss-ecs-889f gitcode]$ git status
# On branch master
nothing to commit, working directory clean
[mjwl@hcss-ecs-889f gitcode]$ cat readme
hello git
ccc on branch
hello world

再进行后面的提交操作,画图来辅助理解

 

 3.分支管理策略

 1.当合并分支时,没有发生冲突与发生冲突对应着两种合并模式

在这种 Fast forward 模式下,删除分⽀后,查看分⽀历史时,会丢掉分⽀信息,看不出来最新提
交到底是merge进来的还是正常提交的 

还有一种模式就是非Fast forward模式分别对应的状态图为

使用非Fast forward 模式合并的操作: git merge --no-ff  -m "merge dev2" dev2

在合并分⽀时,加上 --no-ff 参数就可以⽤普通模式合并,合并后的历史有分⽀,能看出来曾
经做过合并,⽽ fast forward 合并就看不出来曾经做过合并

2.在实际开发中,我们应该按照⼏个基本原则进⾏分⽀管理:
⾸先,master分⽀应该是⾮常稳定的,也就是仅⽤来发布新版本,平时不能在上⾯⼲活

那在哪⼲活呢?⼲活都在dev分⽀上,也就是说,dev分⽀是不稳定的,到某个时候,⽐如1.0版本发布时,再把dev分⽀合并到master上

4.bug分支

场景引入:假如我们现在正在 dev分⽀上进⾏开发,开发到⼀半,突然发现 master 分⽀上⾯有bug,需要解决。在Git中,每个bug都可以通过⼀个新的临时分⽀来修复,修复后,合并分⽀,然后将临时分⽀删除。但此时dev中的代码在工作区中还未开发完,还不能提交的,并且dev分支中修改的readme文件,在master分支中的readme文件是可以直接看到的

[mjwl@hcss-ecs-889f ~]$ cd gitcode/
[mjwl@hcss-ecs-889f gitcode]$ git branch
  dev
* master
[mjwl@hcss-ecs-889f gitcode]$ git checkout dev
Switched to branch 'dev'
[mjwl@hcss-ecs-889f gitcode]$ ll
total 4
-rw-rw-r-- 1 mjwl mjwl  0 Oct 16 19:56 file1
-rw-rw-r-- 1 mjwl mjwl  0 Oct 16 23:17 file2
-rw-rw-r-- 1 mjwl mjwl 36 Oct 17 08:41 readme
[mjwl@hcss-ecs-889f gitcode]$ vim readme
[mjwl@hcss-ecs-889f gitcode]$ cat readme
hello git
hello world
bbb on branch
abcde
[mjwl@hcss-ecs-889f gitcode]$ git checkout master
error: Your local changes to the following files would be overwritten by checkout:
	readme
Please, commit your changes or stash them before you can switch branches.
Aborting

对于在这里还未将dev分支中对readme文件做的修改做提交的话,是直接不能切换分支的,必须进行git stash也就是进行保存

git stash : 将工作区中的修改保存到stash当中,并且保存的是被Git追踪管理的文件,被储藏的内容可以在将来某个时间恢复出来 

[mjwl@hcss-ecs-889f gitcode]$ git stash
Saved working directory and index state WIP on dev: a58c6ab add file
[mjwl@hcss-ecs-889f gitcode]$ git status
# On branch dev
nothing to commit, working directory clean
[mjwl@hcss-ecs-889f gitcode]$ tree .git
.git
├── branches
├── COMMIT_EDITMSG
├── config
├── description
├── HEAD
├── hooks
│   ├── applypatch-msg.sample
│   ├── commit-msg.sample
│   ├── post-update.sample
│   ├── pre-applypatch.sample
│   ├── pre-commit.sample
│   ├── prepare-commit-msg.sample
│   ├── pre-push.sample
│   ├── pre-rebase.sample
│   └── update.sample
├── index
├── info
│   └── exclude
├── logs
│   ├── HEAD
│   └── refs
│       ├── heads
│       │   ├── dev
│       │   └── master
│       └── stash
├── objects
│   ├── 05
│   │   └── fe86c3cd7ec2287a059a43b68cdc45f79cc43b
│   ├── 0e
│   │   └── 6148d45bfedd85cdea381c3417c88454617281
│   ├── 12
│   │   └── a321c48c6246f6dbfcec5296b80492475d82c3
│   ├── 2f
│   │   └── 672136ab5a6e850431a73e755d5c78b4b860ca
│   ├── 41
│   │   └── 49810411ed9f04f8cd9143ddaee4e9f5cfd0a0
│   ├── 44
│   │   └── cf637eef4417a6fbdf767ac4c5ffeb1d33725b
│   ├── 47
│   │   └── 65d15e9fb09938999b5425df00105d905fbb2c
│   ├── 49
│   │   └── 0694616042d08fcb883da3f2da7642dd83b367
│   ├── 4d
│   │   └── 2614d897d80039201874a310ed74134235dd87
│   ├── 5a
│   │   └── 9e298370936fc5fc96d04ced7d871afca1f7d2
│   ├── 6e
│   │   └── 84d6a5ed71a327ba3376cac9801558d9ea2e80
│   ├── 8b
│   │   └── 99a675a1f8e20f4c1bbecfd7dd2962391c3f11
│   ├── 8d
│   │   └── 0e41234f24b6da002d962a26c2495ea16a425f
│   ├── 98
│   │   └── 9741d5c4d2f8a9ef91ad5343bc04eedcdb0288
│   ├── a3
│   │   └── e4cd65d979a01d9d99d8de82f1a222f2a3f678
│   ├── a5
│   │   └── 8c6ab1485170fd1e7fd4b3b667dfdd97d5163b
│   ├── bc
│   │   └── e0eaf270f7c944f91ed3ec09cc1d817e85daf1
│   ├── e6
│   │   └── 9de29bb2d1d6434b8b29ae775ad8c2e48c5391
│   ├── eb
│   │   └── f3ae9cd4d307eadac9d90d50bf9e0e98f5a99a
│   ├── f2
│   │   └── 285fb401d3278fe6fba9884508393c7af51506
│   ├── fb
│   │   └── 51f22080430b26eb0e2010a45a6eb57d5fff23
│   ├── info
│   └── pack
├── ORIG_HEAD
└── refs
    ├── heads
    │   ├── dev
    │   └── master
    ├── stash
    └── tags

会发现在.git/refs/中创建一个stash,来保存工作区中的代码 ,并且⼯作区是⼲净的(除⾮有没有被Git管理的⽂件),可以放⼼地创建分⽀来修复bug

 再基于master分⽀修复bug,所以需要切回 master 分⽀,再新建临时分⽀来修复bug

[mjwl@hcss-ecs-889f gitcode]$ git checkout master
Switched to branch 'master'
[mjwl@hcss-ecs-889f gitcode]$ git checkout -b fix_bug
Switched to a new branch 'fix_bug'
[mjwl@hcss-ecs-889f gitcode]$ vim readme
[mjwl@hcss-ecs-889f gitcode]$ git add .
[mjwl@hcss-ecs-889f gitcode]$ git commit -m "fix bug"
[fix_bug f7a9c04] fix bug
 1 file changed, 1 insertion(+)
[mjwl@hcss-ecs-889f gitcode]$ git checkout master
Switched to branch 'master'
[mjwl@hcss-ecs-889f gitcode]$ git merge --no-ff -m "merge fix_bug" fix_bug
Merge made by the 'recursive' strategy.
 readme | 1 +
 1 file changed, 1 insertion(+)
[mjwl@hcss-ecs-889f gitcode]$ git status
# On branch master
nothing to commit, working directory clean
[mjwl@hcss-ecs-889f gitcode]$ cat readme
hello git
ccc on branch
hello world
abcdes 

假设当添加一行abcdes后就能修复bug,那么当创建fix_bug分支打开readme文件就可以添加这行信息

 再提交,回到master分支合并fix_bug分支,再继续回到dev分支下进行开发 

但刚才我们使用git stash命令将工作区的内容进行了保存这就需要恢复出来,再继续完成开发

查看当前stash区存储的内容:    git stash list

恢复stash区中的内容:       git stash pop

注:使⽤ git stash pop 命令,恢复的同时会把stash也删了,使用git stash list将查不到任何数据,可以采⽤ git stash apply 恢复,但是恢复后,stash内容并不删除,你需要⽤ git stash drop 来删除;

[mjwl@hcss-ecs-889f gitcode]$ git checkout dev//回到dev分支
Switched to branch 'dev'
[mjwl@hcss-ecs-889f gitcode]$ git status
# On branch dev
nothing to commit, working directory clean
[mjwl@hcss-ecs-889f gitcode]$ git stash list
stash@{0}: WIP on dev: a58c6ab add file
[mjwl@hcss-ecs-889f gitcode]$ git stash pop
# On branch dev
# 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:   readme
#
no changes added to commit (use "git add" and/or "git commit -a")
Dropped refs/stash@{0} (490694616042d08fcb883da3f2da7642dd83b367)

[mjwl@hcss-ecs-889f gitcode]$ vim readme//打开文件,继续完成开发
[mjwl@hcss-ecs-889f gitcode]$ cat readme
hello git
hello world
bbb on branch
abcde
i am coding

此时还会发现修复bug的内容,并没有在 dev 上显⽰ ,这是因为Master 分⽀⽬前最新的提交,是要领先于新建 dev 时基于的 master 分⽀的提交的,所以我们在 dev 中当然看不⻅修复bug的相关代码。此时的状态图为

 但最后还是要master分支合并dev分支的,如果回到master分支直接合并的话,可能会有冲突,⽽代码冲突需要我们⼿动解决(在 master 上解决)。我们⽆法保证对于冲突问题可以正确地⼀次性解决掉,因为在实际的项⽬中,代码冲突不只⼀两⾏那么简单,有可能⼏⼗上百⾏,甚⾄更多,解决的过程中难免⼿误出错,导致错误的代码被合并到 master 上,而我们必须保证master分支稳定的,此时的状态图为

因此我们采用的解决方式为 在⾃⼰的分⽀上合并下 master ,再让 master 去合并dev ,这样做的⽬的是有冲突可以在本地分⽀解决并进⾏测试,⽽不影响 master

[mjwl@hcss-ecs-889f gitcode]$ git branch
* dev
  fix_bug
  master

//将开发完的代码进行提交
[mjwl@hcss-ecs-889f gitcode]$ git add .
[mjwl@hcss-ecs-889f gitcode]$ git commit -m "md readme"
[dev 4801edc] md readme
 1 file changed, 2 insertions(+)

//dev分支合并master分支,有冲突解决冲突,再进行提交
[mjwl@hcss-ecs-889f gitcode]$ git merge --no-ff -m "merge master" master
Auto-merging readme
CONFLICT (content): Merge conflict in readme
Automatic merge failed; fix conflicts and then commit the result.
[mjwl@hcss-ecs-889f gitcode]$ vim readme
[mjwl@hcss-ecs-889f gitcode]$ git add .
[mjwl@hcss-ecs-889f gitcode]$ git commit -m "merge master fix"
[dev 29d32e6] merge master fix

//切换到master分支合并dev分支,并进行提交
[mjwl@hcss-ecs-889f gitcode]$ git checkout master
Switched to branch 'master'
[mjwl@hcss-ecs-889f gitcode]$ git merge --no-ff -m "merge dev" dev
Merge made by the 'recursive' strategy.
 readme | 2 ++
 1 file changed, 2 insertions(+)
[mjwl@hcss-ecs-889f gitcode]$ cat readme
hello git
ccc on branch
hello world
bbb on branch
i am coding
abcdes

 二:远程操作

1.理解git

git其实是个分布式管理控制系统,而我们自己的电脑就相当于一个版本库,但在多人协作开发时如何访问对方所写的代码或者所做的操作,这就需要双方之间互相进行推送,但如果对方电脑没联网或者故障的话,就会丢失所有的数据

因此需要一个中央服务器仓库,来存放大家的数据,达到协作开发

2.远程仓库 

1.使用gitee创建一个远程仓库

填写基本信息

 

当仓库创建后,仓库是开源/私有的,我们可以设置为开源

找到对应新建库,点击管理

 

往下翻就能找到设置操作

 

 

2.克隆远程仓库

 在创建远程后,还需要将仓库克隆/下载远端仓库到本地,需要使⽤ git clone 命令,后⾯跟上我们的远端仓库的链接,远端仓库的链接可以从仓库中找到:选择“克隆/下载”获取远程仓库链接

SSH协议和HTTPS协议是Git最常使⽤的两种数据传输协议。SSH协议使⽤了公钥加密和公钥登陆机制,体现了其实⽤性和安全性,使⽤此协议需要将我们的公钥放上服务器,由Git服务器进⾏管理。使⽤HTTPS⽅式时,没有要求,可以直接克隆下来 

使用HTTPS方式:

1.先点击这里保存下来

2.执行git clone命令

[mjwl@hcss-ecs-889f ~]$ mkdir Git
[mjwl@hcss-ecs-889f ~]$ cd Git

//执行git clone操作不能在任意一个本地仓库所在的目录中去执行
[mjwl@hcss-ecs-889f Git]$ git clone https://gitee.com/lin-ciyu/pracite.git
Cloning into 'pracite'...
remote: Enumerating objects: 17, done.
remote: Counting objects: 100% (17/17), done.
remote: Compressing objects: 100% (12/12), done.
remote: Total 17 (delta 1), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (17/17), done.

[mjwl@hcss-ecs-889f Git]$ ll -a
total 12
drwxrwxr-x  3 mjwl mjwl 4096 Oct 17 18:42 .
drwx------ 16 mjwl mjwl 4096 Oct 17 18:42 ..
drwxrwxr-x  5 mjwl mjwl 4096 Oct 17 18:42 pracite

//获取远程仓库的信息
[mjwl@hcss-ecs-889f Git]$ cd pracite
[mjwl@hcss-ecs-889f pracite]$ git remote -v
origin	https://gitee.com/lin-ciyu/pracite.git (fetch)
origin	https://gitee.com/lin-ciyu/pracite.git (push)
[mjwl@hcss-ecs-889f pracite]$ git remote
origin //origin为原始库名

 使用SSH方式:

 1.点击保存SSH协议

2.如果直接git clone 协议 执行的话,是会出错的,这是因为使⽤SSH⽅式克隆仓库,由于我们没有添加公钥到远端库中,服务器拒绝了我们的clone链接

解决方式:

(1)创建SSH Key。在⽤⼾主⽬录下,看看有没有.ssh⽬录,如果有,再看看这个⽬录下有没有
id_rsa 和 id_rsa.pub 这两个⽂件,如果已经有了,可直接跳到下⼀步。如果没有,需要创建
SSH Key:

[mjwl@hcss-ecs-889f ~]$ ls -al ~/.ssh
ls: cannot access /home/mjwl/.ssh: No such file or directory
#找不到就直接执行下面的操作

[mjwl@hcss-ecs-889f ~]$ ssh-keygen -t rsa -C "2090493145@qq.com" #这里写的是自己对应的邮箱,下面的操作直接按回车键
Generating public/private rsa key pair.
Enter file in which to save the key (/home/mjwl/.ssh/id_rsa): 
Created directory '/home/mjwl/.ssh'.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/mjwl/.ssh/id_rsa.
Your public key has been saved in /home/mjwl/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:IletGtdyNwgVandLeXs3mQYGbFpT1J5/fAErf6JKhmU 2090493145@qq.com
The key's randomart image is:
+---[RSA 2048]----+
|          +ooo.  |
|         + =.o . |
|        = * =o= .|
|       o * =.+.=o|
|    . + SE+ * .*=|
|     o =+o . +.oB|
|      .. o  . o o|
|        o  .     |
|         ..      |
+----[SHA256]-----+

[mjwl@hcss-ecs-889f ~]$ ls -a .ssh/ 
.  ..  id_rsa  id_rsa.pub

#查看公钥
[mjwl@hcss-ecs-889f ~]$ cat .ssh/id_rsa.pub 
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDe1H3/dbxWk2Jl0wcsiK8PZxZW0mTxXxYuoNFO2RsYmV4RdE5Rf8aItqLlEe6MB3L5Xz/2XXxJp9VEtAnIbqT0Xk0Jg7ETsQ4ox8MVQVOKuEXOx6UZTLA+ok3Wih2YLSIgNw9ZjVOHv+xVuJl1UjYTIVoqZNxEhUduQaun/Orl4gqu4QABrhYHDAOIX8DcrQW22ZCZGNznmL8Y+LK4d9A6a1neCsc5vyWlco+sNFGFPTRcXTg6QOWWL/nstlWqo7GUWSa6El1JrexePsuK72uWSPxzMhJsfoRhL/IrPUQATdYnyWTHPCnpr3qF+t+WyaMTtR7CevjeGig/Z8WBAqjT 2090493145@qq.com

(2)将公钥添加到远程仓库中

 

最后确定,再输入密码 

再使用git clone进行克隆远程仓库到本地

3.向远程仓库推送(push)

提交时要注意,如果我们之前设置过全局的name和e-mail,这两项配置需要和 gitee 上配置的⽤⼾名和邮箱⼀致,否则会出错。或者从来没有设置过全局的 name和e-mail,那么我们第⼀次提交时也会报错。这就需要我们重新配置下了,同样要注意需要和 gitee 上配置的⽤⼾名和邮箱⼀致

[mjwl@hcss-ecs-889f gitcode]$ ll
total 12
-rw-rw-r-- 1 mjwl mjwl    0 Oct 16 19:56 file1
-rw-rw-r-- 1 mjwl mjwl    0 Oct 16 23:17 file2
-rw-rw-r-- 1 mjwl mjwl   10 Oct 17 19:56 file.txt
drwxrwxr-x 5 mjwl mjwl 4096 Oct 17 20:00 pracite
-rw-rw-r-- 1 mjwl mjwl   69 Oct 17 09:51 readme

//进入到对应远端仓库的目录下
[mjwl@hcss-ecs-889f gitcode]$ cd pracite
[mjwl@hcss-ecs-889f pracite]$ vim file.txt
[mjwl@hcss-ecs-889f pracite]$ git add .
[mjwl@hcss-ecs-889f pracite]$ git commit -m "add file"
[master d0bdbf2] add file
 1 file changed, 2 insertions(+)
 create mode 100644 file.txt

//进行推送操作
[mjwl@hcss-ecs-889f pracite]$ git push origin master
Username for 'https://gitee.com': lin-ciyu
Password for 'https://lin-ciyu@gitee.com': 
Counting objects: 4, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 266 bytes | 0 bytes/s, done.
Total 3 (delta 1), reused 0 (delta 0)
remote: Powered by GITEE.COM [1.1.5]
remote: Set trace flag 9f456c81
To https://gitee.com/lin-ciyu/pracite.git
   416d631..d0bdbf2  master -> master
[mjwl@hcss-ecs-889f pracite]$ ll
total 12
drwxrwxr-x 3 mjwl mjwl 4096 Oct 17 20:00 10_13
drwxrwxr-x 3 mjwl mjwl 4096 Oct 17 20:00 10_15
-rw-rw-r-- 1 mjwl mjwl   11 Oct 17 20:16 file.txt

如果是使用的HTTPS协议的话,在推送的时候,还需要输入用户名和密码 

在gitee自己头像那里选择设置

 

4.拉取远程仓库 

如果远程仓库中的代码比我们本地的新的话,在开发时先拉取远程仓库中的代码

5.配置Git 

在⽇常开发中,我们有些⽂件不想或者不应该提交到远端,在Git⼯作区的根⽬录下创建⼀个特殊的 .gitignore ⽂件,然后把要忽略的⽂件名填进去,Git就会⾃动忽略这些⽂件了

可以在创建仓库的时候,勾选添加相应选项

如果在创建时没有勾选的话,也可以自己在远端仓库目录下创建一个.gitignore文件,进行添加对应内容

 

[mjwl@hcss-ecs-889f pracite]$ vim .gitignore
[mjwl@hcss-ecs-889f pracite]$ touch a.so
[mjwl@hcss-ecs-889f pracite]$ git status
# 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:   .gitignore //会发现这里把a.so文件忽略了
#
no changes added to commit (use "git add" and/or "git commit -a")
[mjwl@hcss-ecs-889f pracite]$ git add -f a.so //强制添加

//查看文件被忽略的原因
[mjwl@hcss-ecs-889f pracite]$ touch b.so
[mjwl@hcss-ecs-889f pracite]$ git check-ignore -v b.so
.gitignore:28:*.so	b.so

也可以给命令起别名:

 三:标签管理 

1.理解标签

标签 tag ,可以简单的理解为是对某次 commit 的⼀个标识,相当于起了⼀个别名。对于作用来说相较于难以记住的 commit id  tag 很好的解决这个问题,因为 tag ⼀定要给⼀个让⼈容易记住,且有意义的名字。当我们需要回退到某个重要版本时,直接使⽤标签就能很快定位到

2.对标签的一些操作

 为最近一次提交创建标签 :  git tag 标签名

为具体的一次提交创建标签 : git tag 标签名  对应的commit id

创建标签并添加信息 : git tag -a 标签名 -m "信息"  commit id

查看标签:  git tag

查看标签的详细信息: git show 标签名

删除标签:  git tag -d 标签名

将本地标签推送到远端仓库 :   git push origin 标签名

将本地所有标签推送到远端仓库 : git push origin --tags

从远程删除标签: git tag -d 标签名   git push origin  :标签名

在推送到远端后,就能看到


http://www.kler.cn/news/359565.html

相关文章:

  • 鸿蒙网络编程系列3-TCP客户端通讯示例
  • java版Spring Cloud+Mybatis+Oauth2+分布式+微服务+实现工程管理系统
  • Linux系统:配置Apache支持CGI(Ubuntu)
  • 子比主题美化 – 评论区添加随机夸夸功能(修复api)
  • 【从零开始的LeetCode-算法】910. 最小差值 II
  • OWASP Top 10 漏洞详解:基础知识、面试常问问题与实际应用
  • 用PYTHON可视化分析热门MEMECOIN的代码思路参考。
  • 【Vue】项目部署本地部署和服务器部署
  • 【VUE】Vue中的 keep-alive 组件
  • Java 剪枝搜索
  • 168K+ Star!AutoGPT:一个构建、部署和运行AI代理的强大平台
  • 005_django基于Python的乡村居民信息管理系统设计与实现2024_106f2qg9
  • SA优化GRU回归预测(matlab代码)
  • upload-labs靶场Pass-02
  • 在MySQL中为啥引入批量键访问(Batch Key Access, BKA)
  • 【计算机网络原理】GBN,SR,TCP区别以及案例介绍
  • 第 6 章 Kafka-Eagle 监控 和 Kafka-Kraft 模式
  • AI图像处理工具:开发者高阶用法与最佳实践
  • JavaWeb——Maven(2/8):概述-介绍安装(步骤、具体操作、测试)
  • Leetcode 3194. 最小元素和最大元素的最小平均值