2020-09-16 tortoise git 添加和删除tag
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2020-09-16 tortoise git 添加和删除tag相关的知识,希望对你有一定的参考价值。
参考技术A 此处在master主分支直接创建,点击确定包含标签需要勾选
创建完成
先删除本地标签,再删除远端标签
删除成功再查看tag,1.0.1已删除
从命令行git转到Tortoise版git
阅读前请注意:
本文先学命令行git的,但过不久遇到乱码问题久久不能解决,最后转向tgit。
2016-29
安装
- next 下一步
- 设置目录
- 勾选需要的项:
- Additional icons是关于图标的设置
- In the Quick Launch是快速启动图标
- On the Desktop是桌面快捷方式
- Windows Explorer integration是资源管理器集成(右键菜单)
- Git Bash Here是在当前目录运行Git命令行
- Git GUI Here是在当前目录运行Git原生界面
- ssociate .git* configuration files with the default text editor是将所有.git开头的文件使用默认文本编辑器打开
- Associate .sh files to be run with Bash是将所有扩展名为.sh的文件使用Git命令行执行
- Use a TrueType font in all console windows是在所有命令行(包括Windows系统cmd命令行窗口)中都使用TrueType字体
- 是否创建在开始菜单中? Don‘t create... 不创建。
- 环境设置
- Use Git from Git Bash only不会修改系统环境变量,但是Windows系统cmd命令行中无法使用git命令
- Use Git from the Windows Command Prompt会将git相关程序加入系统环境变量中,使得Windows系统cmd命令行中可以使用git命令
- Use Git and optional Unix tools from the Windows Command - Prompt会将git相关程序以及一些其他的Unix工具加入系统环境变量,使得Windows系统cmd命令行中可以使用git以及Unix工具
- 选择库
- use the openssl library 使用OpenSSL库
- use the native windows secure channel library 使用本机Windows安全通道库
- 转行规则
- Checkout Windows-style, commit Unix-style line - endings选项让Git能够自动转换文件中的换行符;签出到本地时转换为Windows下的换行符,提交到服务器时转换为Unix下的换行符
- Checkout as-is, commit Unix-style line endings选项让Git在签出到本地时不做转换,保留原始文件的换行符;提交到服务器时转换为Unix下的换行符
- Checkout as-is, commit as-is让Git在签出到本地时和提交到服务器时都不做转换
- 使用控制台程序
- Use MinTTY (the default terminal of MSys2) 选项使用一款叫做MinTTY的软件作为Git命令行,MinTTY是一款模拟Unix系Bash终端的软件。优点是命令记录、可配置字体、可改变窗口大小等等,缺点是可能无法直接运行原Windows下的一些命令行程序
- Use Windows‘ default console windows选项使用Windows系统cmd命令行来作为Git命令行。优点和缺点正好和上一个选项相反。
- 其他选项
- Enable file system chaching 启用文件缓存
- Enable Git Credential Manager 启用凭据管理
- Enable symbolic links 启用符号链接
- 等待安装进度。
- Launch git Bash 现在启动
- View release notes 查看发行说明
- 等待安装完成后,在CMD命令中输入git或者git --version命令查看是否安装成功。
创建版本库
-
设置工作目录
- 在你的工作目录建立一个新的文件夹,比如 git,我就建在桌面。
- 复制这个 git 的目录路径。
- 在开始菜单中找到 git cmd (直接cmd中也行)。
- 为什么使用 git cmd ?因为我对 cmd 熟悉呀(或对 linux 不熟悉)。
- 在 git 中不但能使用 cmd 的操作方式如复制粘贴,还能使用 cmd 的命令。
*后面能用 cmd 的我都会用 cmd ,看不起 windows 的请勿喷。
cd "C:\Users\用户名\Desktop\git" rem 切换位置到刚才创建的 git 目录。 md dir1 rem 新建文件夹 dir1 cd dir1 rem 切换位置到刚才创建的 dir1 目录。 git init rem 通过git init命令把 dir1 这个目录变成Git可以管理的仓库,现在你可以看到 dir1 下有个 dir /b /a rem 此时可以看到 dir1 目录下有个 .git 隐藏目录,这个目录**不能随便修改**。
-
添加文件到版本库以及提交文件
创建两行文本到1.txt。我这里直接使用命令创建,请注意utf8文件头。echo l1>>1.txt echo l2>>1.txt git add 1.txt rem 添加文件到仓库 git commit -m "ti_jiao_1" rem 提交文件,-m 参数是提交说明。
- Git 每次提交代码,都要写 Commit message(提交说明),否则就不允许提交。提交之后显示如下信息:
[master (root-commit) e00ea37] ti_jiao_1
1 file changed, 2 insertions(+)
create mode 100644 1.txt
- 显示更改了1个文件,有2行内容,
-
为什么要分为 add 添加和 commit 提交两步?因为 add 可以分次添加, commit 是一次性提交。
copy 1.txt 2.txt copy 1.txt 3.txt git add 1.txt git add 2.txt 3.txt git commit -m "ti_jiao_3"
[master f1c1590] ti_jiao_3
2 files changed, 4 insertions(+)
create mode 100644 2.txt
create mode 100644 3.txt
-
经过复制,有了3个文件。然后 add 多次添加,后由 commit 一次性提交。提交结果是成功2个文件,因为我们的 1.txt 之前已提交过了。
-
init 创建仓库
git init
- add 添加文件
git add 1.txt
- commit 提交文件
git commit -m "ti_jiao_1"
更改和和查看文件状态
把 1.txt 的第一行 l1 改为 l11 。
使用 git status
查看状态,返回以下信息:
On branch master
Changes not staged for commit:
(use "git add ..." to update what will be committed)
(use "git checkout -- ..." to discard changes in working directory)modified: 1.txt
no changes added to commit (use "git add" and/or "git commit -a")
上面的信息告诉我们,当前所有的分支 master
,有更改但没有提交
。还告诉我们如何更新要提交的内容
和如何放弃更改
,我们修改了什么文件
,这个更改没有添加也没有提交以及如何添加和提交
。
我们还常常希望知道修改了什么地方,那就使用 git diff
来查看差异。
diff --git a/1.txt b/1.txt
index 3582182..78d0700 100644
--- a/1.txt
+++ b/1.txt
@@ -1,2 +1,2 @@
-l1
+l11
l2
--- 表示原文件
+++ 表示新文件
@@ 表示变动位置,也叫差异小结。@@ -1,2 +1,2 @@
中的 -(减号)
表示原文件,-1
表示原文件的第1行,-1,2
表示原文件的第1行到第2行之间。
- 表示出现在原文件中的行,也就是被删除的行,减呀
- 表示出现在新文件中的行,也就是新添加的行,加呀
空格表示都存在的行,表示没有差异
使用 git add 1.txt
添加文件,git status
再次查看状态,会显示已添加但没有提交的文件,也是提交时会被提交的文件。
On branch master
Changes to be committed:
(use "git reset HEAD ..." to unstage)modified: 1.txt
提交 git commit -m "xiu_gai_1_line"
显示更改了1个文件,有1行添加,1行删除。呵呵,确定行数是没有改变呀:
[master cc508d1] xiu_gai_1_line
1 file changed, 1 insertion(+), 1 deletion(-)
再次查看状态 git status
,返回 On branch master nothing to commit, working tree clean
表示没有需要提交的更改,工作目录整洁。
- status 查看状态
git status
- diff 查看差异
git diff
版本跳转
继续把 1.txt 的第一行 l11 改为 l111 ,然后添加并提交,到现在我们已经经过了3次提交。
使用 git log
可以查看提交记录。
commit 038bae478c42f9495d75eaed8ee44b5d3202abe8
Author: Your Name [email protected]
Date: Sun Mar 26 2151 2017 +0800xiu_gai_1_line
commit d4253c4aa8a3abc35390b547b9962c0d32a5647b
Author: Your Name [email protected]
Date: Sun Mar 26 2121 2017 +0800ti_jiao_3
commit 739fd22571c153ad80709cb2ccbed4fa9a3ac704
Author: Your Name [email protected]
Date: Sun Mar 26 2148 2017 +0800ti_jiao_1
可以看到, git 由近到远的显示了每一次提交的时间、作者、提交ID(commit id,版本号)。
上面才是3次的提交,就占据了很多屏幕。可以加上 --pretty=oneline
参数,只显示版本号和描述,单行显示。
038bae478c42f9495d75eaed8ee44b5d3202abe8 xiu_gai_1_line
d4253c4aa8a3abc35390b547b9962c0d32a5647b ti_jiao_3
739fd22571c153ad80709cb2ccbed4fa9a3ac704 ti_jiao_1
发进行版本跳转,肯定需要知道版本号。在 git 中使用 HEAD
表示当前版本,上一个版本是 HEAD^
,上上个是 HEAD^^
,上100个是 HEAD~100
。
下面我们使用 git reset --hard head^^
跳转到上上版本。
C:\Users\用户名\Desktop\git\dir1>git log --pretty=oneline
038bae478c42f9495d75eaed8ee44b5d3202abe8 xiu_gai_1_line
d4253c4aa8a3abc35390b547b9962c0d32a5647b ti_jiao_3
739fd22571c153ad80709cb2ccbed4fa9a3ac704 ti_jiao_1C:\Users\用户名\Desktop\git\dir1>dir /b
1.txt
2.txt
3.txtC:\Users\用户名\Desktop\git\dir1>git reset --hard head^^^^
HEAD is now at 739fd22 ti_jiao_1C:\Users\用户名\Desktop\git\dir1>git log --pretty=oneline
739fd22571c153ad80709cb2ccbed4fa9a3ac704 ti_jiao_1C:\Users\用户名\Desktop\git\dir1>dir /b
1.txt
可以看到,我们跳转到了版本ti_jiao_1,文件和第一次提交时一样了,只有1.txt,说明确实跳转成功了。
可能你还注意到,我上面使用了4个^,而不是2个^,这是因为在 cmd 中^符号是用来转义的,也就是说2个^才是1个^。
虽然上面的 log 只有一个了,不过我们还可以使用之前的 ID 进行跳转。
C:\Users\用户名\Desktop\git\dir1>git log --pretty=oneline
739fd22571c153ad80709cb2ccbed4fa9a3ac704 ti_jiao_1rem 使用 ID 来进行版本跳转,不需要把 ID 完整输入
C:\Users\用户名\Desktop\git\dir1>git reset --hard 038bae478c
HEAD is now at 038bae4 xiu_gai_1_lineC:\Users\用户名\Desktop\git\dir1>git log --pretty=oneline
038bae478c42f9495d75eaed8ee44b5d3202abe8 xiu_gai_1_line
d4253c4aa8a3abc35390b547b9962c0d32a5647b ti_jiao_3
739fd22571c153ad80709cb2ccbed4fa9a3ac704 ti_jiao_1rem 不要忘记~2也可以回退到上上个版本
C:\Users\用户名\Desktop\git\dir1>git reset --hard head~2
HEAD is now at 739fd22 ti_jiao_1C:\Users\用户名\Desktop\git\dir1>git log --pretty=oneline
739fd22571c153ad80709cb2ccbed4fa9a3ac704 ti_jiao_1
如果不知道版本号,如何跳转到下一版本呢?
使用 git reflog
可以获得命令执行日志。
C:\Users\用户名\Desktop\git\dir1>git reflog
038bae4 [email protected]{18}: commit: xiu_gai_1_line
d4253c4 [email protected]{19}: commit: ti_jiao_3
739fd22 [email protected]{20}: commit (initial): ti_jiao_1
- log 查看提交日志
git log
详情,git log --pretty=online
精简。 - reset 版本跳转
git reset --hard head^
跳转到上1个版本,head^^
、head~2
跳转到上2个版本,git reset --hard abcdefg
跳转版本 ID 唯一 abcdefg 开头的版本。 - reflog 查看命令日志
git reflog
。
工作区和暂存区
- 之前我们建立的 dir1 目录里面能看到的内容是工作区,里面隐藏的 .git 目录是 git 的版本库。
- git init 是创建了一个 .git 目录,也就是版本库。
- git add 是把文件添加到了暂存区。
- git commit 是提交暂存区的文件到当前分支。也就是 HEAD 指向的分支 master ,这个 master 是自动创建的。
- 每次修改就需要进行一次 git add 操作,否则修改不会被提交。
rem 修改第一行为 l11
C:\Users\Administrator\Desktop\git\dir1>type 1.txt
l11
l2rem 添加到暂存区但没有提交
C:\Users\Administrator\Desktop\git\dir1>git add 1.txtrem 再次修改为 l111
C:\Users\Administrator\Desktop\git\dir1>type 1.txt
l111
l2rem 提交
C:\Users\Administrator\Desktop\git\dir1>git commit -m ‘l111‘
[master bdc0a31] ‘l111‘
1 file changed, 1 insertion(+), 1 deletion(-)rem 查看状态,好像说有更改没有提交,没有添加也没有提交。
C:\Users\Administrator\Desktop\git\dir1>git status
On branch master
Changes not staged for commit:
(use "git add ..." to update what will be committed)
(use "git checkout -- ..." to discard changes in working directory)modified: 1.txt
Untracked files:
(use "git add ..." to include in what will be committed)add git type
no changes added to commit (use "git add" and/or "git commit -a")
rem 可以使用 git diff ,也可以使用 git diff head -- 1.txt 对比差别,发现 l111 并没有提交,是的,因为我们都没添加到暂存区,而提交的是暂存区的内容。
C:\Users\Administrator\Desktop\git\dir1>git diff head -- 1.txt
diff --git a/1.txt b/1.txt
index 78d0700..644adf5 100644
--- a/1.txt
+++ b/1.txt
@@ -1,2 +1,2 @@
-l11
+l111
l2
如果需要把 l111 提交,需要再次 git add 、git commit 。
- git diff head -- 对比文件差异
git diff head -- 1.txt
。
我认为
git diff <file>
等价于git diff HEAD -- <file>
, 都是将工作区内的内容与版本库里面最新版本进行比较git diff HEAD -- <file>
的意义在于, 第一个参数HEAD是可变的, 也就是可以将工作区内的内容与版本库里指定的任意版本进行比较. 如git >diff 3628 -- <file>
add之后, 再使用git diff
将看不到变化, 原因是当前工作区的修改已被添加到暂存区
要查看暂存区内的内容与版本库里面最新版本的差别需要加--cached参数:git diff --cached
2017-04-29 更新
tgit 的安装
感觉好久没有继续学习这个git了。这是为什么呢?
因为上面的学习过程中遇到一个问题,也就是中文乱码的问题。
这个中文乱码,出现在以下情况中:
当提交描述为中文时,提交日志上的中文描述显示乱码。
显示文件差异时,文件中的中文显示乱码。
找了很多文章很多方法,都无法同时完美解决。要么只能解决其一,要么两个都无法解决。
说说我为什么用tgit吧,首先是很好的解决了乱码问题,然后是可以设置操作菜单中文。所以就当一个工具软件用吧,虽然不能用命令行感觉说话都不硬气了唉。
好了不说其他的了,以下说说如何安装使用 tgit 吧。
因为是windows软件,都是一些可视化操作,哪里不会点哪里就可以了。
msygit
首先安装 git ,还是命令行的 git ,使用上面我们安装的 msgit 就可以。TortoiseGit
然后安装 tgit ,也就是可视化操作 git 的这个东东,安装好这个之后就可以使用了,你看你的右键菜单上多了很多 git 相关的选项。TortoiseGit-LanguagePack
这个是语言包,不是必须的。,像我一样对E文不了解,我安装了中文语言包。
然后就没有然后了。
阅读前请注意: 本文先学命令行git的,但过不久遇到乱码问题久久不能解决,最后转向tgit。 2016-29 ## 安装 1. next 下一步 2. 设置目录 3. 勾选需要的项: - Additional icons是关于图标的设置 - In the Quick Launch是快速启动图标 - On the Desktop是桌面快捷方式 - Windows Explorer integration是资源管理器集成(右键菜单) - Git Bash Here是在当前目录运行Git命令行 - Git GUI Here是在当前目录运行Git原生界面 - ssociate .git* configuration files with the default text editor是将所有.git开头的文件使用默认文本编辑器打开 - Associate .sh files to be run with Bash是将所有扩展名为.sh的文件使用Git命令行执行 - Use a TrueType font in all console windows是在所有命令行(包括Windows系统cmd命令行窗口)中都使用TrueType字体 4. 是否创建在开始菜单中? Don‘t create... 不创建。 5. 环境设置 - Use Git from Git Bash only不会修改系统环境变量,但是Windows系统cmd命令行中无法使用git命令 - *Use Git from the Windows Command* Prompt会将git相关程序加入系统环境变量中,使得Windows系统cmd命令行中可以使用git命令 - Use Git and optional Unix tools from the Windows Command - Prompt会将git相关程序以及一些其他的Unix工具加入系统环境变量,使得Windows系统cmd命令行中可以使用git以及Unix工具 5. 选择库 - *use the openssl library* 使用OpenSSL库 - use the native windows secure channel library 使用本机Windows安全通道库 6. 转行规则 - *Checkout Windows-style*, commit Unix-style line - endings选项让Git能够自动转换文件中的换行符;签出到本地时转换为Windows下的换行符,提交到服务器时转换为Unix下的换行符 - Checkout as-is, commit Unix-style line endings选项让Git在签出到本地时不做转换,保留原始文件的换行符;提交到服务器时转换为Unix下的换行符 - Checkout as-is, commit as-is让Git在签出到本地时和提交到服务器时都不做转换 8. 使用控制台程序 - *Use MinTTY (the default terminal of MSys2)* 选项使用一款叫做MinTTY的软件作为Git命令行,MinTTY是一款模拟Unix系Bash终端的软件。优点是命令记录、可配置字体、可改变窗口大小等等,缺点是可能无法直接运行原Windows下的一些命令行程序 - Use Windows‘ default console windows选项使用Windows系统cmd命令行来作为Git命令行。优点和缺点正好和上一个选项相反。 8. 其他选项 - Enable file system chaching 启用文件缓存 - Enable Git Credential Manager 启用凭据管理 - Enable symbolic links 启用符号链接 9. 等待安装进度。 - Launch git Bash 现在启动 - View release notes 查看发行说明 9. 等待安装完成后,在CMD命令中输入git或者git --version命令查看是否安装成功。 ## 创建版本库 1. 设置工作目录 * 在你的工作目录建立一个新的文件夹,比如 git,我就建在桌面。 * 复制这个 git 的目录路径。 * 在开始菜单中找到 git cmd (直接cmd中也行)。 * 为什么使用 git cmd ?因为我对 cmd 熟悉呀(或对 linux 不熟悉)。 * 在 git 中不但能使用 cmd 的操作方式如复制粘贴,还能使用 cmd 的命令。 *后面能用 cmd 的我都会用 cmd ,看不起 windows 的请勿喷。 ``` dos cd "C:\Users\用户名\Desktop\git" rem 切换位置到刚才创建的 git 目录。 md dir1 rem 新建文件夹 dir1 cd dir1 rem 切换位置到刚才创建的 dir1 目录。 git init rem 通过git init命令把 dir1 这个目录变成Git可以管理的仓库,现在你可以看到 dir1 下有个 dir /b /a rem 此时可以看到 dir1 目录下有个 .git 隐藏目录,这个目录**不能随便修改**。 ``` 2. 添加文件到版本库以及提交文件 创建两行文本到1.txt。**我这里直接使用命令创建,请注意utf8文件头**。 ``` dos echo l1>>1.txt echo l2>>1.txt git add 1.txt rem 添加文件到仓库 git commit -m "ti_jiao_1" rem 提交文件,-m 参数是提交说明。 ``` * Git 每次提交代码,都要写 Commit message(提交说明),否则就不允许提交。提交之后显示如下信息: > [master (root-commit) e00ea37] ti_jiao_1 > 1 file changed, 2 insertions(+) > create mode 100644 1.txt * 显示更改了1个文件,有2行内容, * 为什么要分为 add 添加和 commit 提交两步?因为 add 可以分次添加, commit 是一次性提交。 ``` dos copy 1.txt 2.txt copy 1.txt 3.txt git add 1.txt git add 2.txt 3.txt git commit -m "ti_jiao_3" ``` > [master f1c1590] ti_jiao_3 > 2 files changed, 4 insertions(+) > create mode 100644 2.txt > create mode 100644 3.txt * 经过复制,有了3个文件。然后 add 多次添加,后由 commit 一次性提交。提交结果是成功2个文件,因为我们的 1.txt 之前已提交过了。 * **init 创建仓库** `git init` * **add 添加文件** `git add 1.txt` * **commit 提交文件** `git commit -m "ti_jiao_1"` ## 更改和和查看文件状态 把 1.txt 的第一行 l1 改为 l11 。 使用 `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: 1.txt > > no changes added to commit (use "git add" and/or "git commit -a") 上面的信息告诉我们,`当前所有的分支 master` ,`有更改但没有提交`。还告诉我们`如何更新要提交的内容`和`如何放弃更改`,我们`修改了什么文件`,`这个更改没有添加也没有提交以及如何添加和提交` 。 我们还常常希望知道修改了什么地方,那就使用 `git diff` 来查看差异。 >diff --git a/1.txt b/1.txt >index 3582182..78d0700 100644 >--- a/1.txt >+++ b/1.txt >@@ -1,2 +1,2 @@ >-l1 >+l11 > l2 --- 表示原文件 +++ 表示新文件 @@ 表示变动位置,也叫差异小结。`@@ -1,2 +1,2 @@` 中的 `-(减号)` 表示原文件,`-1` 表示原文件的第1行,`-1,2` 表示原文件的第1行到第2行之间。 - 表示出现在原文件中的行,也就是被删除的行,减呀 + 表示出现在新文件中的行,也就是新添加的行,加呀 空格表示都存在的行,表示没有差异 使用 `git add 1.txt` 添加文件,`git status` 再次查看状态,会显示已添加但没有提交的文件,也是提交时会被提交的文件。 >On branch master >Changes to be committed: > (use "git reset HEAD <file>..." to unstage) > > modified: 1.txt 提交 `git commit -m "xiu_gai_1_line"` 显示更改了1个文件,有1行添加,1行删除。呵呵,确定行数是没有改变呀: >[master cc508d1] xiu_gai_1_line > 1 file changed, 1 insertion(+), 1 deletion(-) 再次查看状态 `git status` ,返回 `On branch master nothing to commit, working tree clean` 表示没有需要提交的更改,工作目录整洁。 * **status 查看状态** `git status` * **diff 查看差异** `git diff` ## 版本跳转 继续把 1.txt 的第一行 l11 改为 l111 ,然后添加并提交,到现在我们已经经过了3次提交。 使用 `git log` 可以查看提交记录。 >commit 038bae478c42f9495d75eaed8ee44b5d3202abe8 >Author: Your Name <[email protected]> >Date: Sun Mar 26 21:43:51 2017 +0800 > > xiu_gai_1_line > >commit d4253c4aa8a3abc35390b547b9962c0d32a5647b >Author: Your Name <[email protected]> >Date: Sun Mar 26 21:37:21 2017 +0800 > > ti_jiao_3 > >commit 739fd22571c153ad80709cb2ccbed4fa9a3ac704 >Author: Your Name <[email protected]> >Date: Sun Mar 26 21:36:48 2017 +0800 > > ti_jiao_1 可以看到, git 由近到远的显示了每一次提交的时间、作者、提交ID(commit id,版本号)。 上面才是3次的提交,就占据了很多屏幕。可以加上 `--pretty=oneline` 参数,只显示版本号和描述,单行显示。 >038bae478c42f9495d75eaed8ee44b5d3202abe8 xiu_gai_1_line >d4253c4aa8a3abc35390b547b9962c0d32a5647b ti_jiao_3 >739fd22571c153ad80709cb2ccbed4fa9a3ac704 ti_jiao_1 发进行版本跳转,肯定需要知道版本号。在 git 中使用 `HEAD` 表示当前版本,上一个版本是 `HEAD^`,上上个是 `HEAD^^`,上100个是 `HEAD~100` 。 下面我们使用 `git reset --hard head^^` 跳转到上上版本。 >C:\Users\用户名\Desktop\git\dir1>git log --pretty=oneline >038bae478c42f9495d75eaed8ee44b5d3202abe8 xiu_gai_1_line >d4253c4aa8a3abc35390b547b9962c0d32a5647b ti_jiao_3 >739fd22571c153ad80709cb2ccbed4fa9a3ac704 ti_jiao_1 > >C:\Users\用户名\Desktop\git\dir1>dir /b >1.txt >2.txt >3.txt > >C:\Users\用户名\Desktop\git\dir1>git reset --hard head^^^^ >HEAD is now at 739fd22 ti_jiao_1 > >C:\Users\用户名\Desktop\git\dir1>git log --pretty=oneline >739fd22571c153ad80709cb2ccbed4fa9a3ac704 ti_jiao_1 > >C:\Users\用户名\Desktop\git\dir1>dir /b >1.txt 可以看到,我们跳转到了版本ti_jiao_1,文件和第一次提交时一样了,只有1.txt,说明确实跳转成功了。 可能你还注意到,我上面使用了4个^,而不是2个^,这是因为在 cmd 中^符号是用来转义的,也就是说2个^才是1个^。 虽然上面的 log 只有一个了,不过我们还可以使用之前的 ID 进行跳转。 >C:\Users\用户名\Desktop\git\dir1>git log --pretty=oneline >739fd22571c153ad80709cb2ccbed4fa9a3ac704 ti_jiao_1 > >rem 使用 ID 来进行版本跳转,不需要把 ID 完整输入 >C:\Users\用户名\Desktop\git\dir1>git reset --hard 038bae478c >HEAD is now at 038bae4 xiu_gai_1_line > >C:\Users\用户名\Desktop\git\dir1>git log --pretty=oneline >038bae478c42f9495d75eaed8ee44b5d3202abe8 xiu_gai_1_line >d4253c4aa8a3abc35390b547b9962c0d32a5647b ti_jiao_3 >739fd22571c153ad80709cb2ccbed4fa9a3ac704 ti_jiao_1 > >rem 不要忘记~2也可以回退到上上个版本 >C:\Users\用户名\Desktop\git\dir1>git reset --hard head~2 >HEAD is now at 739fd22 ti_jiao_1 > >C:\Users\用户名\Desktop\git\dir1>git log --pretty=oneline >739fd22571c153ad80709cb2ccbed4fa9a3ac704 ti_jiao_1 如果不知道版本号,如何跳转到下一版本呢? 使用 `git reflog` 可以获得命令执行日志。 >C:\Users\用户名\Desktop\git\dir1>git reflog >038bae4 [email protected]{18}: commit: xiu_gai_1_line >d4253c4 [email protected]{19}: commit: ti_jiao_3 >739fd22 [email protected]{20}: commit (initial): ti_jiao_1 * **log 查看提交日志** `git log` 详情, `git log --pretty=online` 精简。 * **reset 版本跳转** `git reset --hard head^` 跳转到上1个版本,`head^^` 、`head~2` 跳转到上2个版本, `git reset --hard abcdefg` 跳转版本 ID 唯一 abcdefg 开头的版本。 * **reflog 查看命令日志** `git reflog` 。 ## 工作区和暂存区 - 之前我们建立的 dir1 目录里面能看到的内容是工作区,里面隐藏的 .git 目录是 git 的版本库。 - git init 是创建了一个 .git 目录,也就是版本库。 - git add 是把文件添加到了暂存区。 - git commit 是提交暂存区的文件到当前分支。也就是 HEAD 指向的分支 master ,这个 master 是自动创建的。 - 每次修改就需要进行一次 git add 操作,否则修改不会被提交。 >rem 修改第一行为 l11 >C:\Users\Administrator\Desktop\git\dir1>type 1.txt >l11 >l2 > >rem 添加到暂存区但没有提交 >C:\Users\Administrator\Desktop\git\dir1>git add 1.txt > >rem 再次修改为 l111 >C:\Users\Administrator\Desktop\git\dir1>type 1.txt >l111 >l2 > >rem 提交 >C:\Users\Administrator\Desktop\git\dir1>git commit -m ‘l111‘ >[master bdc0a31] ‘l111‘ > 1 file changed, 1 insertion(+), 1 deletion(-) > >rem 查看状态,好像说有更改没有提交,没有添加也没有提交。 >C:\Users\Administrator\Desktop\git\dir1>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: 1.txt > >Untracked files: > (use "git add <file>..." to include in what will be committed) > > add > git > type > >no changes added to commit (use "git add" and/or "git commit -a") > >rem 可以使用 git diff ,也可以使用 git diff head -- 1.txt 对比差别,发现 l111 并没有提交,是的,因为我们都没添加到暂存区,而提交的是暂存区的内容。 >C:\Users\Administrator\Desktop\git\dir1>git diff head -- 1.txt >diff --git a/1.txt b/1.txt >index 78d0700..644adf5 100644 >--- a/1.txt >+++ b/1.txt >@@ -1,2 +1,2 @@ >-l11 >+l111 > l2 如果需要把 l111 提交,需要再次 git add 、git commit 。 * **git diff head -- 对比文件差异** `git diff head -- 1.txt` 。 >我认为 `git diff <file>` 等价于 `git diff HEAD -- <file>`, 都是将工作区内的内容与版本库里面最新版本进行比较 >`git diff HEAD -- <file>` 的意义在于, 第一个参数HEAD是可变的, 也就是可以将工作区内的内容与版本库里指定的任意版本进行比较. 如 `git >diff 3628 -- <file>` >add之后, 再使用 `git diff` 将看不到变化, 原因是当前工作区的修改已被添加到暂存区 >要查看暂存区内的内容与版本库里面最新版本的差别需要加--cached参数:`git diff --cached` 2017-04-29 更新 ## tgit 的安装 感觉好久没有继续学习这个git了。这是为什么呢? 因为上面的学习过程中遇到一个问题,也就是中文乱码的问题。 这个中文乱码,出现在以下情况中: 当提交描述为中文时,提交日志上的中文描述显示乱码。 显示文件差异时,文件中的中文显示乱码。 找了很多文章很多方法,都无法同时完美解决。要么只能解决其一,要么两个都无法解决。 说说我为什么用tgit吧,首先是很好的解决了乱码问题,然后是可以设置操作菜单中文。所以就当一个工具软件用吧,虽然不能用命令行感觉说话都不硬气了唉。 好了不说其他的了,以下说说如何安装使用 tgit 吧。 因为是windows软件,都是一些可视化操作,哪里不会点哪里就可以了。 1. `msygit` 首先安装 git ,还是命令行的 git ,使用上面我们安装的 msgit 就可以。 2. `TortoiseGit` 然后安装 tgit ,也就是可视化操作 git 的这个东东,安装好这个之后就可以使用了,你看你的右键菜单上多了很多 git 相关的选项。 3. `TortoiseGit-LanguagePack` 这个是语言包,不是必须的。,像我一样对E文不了解,我安装了中文语言包。 然后就没有然后了。
以上是关于2020-09-16 tortoise git 添加和删除tag的主要内容,如果未能解决你的问题,请参考以下文章