Git从0-1的学习
前言
Git作为世界上目前最先进的版本控制系统,在团队协助中起着至关重要的作用
我在学习的过程中,可以深深感受到Git的便利与有趣之处,相信你也一定可以
本文参考廖雪峰大佬的博文
点击这里可以直接看我的Git基本使用总结,点击这里查看我的‘扩展’总结
Git是什么
Git是一个先进的版本控制系统,它可以回退到你每一次提交的代码;它可以方便合并相同文件不同内容的代码;它便于团队协作,可以加快协作效率;它可以让你本地编写代码进行提交;它可以...
反正很强就是了,你学到就是赚到!
Git安装
win安装十分简单,可以直接在官网下载安装(注意不要放在中文路径下)-->也可以查看该大佬的博文进行细致安装
下载后会有三个文件,我们使用Git Bash即可
Git基本使用
创建版本库
首先使用 cd
进入合适的文件路径,用于创建版本库
1.创建空目录
$ mkdir LearnGit # 创建文件夹,文件名为LearnGit
$ cd LearnGit # 进入该文件中
$ pwd # 查看当前路径
2.将LearnGit变为Git可以管理的仓库
$ git init
创建仓库会产生.git文件夹,该文件夹默认隐藏,你可以使用 ls -ah
命令来查看
3.提交文件到仓库
在本地创建文件 readmd.txt
,放在LearnGit下,或创建子目录放入也可以
我这里创建了子目录temp,在其中放置文件readmd.txt
接着提交该文件:
$ git add temp # 将文件添加到‘暂存区(后续介绍)’
$ git commit -m "提交了temp/readmd.txt文件" # -m参数后接的是‘文件说明’
[master (root-commit) 9c3a592] 提交了temp/readmd.txt文件
1 file changed, 0 insertions(+), 0 deletions(-) # 1文件更改,0次插入,0次删除
create mode 100644 temp/readmd.txt
1.我们所有的操作都是在根目录LearnGit下进行
2.使用git commit
可以一次性提交多个文件,所以可以通过git add
添加多个文件同时提交
本地Git使用
1.文件状态
我们已经成功添加并提交temp了,现在继续修改temp/readmd.txt,改为以下内容:
Git 是一个分布式版本控制系统。
Git 是免费软件。
现在允许 $ git status
查看结果:
$ git status # 查看目前git的工作状态
On branch master # 当前分支为master
Changes not staged for commit: # 未在‘暂存区’内的更改
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: temp/readmd.txt # 红色文字,提示没有存入‘暂存区’
no changes added to commit (use "git add" and/or "git commit -a")
虽然Git提示我们使用了更改,但想要知道修改了具体内容我们需要使用 git diff temp/readmd.txt
$ git diff temp/readmd.txt
diff --git a/temp/readmd.txt b/temp/readmd.txt
index e69de29..a3334c6 100644
--- a/temp/readmd.txt # 旧文件路径
+++ b/temp/readmd.txt # 新文件路径
@@ -0,0 +1,2 @@
+Git 是一个分布式版本控制系统。 # ‘+’表示添加的内容
+Git 是免费软件。 # 若有‘-’则表示减少的内容
此时确认了修改内容后,我们进行添加与提交
先使用 git add temp
来提交文件夹,接着使用 git status
来查看git工作状态
$ git status
On branch master
Changes to be committed: # 需提交的更改(说明已添加但未提交)
(use "git restore --staged <file>..." to unstage)
modified: temp/readmd.txt # 绿色文字,说明该文件已存入‘暂存区’
接着我们使用 git commit -m "添加了Git的介绍"
提交文件,并再次输入 git status
查看git状态
$ git status
On branch master
nothing to commit, working tree clean # 没有任何提交,工作区是干净的
2.版本回退
在看下述内容时,请打开 temp/readmd.txt
修改为以下内容:
Git 是一个分布式版本控制系统。
Git 是免费软件。
Git 是根据 GPL 分发的自由软件。
并使用 git add temp
、git commit -m "添加了GPL"
进行一次提交
在实际工作中,当你觉得文件修改到一定程度,就可以“保存一个快照”,即commit一次;这可以极大避免由于误删或其他原因造成的错误,因为在Git中,你可以回退到任意你提交的版本
在Git中会记录你每一次提交,使用 git log
来查看:
$ git log
commit c990172d5a917744937e99c4b540d953a7357d4d (HEAD -> master) # commit后的字符串为该次提交的序号
Author: tianhuoDD TH <2434260208@qq.com> # 提交的用户的信息
Date: Sun Nov 19 19:08:24 2023 +0800 # 提交时间
添加了GPL
commit a2925112f68fda18276fbf14f30edae1cec49a00
Author: tianhuoDD TH <2434260208@qq.com>
Date: Sun Nov 19 18:48:58 2023 +0800
添加了Git的介绍
commit 9c3a59239f661f045027493c8f6b9196bbd3f049
Author: tianhuoDD TH <2434260208@qq.com>
Date: Sun Nov 19 18:18:21 2023 +0800
提交了temp/readmd.txt文件
你也可以以添加 --pretty=oneline
参数来减少输出信息:
$ git log --pretty=oneline
c990172d5a917744937e99c4b540d953a7357d4d (HEAD -> master) 添加了GPL
a2925112f68fda18276fbf14f30edae1cec49a00 添加了Git的介绍
9c3a59239f661f045027493c8f6b9196bbd3f049 提交了temp/readmd.txt文件
1、
git log
是显示最近到最远的提交日志(输入q退出查看)
2、c990172...
是commit ID,每个人是不同的,是使用SHA1计算的十六进制数字
3、HEAD表示当前版本,master表示当前分支
接下来我们开始回退版本,使用 git reset --hard HEAD^
回退到上一个版本,这里可以更改的是 HEAD
;HEAD^
表示回退到上一个版本,HEAD^^
表示回退到上两个版本,更多版本回退使用 HEAD~100
这次我们回退到 添加了Git的介绍
的版本
$ git reset --hard HEAD^ # --hard表示重置模式为hard,会完全重置到上一次提交的状态
HEAD is now at a292511 添加了Git的介绍
这时候可以查看我们的文件 temp/readmd.txt
,发现它已经回退成功
Git 是一个分布式版本控制系统。
Git 是免费软件。
那我们回退成功后,git log
的状态是什么呢?
使用 git log --pretty=oneline
查看,发现最新的版本没有了
$ git log --pretty=oneline
a2925112f68fda18276fbf14f30edae1cec49a00 (HEAD -> master) 添加了Git的介绍
9c3a59239f661f045027493c8f6b9196bbd3f049 提交了temp/readmd.txt文件
如果这个时候想要再使用最新版本,要怎么办呢?
只要之前的命令行窗口没有关,我们找到最新版本的commit ID;然后可以使用 git reset --hard c99017
回到最新版本
这时候我们再查看内容发现已经回到最新版本了
$ git reset --hard c99017
HEAD is now at c990172 添加了GPL
$ cat temp/readmd.txt
Git 是一个分布式版本控制系统。
Git 是根据 GPL 分发的自由软件。
git reset --hard c99017
的commit ID我们可以简写,git会自动查找的
如果你不小心关闭了之前的命令行窗口,可以使用 git reflog
来查看之前提交的每一次文件
3.工作区、暂存区与仓库
简单来说我们目前进行修改的文件夹 temp
就是工作区;我们使用 git add
添加的时候,将 temp
存入的就是暂存区;使用 git commit -m ""
提交到的就是本地仓库
使用
git status
可以查看文件目前的区域
文件名标红:工作区
文件名标绿:暂存区
working tree clean:表示目前没有文件修改或已提交到仓库
具体介绍,请查看工作区和暂存区
4.Git跟踪‘修改’
Git比其他版本控制系统设计的优秀之处在于,Git跟踪并管理的是 修改
,并非 文件
我们来上手试验一下:
先修改 temp/readmd.txt
,修改为:
Git 是一个分布式版本控制系统。
Git 是根据 GPL 分发的自由软件。
Git 跟踪修改。
然后添加 git add temp
,然后再修改 temp/readmd.txt
,修改为:
Git 是一个分布式版本控制系统。
Git 是根据 GPL 分发的自由软件。
Git 跟踪修改文件。
然后提交 git commit -m "Git 跟踪修改"
,这时候 git status
应该为 working tree clean
,我们实际输入试试:
$ git status
On branch master
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: temp/readmd.txt # 标红,表示文件在工作区
no changes added to commit (use "git add" and/or "git commit -a")
发现暂存区中还有未添加文件,我们回顾一下操作流程:第一次修改->add->第二次修改->commit
你看,我们前面讲了,Git管理的是修改,当你用git add命令后,在工作区的第一次修改被放入暂存区,准备提交,但是,在工作区的第二次修改并没有放入暂存区,所以,git commit只负责把暂存区的修改提交了,也就是第一次的修改被提交了,第二次的修改不会被提交。
我们可以使用 git diff HEAD -- temp/readmd.txt
来查看工作区和版本库中文件区别
$ git diff HEAD -- temp/readmd.txt
diff --git a/temp/readmd.txt b/temp/readmd.txt
index 6a16c10..ff6aef7 100644
--- a/temp/readmd.txt
+++ b/temp/readmd.txt
@@ -1,3 +1,3 @@
Git 是一个分布式版本控制系统。
Git 是根据 GPL 分发的自由软件。
-Git 跟踪修改。 # 删除了这段文字
+Git 跟踪修改文件。 # 添加为了这段文字
可见,第二次修改确实没有提交
简单来说:
git commit
只会提交暂存区的文件,未使用git add
添加到暂存区的文件不会被提交
5.撤销修改
如果你不小心将 temp/readmd.txt
中添加了:
我的傻老板还是更喜欢SVN。
那么我们可以使用 git checkout -- <file>
来丢弃工作区的修改
$ git checkout -- temp
$ cat temp/readmd.txt
Git 是一个分布式版本控制系统。
Git 是根据 GPL 分发的自由软件。
Git 跟踪修改。
git checkout -- temp
把temp文件的修改全部撤销,这里有两种情况:
一种是temp/readme.txt
还没有被放到暂存区,此时撤销修改就回到和版本库一模一样的状态;
另一种是temp/readme.txt
已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。
现在你不仅在 temp/readmd.txt
中添加了:
我的傻老板还是更喜欢SVN。
还 git add
到暂存区了,我们可以使用 git reset HEAD <file>
来暂存区的修改撤销掉,重新放回工作区
$ cat temp/readmd.txt
Git 是一个分布式版本控制系统。
Git 是根据 GPL 分发的自由软件。
Git 跟踪修改。
我的傻老板还是更喜欢SVN。
$ git add temp # 添加到暂存区
$ git reset HEAD temp # 丢弃暂存区修改,将暂存区重设成最新版本,HEAD表示最新版本
$ git checkout -- temp # 丢弃工作区的修改
$ cat temp/readmd.txt
Git 是一个分布式版本控制系统。
Git 是根据 GPL 分发的自由软件。
Git 跟踪修改。
如果不小心将暂存区提交到了版本库,我们可以使用
版本回退
->git reset --hard HEAD^
6.删除文件
在Git中,删除也是一个修改操作
我们先创建一个 temp/test.txt
文件,再 git add
和 git commit -m "添加了test.txt"
,提交到本地仓库
接着我们在文件管理器或使用 rm temp/test.txt
删除该文件,再使用 git status
:
$ rm temp/test.txt
$ git status
On branch master
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: temp/test.txt # 标红
no changes added to commit (use "git add" and/or "git commit -a")
此时,工作区和版本库不同,Git就会提示在工作区 test.txt
这个文件被删除了
现在我们有两个选择,一是确实要从版本库中删除该文件,那就用命令 git rm
删掉,并且 git commit
:
$ git rm temp/test.txt
rm 'temp/test.txt'
$ git commit -m "删除test.txt"
[master 1c08f33] 删除test.txt
1 file changed, 0 insertions(+), 0 deletions(-)
delete mode 100644 temp/test.txt
此时工作区中
test.txt
已经被删除,所以git rm
和git add
作用相同,都是将‘删除文件’这个操作提交到暂存区;使用git add temp
也是可以提交‘删除文件’这个操作
二是删错了,但因为版本库中有,我们可以使用 git checkout -- temp
,把误删文件恢复到最新版本
git checkout
其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”
远程库使用
1、连接远程库
创建GitHub仓库,参见此文
当我们成功创建仓库后,会在这里发现它已经提示我们如何连接远程库:
$ git remote add origin https://github.com/tianhuoDD/LearnGit.git # origin为远程库的名字,可以自己更改
$ git branch -M main # 强制将当前分支重命名为`main`
$ git push -u origin main # 向远程库`origin`推送分支`main`
Enumerating objects: 21, done.
Counting objects: 100% (21/21), done.
Delta compression using up to 16 threads
Compressing objects: 100% (11/11), done.
Writing objects: 100% (21/21), 1.72 KiB | 585.00 KiB/s, done.
Total 21 (delta 3), reused 0 (delta 0), pack-reused 0
remote: Resolving deltas: 100% (3/3), done.
To https://github.com/tianhuoDD/LearnGit.git
* [new branch] main -> main
branch 'main' set up to track 'origin/main'.
注意
git push -u origin main
中需加上-u
,不仅可以将本地main推送到远程
还可以把本地的main分支和远程main分支连接起来,可以简化后续推送指令
这时我们可以看到,在我们的GitHub仓库中,已经有了 temp
文件夹
从现在开始,只有本地作了提交就可以通过命令 $ git push origin main
,就可以提交到GitHub上
2、‘删除’远程库
这里的删除,实质上是‘取消本地与远程库的连接’
我们可以首先使用 git remote -v
查看与本地库连接的远程库,然后使用 git remote rm origin
解除连接
$ git remote -v
origin https://github.com/tianhuoDD/LearnGit.git (fetch) # 从这里‘拿取’代码,到本地库
origin https://github.com/tianhuoDD/LearnGit.git (push) # 从这里‘推送’代码,到远程库
$ git remote rm origin # origin为远程库的名字
3、克隆远程库
下面我们将本地的 temp
文件删除,并添加与提交到本地库(后面将用‘本地库’代指‘版本库’)
$ rm -rf temp
$ git add temp
$ git commit -m "删除temp文件夹"
[main 06c2714] 删除temp文件夹
2 files changed, 3 deletions(-)
delete mode 100644 temp/readmd.txt
delete mode 100644 temp/test.txt
这个时候我们的工作区、暂存区、本地库都没有temp这个文件了
此时我们回到GitHub仓库,按图示找到克隆代码
然后在你的Git Bash中输入 git clone https://github.com/tianhuoDD/LearnGit.git
进行克隆
$ git clone https://github.com/tianhuoDD/LearnGit.git
Cloning into 'LearnGit'...
remote: Enumerating objects: 21, done.
remote: Counting objects: 100% (21/21), done.
remote: Compressing objects: 100% (8/8), done.
remote: Total 21 (delta 3), reused 21 (delta 3), pack-reused 0
Receiving objects: 100% (21/21), done
如果出现此错误
fatal: unable to access 'https://github.com/tianhuoDD/LearnGit.git/': Recv failure: Connection was reset
说明是你的网络连接问题,需要多重试几次
这个时候,我们再查看工作区,发现temp文件被克隆回来了
需要注意的是,Git克隆是克隆整个仓库,也就是说他会创建一个新的文件夹来存储你克隆的文件
克隆远程库有多种方法,常见的两种一是使用
https
克隆,这对网络要求较高
另一种是利用ssh
协议,这个传输较快,但需要你自己去了解如何设置
Git使用总结
1.找到合适的地方,使用
$ git init
创建版本库
2.提交文件:git add <file>
、git rm <file>
、git commit -m ""
3.查看文件状态:git status
工作区:[font size="14px" color="red"]标红[/font]
暂存区:[font size="14px" color="green"]标绿[/font]
版本库:Clean
4.查看具体修改:git diff <file>
5.查看提交日志:git log --pretty=oneline
查看历史提交:git reflog
6.将工作区修改取消:git checkout -- <file>
将暂存区修改撤销:git reset HEAD <file>
将版本库回退:git reset --hard <id>
、git reset --hard HEAD^
7.远程库连接:git remote add <name> <link>
推送远程库:git push -u <name> <branch>
后续推送:git push <name> <branch>
查看连接库信息:git remote -v
删除连接:git remote rm <name>
DLC1.分支管理
1.创建与合并分支
Git分支的实现,大家可以看此博文
简单来说,就是Git保留你的每一次‘提交’,通过 HEAD
和 main(分支)
俩指针实现你的文件变更,而不是直接对提交进行更改
明白了Git的分支原理后,那我们开始实践
首先使用 git branch dev
来创建分支,并使用 git switch dev
切换到分支 dev
$ git branch dev
$ git switch dev
Switched to branch 'dev'
1.我们还可以使用
git checkout -b dev
来一键创建并切换分支,也可以使用git switch -c dev
2.切换分支还可以使用git checkout dev
,这里使用的git switch dev
主要为了方便记忆,且是新版本Git的指令
我们还可以使用 git branch
来查看分支,当前分支会用 *
表示
$ git branch
* dev
main
接下来在我们的 LearnGit版本库
下直接创建 readmd.txt
,并添加内容:
这是dev分支。
然后 add
和 commit
:
$ git add readmd.txt
$ git commit -m "这是dev分支。"
[dev cceacec] 这是dev分支
1 file changed, 1 insertion(+)
create mode 100644 readmd.txt
dev
分支工作完毕,我们再切换到 main
分支:
$ git switch main
Switched to branch 'main'
$ cat readmd.txt
cat: readmd.txt: No such file or directory
这时候发现我们刚刚创建的 readmd.txt
文件没有了
从图示看出,只是 dev
指针往前动了一下,并没有实际删除之前的提交
现在我们将 dev
分支和 main
分支合并:
$ git merge dev
Updating 06c2714..cceacec
Fast-forward # 表示合并方式为快速合并
readmd.txt | 1 +
1 file changed, 1 insertion(+)
create mode 100644 readmd.txt
合并后,实际上是
main
指针和HEAD
指针都指向了dev
分支
此时,我们可以方向删除 dev
分支了:
$ git branch -d dev
Deleted branch dev (was cceacec).
$ git branch
* main
因为创建、合并和删除分支非常快,所以Git鼓励你使用分支完成某个任务,合并后再删掉分支,这和直接在master分支上工作效果是一样的,但过程更安全。
2.解决合并冲突
我们现在创建新的 feature1
分支:
$ git switch -c feature1
Switched to a new branch 'feature1'
此时你会发现,
readmd.txt
也在此分支
这是因为新创建的分支是由当前分支而衍生出来的,实际上是添加了一个新feature1
的指针
现在我们修改 readmd.txt
文件:
这个分支是冲突的and不合适的。
并 git add
和 git commit
$ git add readmd.txt
$ git commit -m "冲突测试"
[feature1 088d1a0] 冲突测试
1 file changed, 1 insertion(+), 1 deletion(-)
接着我们切换到 main
分支,继续修改 readmd.txt
为:
这个分支是冲突的&&不合适的。
$ git add readmd.txt
$ git commit -m "main冲突"
[main 1413c77] main冲突
1 file changed, 1 insertion(+), 1 deletion(-)
此时,我们的 main
和 feature1
分支都有了新提交,指针就变成了这样:
这种情况下,如果我们使用合并,会发现合并失败:
$ git merge feature1
Auto-merging readmd.txt # 无法使用快速合并
CONFLICT (content): Merge conflict in readmd.txt
Automatic merge failed; fix conflicts and then commit the result.
此时我们再查看 readmd.txt
文件,会发现冲突被标注出来:
$ git status
On branch main
You have unmerged paths. # 有未合并的路径
(fix conflicts and run "git commit") # 修复冲突后再提交
(use "git merge --abort" to abort the merge)
Unmerged paths:
(use "git add <file>..." to mark resolution)
both modified: readmd.txt
no changes added to commit (use "git add" and/or "git commit -a")
$ cat readmd.txt
<<<<<<< HEAD
这个分支是冲突的&&不合适的。
=======
这个分支是冲突的and不合适的。
>>>>>>> feature1
我们修改如下后保存:
这个分支是冲突的and不合适的。
再尝试合并和提交:
$ git add readmd.txt
$ git commit -m "修复冲突"
[main 8fd1426] 修复冲突
这里不需要再次合并了,因为上次合并已经将没有冲突的内容合并了,只是把冲突的内容再标注出来了,我们只需要修改冲突就可以了
这是合并后的图示:
我们也可以输入 git log
查看分支合并情况:
# 第一个参数表示以图像方式展示历史提交,第二个参数表示
$ git log --graph --pretty=oneline --abbrev-commit
* 8fd1426 (HEAD -> main) 修复冲突
|\
| * 088d1a0 (feature1) 冲突测试
* | 1413c77 main冲突
|/
* e7920d8 这是dev分支
* cceacec 这是dev分支
* 06c2714 删除temp文件夹
* b8295f2 添加test.txt
* 1c08f33 删除test.txt
* 9867fe4 添加了test.txt
* 483f4aa Git 跟踪修改
* c990172 添加了GPL
* a292511 添加了Git的介绍
* 9c3a592 提交了temp/readmd.txt文件
最后,我们删除 feature1
分支:git branch -d feature1
3.存储工作区状态
当你的工作到一半,还不能提交到版本库时,可以使用 git stash
来存储工作区状态
例如将 readmd.txt
修改为:
这个分支是冲突的and不合适的。
我正在修改...
$ git status
On branch main
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: readmd.txt # 标红,在工作区
no changes added to commit (use "git add" and/or "git commit -a")
此时,我们使用 git stash
,来存储工作区
$ git stash
Saved working directory and index state WIP on main: 4fcc5bf 123
$ cat readmd.txt
这个分支是冲突的and不合适的。
发现已经恢复到之前的状态了,当你想要再次编辑上次工作内容时,使用 git stash list
查看之前的保存,接着我们使用 git stash apply stash@{n}
恢复状态:
$ git stash list
stash@{0}: WIP on main: 4fcc5bf 123
$ git stash apply stash@{0} # 数字`0`为`stash@{0}中的数字
On branch main
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: readmd.txt
no changes added to commit (use "git add" and/or "git commit -a")
1.使用
git stash apply stash@{n}
恢复,不会删除stash的内容,需要单独使用git stash drop stash@{n}
来删除
2.如果我们使用git stash pop stash@{n}
,就在恢复的同时把stash内容也删了
3.如果你想将特定提交复制到其他分支,可以使用git cherry-pick <ID>
,这一般用于修复bug的时候
4.如果你想强行删除未合并过的分支时,可以使用git branch -D <branch>
强行删除
4.多人协作
这一章较为复杂,可以看此博文细致学习
当你进行多人协作时,你的小伙伴从远程库克隆,通常情况下只能克隆 main
分支
那么他只能本地创建 dev
分支,然后将dev分支 push
到远程库
如果你自己同时也上传了 dev
分支,也push到远程库,但你们同时修改了一个文件,无法快速合并,发生了冲突
此时你需要先从远程库 pull
dev分支,在本地合并后再 push
到远程库
$ git pull
There is no tracking information for the current branch.
Please specify which branch you want to merge with.
See git-pull(1) for details.
git pull <remote> <branch>
If you wish to set tracking information for this branch you can do so with:
git branch --set-upstream-to=origin/<branch> dev # 根据提示,先指定分支后,再pull
$ git branch --set-upstream-to=origin/dev dev # 指定分支进行pull(拉取)
Branch 'dev' set up to track remote branch 'dev' from 'origin'.
$ git pull # 在本地处理合并冲突,再push
Auto-merging env.txt
CONFLICT (add/add): Merge conflict in env.txt
Automatic merge failed; fix conflicts and then commit the result.
DLC2.标签管理
发布一个版本时,我们通常先在版本库中打一个标签(tag),这样,就唯一确定了打标签时刻的版本。将来无论什么时候,取某个标签的版本,就是把那个打标签的时刻的历史版本取出来。所以,标签也是版本库的一个快照。
我们可以先切换到需要打上标签的分支,然后使用 git tag <name> <ID>
来创建标签:
$ git tag v1.0 # 如果不输入commit ID,则默认打在最新commit上
$ git tag # 查看所有标签
v1.0
1.需要注意的是,标签是按照字母大小排序的,如果你需要查看打上标签的时间,可以输入
git show <name>
查看
2.还可以使用git tag -a <name> -m "" <ID>
给标签注上说明
如果你不小心打错了标签,可以使用 git tag -d <name>
删除
如果你需要推送标签到远程库,使用 git push origin <name>
推送
或者使用 git push origin --tags
一次性推送全部标签
1.这里的origin是指连接远程库时的名字
2.如果要远程删除标签,需要现在本地删除,然后输入git push origin -d <name>
进行删除
DLC3.其他
1.忽略文件
有些时候,你必须把某些文件放到Git工作目录中,但又不能提交它们,比如保存了数据库密码的配置文件啦,等等,每次git status都会显示Untracked files ...,有强迫症的童鞋心里肯定不爽。
我们可以使用 .gitignore
文件夹,放入需要忽略的文件,一般是敏感信息、中间文件等
我们并不需要从头写 .gitignore
文件夹,大家可以浏览此网站查看配置文件
2.配置别名
DLC总结
1.分支创建:
git branch <branch>
切换分支:git switch <branch>
一键创建:git switch -c <branch>
2.查看分支:git branch
删除分支:git branch -d <branch>
合并分支:git merge <branch>
3.存储工作区状态:git stash
查看stash列表:git stash list
恢复状态:git stash apply stash@{n}
删除stash:git stash drop stash@{n}
一键恢复:git stash pop stash@{n}
4.拉取分支:git pull
5.创建tag:git tag
删除tag:git tag -d
推送tag:git push origin
自我总结
以上就是我学习到的所有Git技术,初次学习时感觉git技术非常的有趣,极大激发了我的学习兴趣,如果你也可以深入学习,一定会发现它的不同之处!
欢迎交流与指正,建议使用评论告诉我哦