文章目录
- 1. 概念介绍
- 2. 客户端
- 2.1 介绍
- 2.2 仓库操作
- 2.3 文件操作
- 2.4 分支原理与操作
- 2.5 标签
- 2.6 远程仓库
- 2.7 README与IGNORE
- 3. IDEA集成
- 4. 版本号
- 4.1 介绍
- 4.2 文件操作
- 4.2 分支操作
- 5. 命令
- 5.1 介绍
- 5.2 仓库操作
- 5.3 文件操作
- 5.4 分支操作
- 5.5 标签操作
- 5.6 远程仓库
1. 概念介绍
软件配置管理(SCM,Software Configuration Management)是指通过执行版本控制、变更控制的规程,以及使用合适的配置管理软件,来保证所有配置项的完整性和可跟踪性。配置管理是对工作成果的一种有效保护。
Visual SourceSafe(VSS)是美国微软公司出品的版本控制系统,是集中式版本控制系统。
Concurrent Versions System(CVS)是基于客户端/服务器的行为使得其可容纳多用户,构成网络也很方便。也是集中式版本控制系统。
Subversion(SVN)是CVS的升级,通过采用分支管理系统的高效管理,简而言之就是用于多个人共同开发同一个项目,实现共享资源,实现最终集中式的管理。
Git为开源的分布式版本控制系统,可以有效、高速的处理从很小到非常大的项目版本管理。也是Linus Torvalds为了帮助管理Linux内核开发而开发的一个开放源代码的版本控制软件。
版本控制
版本包括软件版本和文件版本。
把每次修改记录下来,防止重要文件丢失等问题。一旦出现问题,可以通过这些修改记录进行恢复数据。
版本控制可以帮我们自动生成版本号。
版本控制软件的基础功能
- 保存和管理文件
- 提供客户端工具进行访问
- 提供不同版本文件的比对功能
集中式版本控制
集中式版本控制存在着一些问题,如文件冲突问题。
VSS采用加锁(读写者问题)的方式来解决这个问题。这种处理方式会导致,对于同一份文件,当一个人处理完成后,下一个人才可以再进行处理,会导致开发效率低下。
CVS,SVN在提交文件时,对文件进行比对,然后进行文件合并,以此来解决文件冲突问题。
分布式版本控制
如果中央服务器宕机了,则会导致整个系统崩溃,数据丢失,会导致严重的问题。所以就出现了分布式版本控制。
这种情况下,如果中央服务器宕机了,但是我们本地的仓库依然存在,用户依然可以对文件进行修改等操作,可以将文件提交到本地仓库,避免数据丢失。当中央服务器恢复时,将本地仓库与中央服务器进行同步。
2. 客户端
2.1 介绍
GitHub Desktop是图形界面客户端。
在左上角Github Desktop中选择settings进行相关配置。
填写Name和Email,为了在修改文件时,让工具知道是哪个用户修改的文件。
2.2 仓库操作
我们选择在本地创建一个新的仓库,填写相关信息。
点击Create Repository创建仓库后,进行新的界面。
我们可以点击ADD再创建一个新仓库,我们将其命名为git-local-test2
。
当我们不想要该仓库时,可以右键该仓库,选择remove。如果不选择Also move this repository to Recycle Bin
,则只是从该工具系统中删除仓库,并不删除文件。如果勾选了,则也会删除实际的文件。
2.3 文件操作
我们在仓库目录下随便创建一个文件,比如a.txt
,然后在其中随便写点内容。此时,在客户端工具中就会查看到新创建的文件。
但是此时,我们的文件并没有放入本地仓库中。本地仓库中的文件,其实是在.git
隐藏文件夹下的。
当我们点击左下角的commit,就会将操作文件提交到本地仓库中。此时,changes下就没有文件存在了。因为当提交完成后,本地仓库中的内容与仓库目录下的操作文件内容一致,所以无文件变化,changes中就没有文件存在了。
当我们修改文件后,再次提交到本地仓库,相当于创建了一个新的文件,并不会覆盖之前旧的文件。
点击左上角的History,可以查看到我们每次操作的文件变化。
git采用的版本号是由40个16进制的数字组成。版本号也称为提交码。
同样的,当我们删除掉本地文件时,也会在客户端中看到变化。
2.4 分支原理与操作
当我们在多人协作开发时,多人会很多次的提交文件,提交过程是没有任何规律的,这样想对定位到某一次提交,去查看提交了哪些内容,是非常困难的。
另一方面,开发人员在开发不同的功能模块时,可能会修改同一份文件,这样就会可能产生文件冲突,虽然对于文件冲突有解决方案,但是频繁的出现冲突,就会非常麻烦,且存在一些未知的风险。
还有就是我们频繁的修改会产生大量的版本信息,导致仓库的体积越来越大,那么我们再去做定位于文件比对时,其效率也会变得越来越慢。
所以,此时我们就需要使用分支功能。说白了,分支就是当前版本库的一个副本,开发人员可以在这个副本上进行文件操作。在处理完成最后,再将不同的副本进行合并。
这种情况下,只需要在最后合并的时候解决一次文件冲突即可。
在客户端中,我们点击New Branck创建新分支,填写分支名称,选择基于main主分支进行创建,点击Create即可。
我们创建一个order分支和一个user分支。
在user分支中,添加文件user.txt,随便写入一些内容,然后commit提交。此时,我们将分支切换到order,打开文件目录,是看不到user分支下的文件的,当切换为user分支时,又可以在目录下看到user分支下的文件了。
在order分支中,添加文件order.txt,随便写入一些内容,然后commit提交。
此时,我们切换回主分支,可以点击下方按钮,进行分支的合并操作。
选择要合并的分支,点击按钮进行合并。
会看到提示,合并成功。
为了演示合并时产生的文件冲突问题。我们在user分支下创建common.txt文件,里面写入user单词,并commit提交到user分支。然后我们在order分支下创建common.txt文件,里面写入order单词,并提交到order分支。此时,我们切换到主分支,点击合并分支按钮,将user分支合并到主分支。然后,我们再将order分支合并到主分支时,会出现如下提示。
然后我们继续点击Create a merge commit
按钮,会出现如下提示。我们可以点击Open in Visual Sublime Text
,进入到Sublime中进行查看。
此时,我们可以看到如下冲突信息。
========
之上表示现在已经存在的内容,之下表示新合并进来的内容
我们可以将多余内容删除,只留下如下内容,这也就意味着我们选择保留两者。
然后我们点击Continue Merge
即可成功合并。
2.5 标签
在我们进行分支合并操作时,我们无法自定义的去添加描述信息。所以我们就可以通过添加标签的形式进行说明。
在History
中,右键记录,选择Create Tag
,然后输入Tag的名称,点击创建即可。
同样,我们也可以通过右键记录,进行Tag的删除操作。
2.6 远程仓库
Github:https://github.com/
在github中,我们创建一个仓库。填写仓库名称remote-test
、描述信息、选择仓库是否私有、勾选初始化redeme文件,点击创建即可。
点击Add file
可以选择直接创建文件或者上传文件。我们选择创建文件,命名为test.txt
,并随便写入一些内容,填写提交描述信息,并且点击commit按钮进行提交创建。
我们再次编辑该文件,然后再次提交。在文件页面中,点击右上角的History
即可查看文件的修改记录。
在Code页面中,点击Branch,我们可以填写分支名称,创建新的分支。
我们想要将这个仓库的内容下载到本地,可以在客户端工具中,选择File,点击Clone Repositroy,选择要克隆到仓库以及bacon的路径,点击克隆将仓库克隆到本地。这样就将远程仓库下载到本地了。
我们在这个本地仓库中新建一个文件a.txt
,随便添加一些内容。然后在客户端中点击commit将新增文件提交到本地仓库。此时,我们只是将这个新增的文件提交到了本地仓库中,并没有上传至远程仓库。我们要上传至远程仓库,点击Push origin
按钮即可。
这样,我们在github远程仓库中就可以看到我们所提交的文件了。
2.7 README与IGNORE
README.md文件用于对仓库进行描述。
注意:对于文件比对功能,只能针对文本文件,对于word、excel、图片等文件无法进行比对。
ignore文件写入需要忽略的文件,被忽略的文件不会进行提交。
在ignore文件中我们可以使用*
作为通配符,如*.docx
。
3. IDEA集成
在IDEA中我们创建一个新的项目。
此时,我们先不勾选Create Git Repository
。
我们在项目中新建一个文件a.txt
,随便写入一些内容。
此时,我们想要将我们的项目上传至github中。
我们选择上方的VCS,选择Share Project on GitHub
。
由于之前已经配置过github账号,所以此时不会提示让我们进行配置,如果没有配置,则按照步骤进行配置即可。
这里,点击share按钮。会出现如下提示,是让我们将内容提交到本地仓库。此时,我们只勾选a.txt
文件。
然后点击add按钮即可。此时,在github远程仓库中就已经有了我们的项目。
我们在本地对a.txt
文件进行修改后,文件名称的颜色会发生改变。我们右键该文件,可以出现如下信息。
点击Commit file
,填写描述信息,点击commit可以将该文件提交到本地仓库,点击commit and push按钮,然后点击push可以提交到本地仓库并且上传至远程仓库。
我们将远程仓库中的a.txt
文件内容修改为ccc
。但是此时,我们本地a.txt
文件的内容为bbbbbbb
。此时会出现我们本地文件与远程仓库文件不统一。我们就要将远程仓库中的文件同步到本地。点击上方工具栏中的Git选项,选择Pull选项,点击pull按钮即可。
为了演示文件冲突,我们将远程仓库中的a.txt
文件内容修改为ddd
。但是此时,我们本地a.txt
文件的内容为ccc
,我们将其修改为cccaaa
。此时我们再提交a.txt
文件。会出现如下提示。
我们点击Merge
按钮,出现如下提示。
我们可以直接选择保留本地,或者采用远程文件。或者点击Merge
按钮进行人工手动合并文件。我们点击Merge
按钮出现如下提示。
左部分为我们本地文件,右边部分为远程仓库文件,中间为合并后的文件。
>>
表示Accept,×
表示Ignore。
假如我们想同时保留本地和远程的内容,那么就点击两侧的>>
或者<<
按钮即可。然后点击Apply按钮。
这样便解决了文件冲突,成功将文件提交到了远程仓库。
Gitee
如果想要将项目上传至Gitee仓库,需要在IDEA中安装Gitee
插件。
4. 版本号
4.1 介绍
版本号是根据我们当前提交的内容,采用SHA-1加密算法进行生成的。长度为40位。避免了版本号重复冲突。
版本号可以用于定位仓库中的文件。前2位:文件夹,后38位:文件名。可以在.git
文件夹下的objects目录中找到。
4.2 文件操作
如果我们想查看.git
目录中objects中,通过版本号定位到的文件。可以通过使用git
命令行进行查看。
git cat-file -p 版本号
# parent为上次提交的版本号
➜ remote-test git:(main) git cat-file -p f8744fb3ee43b9724aa10a70f97147df0b0e6d21
tree f630198fa18b852999ca11dee336afafad9b79d5
parent 27961ee69740f6ad52fc41586090dae410b5ae1f
author Mango1698 <mango_1698@163.com> 1715323425 +0800
committer Mango1698 <mango_1698@163.com> 1715323425 +0800
Create a.txt
提交本地文件
# 可以通过上述返回的信息 tree f630198fa18b852999ca11dee336afafad9b79d5 所给出的版本号,继续查询
# 该文件中是包含了文件的状态信息,同时也包含着文件的版本号
➜ remote-test git:(main) git cat-file -p f630198fa18b852999ca11dee336afafad9b79d5
100644 blob 24a5c29ee326bb4525fbe9bf61d4a20bb1e147ad README.md
100644 blob 7c4a013e52c76442ab80ee5572399a30373600a2 a.txt
100644 blob a40ead6c4ed495142a6e1b15025cabba7a40485e test.txt
# 通过文件的版本号继续查询
➜ remote-test git:(main) git cat-file -p 7c4a013e52c76442ab80ee5572399a30373600a2
aaa%
# 这样,文件内容就被查询出来了
4.2 分支操作
.git
目录下存在HEAD
文件,文件内容如下。该文件指向了一个路径。
ref: refs/heads/main
我们可以通过该路径,在.git
目录下进行寻找。
打开main
文件后,我们看到如下内容。
f8744fb3ee43b9724aa10a70f97147df0b0e6d21
这个正是我们最后一次提交的一个版本号。
由此,git就可以方便的判断出,那么多的提交,哪一个是最新的提交。
之所以HEAD
文件不直接记录最新的一次提交,反而是只想了main
文件,因为我们可能是存在着多个分支。这里的main
文件是记录的主分支。
我们创建一个分支user
后,并且在user
分支中进行一次提交操作,可以看到HEAD
中所指向的路径更改了。
同样,我们可以根据该路径可以找到user
文件,该文件中记录了该分支最后一次提交。
我们只要切换分支,
HEAD
文件中的路径就会跟着变化,不是只有发生提交等操作才会变化,而是只要切换分支,就会变化!
同样的,当我们切换分支时,git工作目录下的文件也会随之变化!
比如,我们在主分支下创建了一个b.txt文件,当我们切换到user分支时,是看不到这个文件的。
当我们在user分支下创建了一个c.txt文件,当我们切换到主分支是,同样也是看不到的。
当我们对文件进行修改后,但是并没有提交时,我们此时切换分支,可以选择将变化的文件放入暂存区,或者选择将变化的文件放入我们要切换到的分支。
当我们选择放回暂存区时,可以点击Stashed Changes
查看,点击Restore
放回Changes列表下。
当我们选择将改变的文件带入新分支时,那么原分支中的文件将恢复成原来内容,不会发生改变!
5. 命令
5.1 介绍
5.2 仓库操作
git -v
查看git版本信息
➜ remote-test git:(main) ✗ git -v
git version 2.43.0
我们在本地创建一个空的文件夹local-rep-1
,在该目录下我们进行git初始化,来构建本地仓库,使用git init
命令:
➜ local-rep-1 git init
提示:使用 'master' 作为初始分支的名称。这个默认分支名称可能会更改。要在新仓库中
提示:配置使用初始分支名,并消除这条警告,请执行:
提示:
提示: git config --global init.defaultBranch <名称>
提示:
提示:除了 'master' 之外,通常选定的名字有 'main'、'trunk' 和 'development'。
提示:可以通过以下命令重命名刚创建的分支:
提示:
提示: git branch -m <name>
已初始化空的 Git 仓库于 /Users/shihongwei/myfile/project/project2024/local-rep-1/.git/
可以通过git clone
指令下载远程仓库。
git clone https://github.com/mango1698/user-management-system.git
# 可以自定义克隆项目要存储的目录名称
# git clone URL 自定义目录名称
git clone https://github.com/mango1698/user-management-system.git customer-project
通过git config
命令对git进行配置。
git config user.name 用户名称
git config user.email 邮箱
上诉配置只是对单个仓库进行配置,如果我们拥有多个仓库时,一一配置非常麻烦,所以我们可以进行全局配置。
git config --global user.name 用户名称
git config --global user.email 邮箱
mac os系统中,git对配置文件在用户目录下。
➜ ~ cat .gitconfig
[user]
name = Mango1698
email = mango_1698@163.com
[safe]
directory = /opt/homebrew
[http]
version = HTTP/1.1
[filter "lfs"]
clean = git-lfs clean -- %f
smudge = git-lfs smudge -- %f
process = git-lfs filter-process
required = true
如果我们不想使用命令行,也可以通过直接修改该文件进行配置。
5.3 文件操作
我们在刚刚创建的local-rep-1
目录下进行操作。
使用git status
命令查看暂存区状态。
➜ local-rep-1 git:(master) git status
位于分支 master
尚无提交
无文件要提交(创建/拷贝文件并使用 "git add" 建立跟踪)
我们在该目录下新建a.txt
文件。我们再次执行git status
命令。
➜ local-rep-1 git:(master) ✗ git status
位于分支 master
尚无提交
未跟踪的文件:
(使用 "git add <文件>..." 以包含要提交的内容)
a.txt
提交为空,但是存在尚未跟踪的文件(使用 "git add" 建立跟踪)
可以看到a.txt
文件并未被git追踪,也就是git没有管理a.txt
文件。此时,我们可以通过git add
指令,将a.txt
加入到暂存区,将会被git追踪。git add .
表示将该目录下所有文件加入到暂存区中。也可以使用通配符,如git add *.txt
进行添加。
➜ local-rep-1 git:(master) ✗ git add a.txt
此时,我们再次执行git status
命令。
➜ local-rep-1 git:(master) ✗ git status
位于分支 master
尚无提交
要提交的变更:
(使用 "git rm --cached <文件>..." 以取消暂存)
新文件: a.txt
可以看到a.txt
文件已经放入了暂存区中。如果我们想将其从暂存区中移除,可以使用git rm --cached 文件名
指令进行移除。
➜ local-rep-1 git:(master) ✗ git rm --cached a.txt
rm 'a.txt'
➜ local-rep-1 git:(master) ✗ git status
位于分支 master
尚无提交
未跟踪的文件:
(使用 "git add <文件>..." 以包含要提交的内容)
a.txt
提交为空,但是存在尚未跟踪的文件(使用 "git add" 建立跟踪)
我们再使用git add
命令将其放回暂存区。
我们可以使用git commit
命令将其存放到本地仓库中。通过-m
参数来填写描述信息。
➜ local-rep-1 git:(master) ✗ git commit -m "新增文件"
[master(根提交) 295ffbd] 新增文件
1 file changed, 1 insertion(+)
create mode 100644 a.txt
➜ local-rep-1 git:(master) git status
位于分支 master
无文件要提交,干净的工作区
可以通过git log
来查看提交到历史记录。
➜ local-rep-1 git:(master) git log
commit 295ffbdeff63348efc79a13042b439d8bb2b6fae (HEAD -> master)
Author: Mango1698 <mango_1698@163.com>
Date: Sat May 11 14:36:21 2024 +0800
新增文件
可以通过--oneline
参数来在一行中显示这些信息。
➜ local-rep-1 git:(master) git log --oneline
295ffbd (HEAD -> master) 新增文件
当我们修改了a.txt
文件后,执行git status
命令。
➜ local-rep-1 git:(master) ✗ git status
位于分支 master
尚未暂存以备提交的变更:
(使用 "git add <文件>..." 更新要提交的内容)
(使用 "git restore <文件>..." 丢弃工作区的改动)
修改: a.txt
修改尚未加入提交(使用 "git add" 和/或 "git commit -a")
可以发现,git识别出了我们修改了a.txt
文件,我们需要执行git add
命令和git commit
命令对修改的文件进行提交。
➜ local-rep-1 git:(master) ✗ git log --oneline
3c01ead (HEAD -> master) 修改文件
295ffbd 新增文件
当我们删除掉a.txt
文件时。
➜ local-rep-1 git:(master) git status
位于分支 master
尚未暂存以备提交的变更:
(使用 "git add/rm <文件>..." 更新要提交的内容)
(使用 "git restore <文件>..." 丢弃工作区的改动)
删除: a.txt
修改尚未加入提交(使用 "git add" 和/或 "git commit -a")
可以看到git识别出了我们删除了文件。我们通过git add
和git commit
来提交变化。
➜ local-rep-1 git:(master) ✗ git add a.txt
➜ local-rep-1 git:(master) ✗ git commit -m "删除a.txt"
[master a25835d] 删除a.txt
1 file changed, 2 deletions(-)
delete mode 100644 a.txt
➜ local-rep-1 git:(master) ✗ git log --oneline
a25835d (HEAD -> master) 删除a.txt
3c01ead 修改文件
295ffbd 新增文件
当我们误删除了文件时,我们可以将本地仓库中的文件恢复到工作区。
此时,我们新建一个b.txt
文件,并将其提交到本地仓库。然后在文件夹中删除该文件。假如这个过程我们时误删除的,那么,我们便可以使用git restore 文件名
命令从本地仓库中将文件恢复。
➜ local-rep-1 git:(master) ✗ git restore b.txt
➜ local-rep-1 git:(master) ls
b.txt
但是,假如我们删除了文件,并且通过git add
与git commit
命令将改动进行提交了,也就意味着本地仓库中的文件也被删除了。此时,我们可以根据版本号,通过git reset --hard 版本号
命令进行重置。
➜ local-rep-1 git:(master) git log --oneline
d4fab59 (HEAD -> master) 删除b.txt
3a35301 新增b.txt
a25835d 删除a.txt
3c01ead 修改文件
295ffbd 新增文件
# 因为删除b.txt文件是在d4fab59版本进行,所以我们可以恢复至其前一个版本3a35301
➜ local-rep-1 git:(master) git reset --hard 3a35301
HEAD 现在位于 3a35301 新增b.txt
这样工作区和本地仓库中的文件都恢复了。使用git log
可以发现:
➜ local-rep-1 git:(master) git log --oneline
3a35301 (HEAD -> master) 新增b.txt
a25835d 删除a.txt
3c01ead 修改文件
295ffbd 新增文件
我们目前的最新版本号又回到了3a35301。从版本之后的提交丢失掉了。那么该如何解决这个问题呢?
我们可以使用git revert 版本号
命令。
我们在工作区删除b.txt
,并通过git add
与git commit
命令提交。
➜ local-rep-1 git:(master) git log --oneline
e233f38 (HEAD -> master) ddd
3a35301 新增b.txt
a25835d 删除a.txt
3c01ead 修改文件
295ffbd 新增文件
可以看到我们是在e233f38版本删除了b.txt
文件,那么git revert
后的版本号直接写e233f38即可,会帮助我们恢复到它的上一个版本。
➜ local-rep-1 git:(master) git revert e233f38
会出现如下提示:
Revert "ddd"
This reverts commit e233f38c899fb38271000920a1207df9fec0448c.
# 请为您的变更输入提交说明。以 '#' 开始的行将被忽略,而一个空的提交
# 说明将会终止提交。
#
# 位于分支 master
# 要提交的变更:
# 新文件: b.txt
#
然后,我们查看提交记录。
➜ local-rep-1 git:(master) git log --oneline
23b38c2 (HEAD -> master) Revert "ddd"
e233f38 ddd
3a35301 新增b.txt
a25835d 删除a.txt
3c01ead 修改文件
295ffbd 新增文件
可以看到e233f38删除b.txt
的版本还在,使用git revert
命令是又创健了一个最新的版本。
5.4 分支操作
通过git branch 分支名称
命令来创建分支。
➜ local-rep-1 git:(master) git branch user
可以通过git branch -v
来查看所有分支。
➜ local-rep-1 git:(master) git branch -v
* master 23b38c2 Revert "ddd"
user 23b38c2 Revert "ddd"
通过git checkout 分支名称
命令来切换分支。
➜ local-rep-1 git:(master) git checkout user
切换到分支 'user'
➜ local-rep-1 git:(user)
我们可以将创建分支和切换分支这两部合并为一步操作,通过git chechout -b 分支名称
命令。
➜ local-rep-1 git:(user) git checkout -b order
切换到一个新分支 'order'
➜ local-rep-1 git:(order)
通过git branch -d 分支名称
来删除分支。
➜ local-rep-1 git:(order) git branch -d user
已删除分支 user(曾为 23b38c2)。
分支合并处理
目前,我们有两个分支master和order。
我们在master分支下创建c.txt
文件,写入内容master
,并提交到本地仓库中。
我们在order分支中也添加一个c.txt
文件,写入内容order
,并提交到仓库中。
我们想要合并分支,首先我们要切换到master分支,将order分支合并到master中。使用git merge
命令进行合并。
➜ local-rep-1 git:(master) git merge order
自动合并 c.txt
冲突(添加/添加):合并冲突于 c.txt
自动合并失败,修正冲突然后提交修正的结果。
提示我们c.txt
文件发生了冲突。此时,我们查看c.txt
文件,其中就包含了比对的操作。
删除掉多余的内容,保留我们想要保留的内容,然后重新git add
和git commit
即可。这样就实现了合并操作,并解决了文件冲突。
5.5 标签操作
当我们提交太多时,通过git log
命令查看历史记录会很费劲,我们可以通过git log 版本号
的方式来查看该版本及该版本之前的提交记录。
git log dd46db18c85aa0b16f55800cf5eacfab7427c8b7
commit dd46db18c85aa0b16f55800cf5eacfab7427c8b7
Author: Mango1698 <mango_1698@163.com>
Date: Sat May 11 15:28:09 2024 +0800
create c.txt
commit 23b38c28ea32742ccbabcd53341c60d51f9c2d0c
Author: Mango1698 <mango_1698@163.com>
Date: Sat May 11 15:05:44 2024 +0800
Revert "ddd"
This reverts commit e233f38c899fb38271000920a1207df9fec0448c.
commit e233f38c899fb38271000920a1207df9fec0448c
Author: Mango1698 <mango_1698@163.com>
Date: Sat May 11 15:04:08 2024 +0800
ddd
......
但是这种方式,也不太方便,因为版本号太长了。另外,我们不清楚这个版本号对应的是什么操作。所以,我们可以给当前的提交增加一个标记,这个标记称为标签。简单的理解就是,给当前的提交版本增加一个别名,后面我们就可以通过这个别名进行访问。
通过git tag 标签名称 版本号
来新增标签。
➜ local-rep-1 git:(master) git tag updatefile 29a015d2cc11d2eb2c251d7a4c1d27a4dc60cb1d
通过git tag
命令查看所有标签。
➜ local-rep-1 git:(master) git tag
updatefile
此时,我们使用git log
命令就可以看到tag已经生效了
此外,我们可以通过git log 标签名称
进行查看该版本及该版本之前的提交记录。
➜ local-rep-1 git:(master) git log updatefile
通过git tag -d 标签名称
删除标签。
➜ local-rep-1 git:(master) git tag -d updatefile
已删除标签 'updatefile'(曾为 29a015d)
此外,我们可以通过git checkout -b 标签名称
来进行分支创建,这个分支的名称与标签名称一致,版本与标签所指的版本一致。
5.6 远程仓库
通过如下指令来增加远程仓库地址:
git remote add origin https://xxxxxx
可以通过git remote rename origin
进行修改名称,通过git remote rm origin
进行删除。
也可以在配置文件中直接修改。
通过git push
命令将本地仓库提交到远程。
通过git pull
拉取远程仓库。
需要配置SSH安全认证。
通过命令ssh-keygen -t rsa -CUrl
进行生成。生成好的文件在用户目录下.ssh
目录中,文件名称为id_rsa.pub
。将文件内容复制到gitee或者github中进行配置。
Github
Gitee