从命令行git转到Tortoise版git
Posted tags: 篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从命令行git转到Tortoise版git相关的知识,希望对你有一定的参考价值。 阅读前请注意: 2016-29 设置工作目录 添加文件到版本库以及提交文件 [master (root-commit) e00ea37] ti_jiao_1 为什么要分为 add 添加和 commit 提交两步?因为 add 可以分次添加, commit 是一次性提交。 [master f1c1590] ti_jiao_3 经过复制,有了3个文件。然后 add 多次添加,后由 commit 一次性提交。提交结果是成功2个文件,因为我们的 1.txt 之前已提交过了。 init 创建仓库 把 1.txt 的第一行 l1 改为 l11 。 On branch master no changes added to commit (use "git add" and/or "git commit -a") 上面的信息告诉我们, diff --git a/1.txt b/1.txt --- 表示原文件 使用 On branch master 提交 [master cc508d1] xiu_gai_1_line 再次查看状态 继续把 1.txt 的第一行 l11 改为 l111 ,然后添加并提交,到现在我们已经经过了3次提交。 commit 038bae478c42f9495d75eaed8ee44b5d3202abe8 xiu_gai_1_line commit d4253c4aa8a3abc35390b547b9962c0d32a5647b ti_jiao_3 commit 739fd22571c153ad80709cb2ccbed4fa9a3ac704 ti_jiao_1 可以看到, git 由近到远的显示了每一次提交的时间、作者、提交ID(commit id,版本号)。 038bae478c42f9495d75eaed8ee44b5d3202abe8 xiu_gai_1_line 发进行版本跳转,肯定需要知道版本号。在 git 中使用 C:\Users\用户名\Desktop\git\dir1>git log --pretty=oneline C:\Users\用户名\Desktop\git\dir1>dir /b C:\Users\用户名\Desktop\git\dir1>git reset --hard head^^^^ C:\Users\用户名\Desktop\git\dir1>git log --pretty=oneline C:\Users\用户名\Desktop\git\dir1>dir /b 可以看到,我们跳转到了版本ti_jiao_1,文件和第一次提交时一样了,只有1.txt,说明确实跳转成功了。 虽然上面的 log 只有一个了,不过我们还可以使用之前的 ID 进行跳转。 C:\Users\用户名\Desktop\git\dir1>git log --pretty=oneline rem 使用 ID 来进行版本跳转,不需要把 ID 完整输入 C:\Users\用户名\Desktop\git\dir1>git log --pretty=oneline rem 不要忘记~2也可以回退到上上个版本 C:\Users\用户名\Desktop\git\dir1>git log --pretty=oneline 如果不知道版本号,如何跳转到下一版本呢? C:\Users\用户名\Desktop\git\dir1>git reflog rem 修改第一行为 l11 rem 添加到暂存区但没有提交 rem 再次修改为 l111 rem 提交 rem 查看状态,好像说有更改没有提交,没有添加也没有提交。 Untracked files: no changes added to commit (use "git add" and/or "git commit -a") rem 可以使用 git diff ,也可以使用 git diff head -- 1.txt 对比差别,发现 l111 并没有提交,是的,因为我们都没添加到暂存区,而提交的是暂存区的内容。 如果需要把 l111 提交,需要再次 git add 、git commit 。 我认为 2017-04-29 更新 感觉好久没有继续学习这个git了。这是为什么呢? 找了很多文章很多方法,都无法同时完美解决。要么只能解决其一,要么两个都无法解决。 说说我为什么用tgit吧,首先是很好的解决了乱码问题,然后是可以设置操作菜单中文。所以就当一个工具软件用吧,虽然不能用命令行感觉说话都不硬气了唉。 好了不说其他的了,以下说说如何安装使用 tgit 吧。 然后就没有然后了。 以上是关于从命令行git转到Tortoise版git的主要内容,如果未能解决你的问题,请参考以下文章
本文先学命令行git的,但过不久遇到乱码问题久久不能解决,最后转向tgit。安装
创建版本库
*后面能用 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 参数是提交说明。
1 file changed, 2 insertions(+)
create mode 100644 1.txt
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"
2 files changed, 4 insertions(+)
create mode 100644 2.txt
create mode 100644 3.txt
git init
git add 1.txt
git commit -m "ti_jiao_1"
更改和和查看文件状态
使用 git status
查看状态,返回以下信息:
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
当前所有的分支 master
,有更改但没有提交
。还告诉我们如何更新要提交的内容
和如何放弃更改
,我们修改了什么文件
,这个更改没有添加也没有提交以及如何添加和提交
。
我们还常常希望知道修改了什么地方,那就使用 git diff
来查看差异。
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
再次查看状态,会显示已添加但没有提交的文件,也是提交时会被提交的文件。
Changes to be committed:
(use "git reset HEAD ..." to unstage) modified: 1.txt
git commit -m "xiu_gai_1_line"
显示更改了1个文件,有1行添加,1行删除。呵呵,确定行数是没有改变呀:
1 file changed, 1 insertion(+), 1 deletion(-)git status
,返回 On branch master nothing to commit, working tree clean
表示没有需要提交的更改,工作目录整洁。
git status
git diff
版本跳转
使用 git log
可以查看提交记录。
Author: Your Name [email protected]
Date: Sun Mar 26 2151 2017 +0800
Author: Your Name [email protected]
Date: Sun Mar 26 2121 2017 +0800
Author: Your Name [email protected]
Date: Sun Mar 26 2148 2017 +0800
上面才是3次的提交,就占据了很多屏幕。可以加上 --pretty=oneline
参数,只显示版本号和描述,单行显示。
d4253c4aa8a3abc35390b547b9962c0d32a5647b ti_jiao_3
739fd22571c153ad80709cb2ccbed4fa9a3ac704 ti_jiao_1HEAD
表示当前版本,上一个版本是 HEAD^
,上上个是 HEAD^^
,上100个是 HEAD~100
。
下面我们使用 git reset --hard head^^
跳转到上上版本。
038bae478c42f9495d75eaed8ee44b5d3202abe8 xiu_gai_1_line
d4253c4aa8a3abc35390b547b9962c0d32a5647b ti_jiao_3
739fd22571c153ad80709cb2ccbed4fa9a3ac704 ti_jiao_1
1.txt
2.txt
3.txt
HEAD is now at 739fd22 ti_jiao_1
739fd22571c153ad80709cb2ccbed4fa9a3ac704 ti_jiao_1
1.txt
可能你还注意到,我上面使用了4个^,而不是2个^,这是因为在 cmd 中^符号是用来转义的,也就是说2个^才是1个^。
739fd22571c153ad80709cb2ccbed4fa9a3ac704 ti_jiao_1
C:\Users\用户名\Desktop\git\dir1>git reset --hard 038bae478c
HEAD is now at 038bae4 xiu_gai_1_line
038bae478c42f9495d75eaed8ee44b5d3202abe8 xiu_gai_1_line
d4253c4aa8a3abc35390b547b9962c0d32a5647b ti_jiao_3
739fd22571c153ad80709cb2ccbed4fa9a3ac704 ti_jiao_1
C:\Users\用户名\Desktop\git\dir1>git reset --hard head~2
HEAD is now at 739fd22 ti_jiao_1
739fd22571c153ad80709cb2ccbed4fa9a3ac704 ti_jiao_1
使用 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
git log
详情, git log --pretty=online
精简。 git reset --hard head^
跳转到上1个版本,head^^
、head~2
跳转到上2个版本, git reset --hard abcdefg
跳转版本 ID 唯一 abcdefg 开头的版本。 git reflog
。 工作区和暂存区
C:\Users\Administrator\Desktop\git\dir1>type 1.txt
l11
l2
C:\Users\Administrator\Desktop\git\dir1>git add 1.txt
C:\Users\Administrator\Desktop\git\dir1>type 1.txt
l111
l2
C:\Users\Administrator\Desktop\git\dir1>git commit -m ‘l111‘
[master bdc0a31] ‘l111‘
1 file changed, 1 insertion(+), 1 deletion(-)
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
(use "git add ..." to include in what will be committed) add
git
type
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
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
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文不了解,我安装了中文语言包。
然后就没有然后了。