0 前言
TortoiseGit其实是一款开源的git的版本控制系统,也叫海龟git。TortoiseGit提供了人性化的图形化界面,不用像Git一样输入许多语句,像git init、git add、git commit这些语句就通通不用记了。轻松使用鼠标,就可以完成代码的提交和上传。对于使用本地Git的新手来说,TortoiseGit更加简便,更加容易上手。
Git的流程分为一个大循环和一个小循环。工作区就是我们一开始文件所存在的区域,然后选择添加文件后,文件就进入了暂存区,选择提交文件后,文件就进入了本地仓库,这是一个小循环。当从远程仓库拉取代码时,代码会直接拉取到工作区,然后我们要添加、提交,然后才可以把拉取的代码放入本地仓库,本地仓库的代码可以通过推送,推送到远程仓库,这是一个大循环。
1 安装
参照:
在windows下安装git中文版客户端并连接gitlab - 坤霸天下 - 博客园
需要的3个安装包的百度网盘链接:
链接:https://pan.baidu.com/s/1G-8Fb1g5ZsIsabtIJCwdyQ
提取码:9eun
在本地客户端与远程仓库进行认证关联时,网上大部分都是选择公钥秘钥之类的登录方式,其实不必这么麻烦。直接用用户名、密码也可以做认证。用户名、密码与注册Gitee时的用户名、密码一致即可。
2 使用
主要的操作就是建立仓库、提交、推送、忽略文件、建立分支、合并分支等,高级一点的操作有cherry pick(摘取提交)等等 。掌握了这些,应对一般的开发也就够了。
注意: 1.当使用“git checkout 分支名”命令时,Git会切换到指定分支。
回退情况1:文件在工作区进行回退
这里指的是文件没有经过任何提交,仅仅只是保存。但是保存完之后发现需要回退一下代码。
此时可以使用 git checkout filename
进行回退。(危险动作,三思)
但如果后面接的是文件名或者路径,那么这个命令将会把暂存区中的内容拿出来去覆盖工作区的内容。 这样也就可以挽救工作区中不小心被修改的文件。
比如: git checkout abc.txt 就相当于把暂存区内的abc.txt拿出来替换掉工作区的abc.txt;.
git checkout . (注意这里有个点) 就相当于把暂存区内的所有内容拿来替换掉工作区。
回退情况2:文件在暂存区进行回退
这里指的是文件经过git add
指令之后进入了暂存区。
此时可以使用 git reset HEAD
指令将暂存区的文件回退到修改之前的状态。(危险动作,三思)
另外:git rm --cached <filename>是git add <filename>的反向指令!
回退情况3:文件在本地仓库进行回退
例如情况如下:
这里指的是文件经过git commit
指令之后进入了本地仓库。
此时可以使用 git log
查看本次提交之前的版本,并记住想要回退的版本的id。
然使用 git reset --hard commit_id (这里是 8c12)
指令将暂存区的文件回退到修改之前的状态。
回退情况4:文件已经在远程仓库中
这里指的是文件经过git push 指令之后进入了远程仓库。
一种补救的方法就是修改错误的版本,push一个新的上去就行。
另一种和情况3类似,通过 git reset --hard commit_id 回退本地版本,然后把旧的版本重新push上去。然而,此时的问题就是此时本地的版本落后于远程的版本。因此直接再使用git push的话是失败的:
此时可以加上 -f
来强制推:git push - f
这样就可以了!
2.1 建立仓库、提交、推送、忽略文件、建立分支、合并分支
参见:
TortoiseGit常用的基本使用教程_哔哩哔哩_bilibili
Git22-TortoiseGit的使用_哔哩哔哩_bilibili
2.2 cherry pick(摘取提交)
tortoisegit根据指定版本号合并到指定分支上——cherrypick的使用 - 百度文库
2.3 在Git中使用beyond compare 高效解决冲突
3 案例
案例1,commit或者push错了,想更改:
1. 以dev分支为基础,建立自己的分支dev-mike:
这时git log:
commit id: 123a
xxxx
commit id: 2312
xxxx
2. 在dev-mike新加功能代码完毕并运行测试后:
git add .
git commit -m "xxxxx"
git push origin dev-mike 推到远端,
3. 此时git log 查看:
commit id: abcd (刚在dev-mike最新commit的ID, 远端也为这个版本.
xxxx
commit id: 123a
xxxx
commit id: 2312
xxxx
4. 突然发现, 刚刚commit id: abcd中多提交了一个多余的文件a.txt,这个文件不该被推到远端。
且刚刚在本地硬盘上删除了a.txt
5. 输入git checkout . 后,a.txt恢复到了硬盘上.
6. 使用git reset 123a --soft 或 git reset --soft 回退到刚commit之前的commit Id.
注意: --soft仅移动了HEAD, 对工作目录及暂存区均无影响.
7. 这时在本地硬盘上删除了a.txt, git status可以看到文件被删除的提示.
8. git add .
9. git commit -m "xxxx"
10. git push origin dev-mike -f 重推到远端,如果不加-f则会提示本地版本落后于远端版本,不允许推送.