TortoiseGit Guide

Posted -飞鹤-

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了TortoiseGit Guide相关的知识,希望对你有一定的参考价值。

1. Intro

TortoiseGit Windows Shell接口基于TortoiseSVN的Git。它是开源的,可以建立完全免费的软件。原生Git提供了简单的UI,更多是推荐用命令行来完成操作,这在Linux下更方便。在Windows下,大家还是更习惯用图形界面来操作。TortoiseGit是基于TortoiseSVN的UI开发的,操作习惯一致。一般情况下,建议大家使用TortoiseGit来操作,这样从SVN转到Git的学习成本更低。

2. Install

从TortoiseGit官网下载最新的软件。安装过程中,可以更换安装目录,其他的安装选项均为默认即可。

3. Account

TortoiseGit安装完成后,会默认启动Start Wizard。除了用户配置以外,其他都默认即可。
注:下图中的Name和Email都是用来标识代码上传者的。

4. Modify Password

打开控制面板,进入控制面板\\用户帐户\\凭据管理器,选择Windows凭据,然后选择相应的相应的网络地址进行修改保存。

5. Usage

5.1 Clone

从GitLab中Clone相应的Project,直接填写GetLab提供的相应的HTTP即可。Clone会获取远程仓库项目的所有版本信息指定目录创建本地仓库(.git目录,隐藏属性),并从本地仓库中checkout出main分支。

5.2. Commit

如果需要添加新文件,同SVN右键Add相应的文件即可。完成所有修改之后,即可以右点击Commit,选择并查看相应的上传文件,并填写相应的日志,即可以点击相应的Commit来提供到本地暂存中。

5.3. Push

Push,即将本地暂存中的修改记录推送到远程目标中,达到分布式存储的效果,来保证代码存储的安全性。在每次Commit之后选择Push,或右键选择Push。每次Push之前应该同步一下远程分支,防止远程分支有修改,未合并导致冲突或功能错误。Ref/Remote是指定远程分支,Destination/Remote则是指定不同的远程仓库。
如果想上传到不同的Branch中,参见下图选择相应的Branch Name。另外,也可以手动在Ref/Remote:后的编辑框中添加相应的分支名XX,则会在远程服务上创建相应的XX分支。

5.4. Pull

Pull即从远程服务上拉取最新版本。在每次Push之前,应该先Pull一下,这样可以避免与远程服务上的版本冲突。右键点击"Git Sync…"弹出Pull窗口,点击Pull即可以与远程服务进行同步。如果担心和本地分支冲突,可以在Pull下拉框选择Fetch只同步到本地仓库,不同步于工作目录的当前分支,然后自行将当前工作目录与本地仓库的分支进行比较手工合并。Pull下拉框还有其他选项,根据需要选择。

5.5. Switch/CheckOut

因为Git会将每个项目的完整记录全部记录,所以在不同的分支之间进行切换是在本地完成的,非常快。在Branch选项中选择相应的分支名,点击OK即可以完成分支间的切换。如果选择远程分支时,会相应创建本地分支。另外,可以选择Tag或Commit,则可以切换到指定提交版本。在Create New Branch中填写不同的分支名,可以和来创建新的本地分支。

5.6. Tag

TortoiseGit打的Tag,默认是提交到本地仓库的,需要推送到远程仓库,才能保证同步。
推送的时候,默认是不包括Tag信息的,需要手动选择Include Tags。

5.7. Merge

TortoiseGit的合并是当前本地分支为目标分支,源分支可以为本地分支、远程分支、Tag甚至是提交的Commit。
如果勾选了No Fast Forward,则不会合并源分支的日志到目标分支,需要手动全面注释合并信息。合并如果有冲突,处理流程同SVN。Merge之后的版本信息是存放在本地仓库,需要推送到远程仓库保证同步。

5.8. Submodule

我们要引入一些公共的库或文件时,可以用此功能。Submodule相当于在工作目录再引入了另外一个工作目录,并在当前工作目录中添加.gitmodules文件用来标识引入的SubModule。

  1. 打开SubModule Add窗口,设置SubModule的远程仓库目录,以在当前工作中存放的目录。
  2. 进入Submodule工作目录,切换分支版本为想要的版本。
  3. 退出到当前工作目录,推送相关SubModule的修改进远程仓库。

6. other

6.1. Multiple Remote Repository

有时候,我需要基于当前的工程分支进行一些长期的修改测试,如果长期用本地分支,担心代码安全性,如果推送到共享的仓库,担心对他人的分支切换带来一些麻烦。此时可以使用Fork功能从共享仓库Fork出一个新的供自己使用的仓库,但是有些为了仓库权限的问题,Fork功能可能未开放。此时就可能需要将当前自己做测试的分支推送到自己私人的仓库了。也即一个本地仓库,关联多个远程仓库。Pull、Push时选择相应的远程仓库即可。

  1. 在GitLab上创建一个空的项目XXX。
  2. 在TortoiseGit上配置远程仓库。
  3. 通过Fetch操作建立本地仓库与远程仓库的联系。
  4. 将本地仓库推送到私有远程仓库,效果和Fork相似,可以保留完整的版本信息。

6.2. Push Local Repository

  • 方法一,GitLab创建空项目,本地Clone远程仓库,添加相关文件,Push到远程仓库。
  • 方法二
  1. Git Create Repositry Here
  2. Add文件,然后Commit到本地仓库。
  3. 添加远程仓库配置。
  4. Pull远程仓库到本,会提示失败,需要Merge unrelated history,然后再Push到远程仓库。

6.3. Log Message

  • 默认合并时,会将源分支的Log合并到目标分支,如果没有特别的需要,做个简单注释即可。
  • 如果合并时使用了No Fast Forword(–no-ff,有时分支版本有些累赘的不想要的Log,可以使用些选项),则不会合并分支的Log,此时的合并Log需要详细描述分支版本做了哪些修改。

Log Messages查看窗口,可以针对文件查看,也可以针对整个目录查看,默认只显示当前分支的Log Message信息(勾选All Branches之后,会显示所有分支的Log信息)。Message中的彩色标签是用来标识branche/tag当前Log流中的最新位置。可以使用搜索框来查找相应的Log或文件。Graph中有描述各分支版本的发展及合并关系。Log Message并不一定是时间线性,而是分支合并关系有一定的联系,其是动态变化的。

6.4. other

  • 比较相应版本
  • 浏览仓库
  • 合并到main
  • Reset main到当前版本
  • 切换到此版本
  • 以此版本为基础创建分支
  • 以此版本创建Tag
  • 导出
  • 以此版本为基础恢复
  • 修改日志记录

6.5. Note

TortoiseGit中的Clean Up不要罗轻易使用,其作用与SVN不一样,它会删除工作目录未关联的文件。

以上是关于TortoiseGit Guide的主要内容,如果未能解决你的问题,请参考以下文章

软件git,github for window,tortoisegit有啥区别

TortoiseGit安装配置

Tortoisegit图文使用教程

TortoiseGit 安装

怎样用tortoisegit提交代码

TortoiseGit学习系列之TortoiseGit基本操作将提交到本地的项目推送到在线仓库(图文详解)