[toc] # SourceTree 操作指南(Windows) 本文以**SourceTree** 为例介绍 Git 版本管理图形化操作的方法。(Windows版) ## 准备工作 安装包存放地址:\\10.1.135.8\导远内网文件服务器\光电产品\B1(R外网到内网)\99-其他\MHH\SourceTree SourceTree介绍参考:https://www.cnblogs.com/Can-daydayup/p/13128633.html ### 软件安装 1. **跳过登录** ![](./images/no_SSH.png) 2. **去掉第二个,不选(类似git的一个程序)** ![](./images/re2.png) 3. **添加本地账号** 4. **添加密钥(可先不创建)** ![image](./images/skip.png) ### Git 账户 进入客户端后可选择左上方任务栏 **工具=>选项** - 在"一般"中:可设置用户信息,SSH等 - 在"验证"中:设置存储的远程仓库账号 ## 初始化 **克隆远程仓库时有两种方式,因而有两种初始化如下** 1. **SSH协议关联远程仓库的初始化** - 点击客户端左上方任务栏工具=>选项 - 先SSH客户端选择OpenSSH,然后添加SSH密钥位置,一般在C:\Users\XXXXXXX\ .ssh内 ![](./images/add_SSH.png) 2. **HTTP协议直接输入账户密码关联远程仓库的初始化** - 前往本地控制面板,搜索凭据管理器 - 选择Windows凭据,添加普通凭据,之后输入gitlab网站,填写账号密码(注意内网的加上 .ag ) ![](./images/windows_credential.png) - **由于内网的特殊,剩下步骤与下面HTTP协议克隆远程仓库放在一起** ### 导入本地已有仓库 **如下图,点击"+",选择"Add",再加入本地仓库地址,添加即可(注意不是.git)** ![](./images/add_local.png) ### 克隆远程仓库 **两种方式,如下** 1. **SSH协议关联远程仓库** - 选择"clone" - 输入远程仓库的SSH地址(注意前提是远程仓库已添加本地电脑的密钥) - 设置存放的本地地址 - 设置顶部标签tab - 选择克隆的分支(克隆深度:对于大项目,提交信息量巨大,可选择深度减少克隆负担,默认0) - 最后克隆即可 ![](./images/SHH_clone.png) 2. **HTTP协议直接输入账户密码关联远程仓库** - 类似SSH克隆 - 输入远程仓库的HTTP地址 ![](./images/HTTP_clone.png) - **若HTTP协议直接输入账户密码关联远程仓库的初始化未完成,会弹出下图,已添加普通凭据后在管理器中输入账号密码即可** ![](./images/sourcetree_credential.png) ### 初始化本地仓库 1. **选择"create",创建** ![](./images/create_local.png) 2. **创建完成本地仓库后,需要连接远程仓库进行管理,可创建个远程仓库,获取其URL** ![](./images/create_remote.png) 3. **点击客户端左上方任务栏 仓库=>仓库设置** ![](./images/warehouse_set.png) 4. **在仓库设置中添加需要连接的远程仓库,填写远端名称与URL后确认,再在仓库设置中选择该远端即可** ![](./images/add_remote.png) 5. **设置完远端后,应当先"获取""拉取",再进行之后的提交操作,否则还要关联master。** ![](./images/pull_get.png) - **具体操作:(为方便可先行在远端中创建个文件,便于显示main分支)先双击右侧远端的main分支=>检出确认,获取后再进行拉取即可。(可看下面的介绍)** ![](./images/get_remote.png) **完成!** ## 提交 ### 跟踪文件 1. **跟踪**:在用SourceTree进行项目跟踪时,它是以文件夹形式跟踪文件夹下所有的文件。自动进行。 2. **忽略跟踪**:点击客户端左上方任务栏 仓库=>仓库设置=>高级,在仓库指定忽略列表中,编辑.gitignore文件,在其中加入需要忽略跟踪的文件/文件夹即可,也能设置规则忽略相应文件/文件夹。 ![](./images/ignore.png) ### 填写提交信息 **实例**: 在本地仓库文件夹中添加了一个文件(**可通过客户端右上角的资源管理器直接打开本地仓库文件夹**) ![](./images/open_local_doc.png) 1. **查看** - 客户端会自动检测,并在下方的显示"未暂存文件",也可通过左上方workspace中的"文件状态"查看 ![](./images/workspace_doc.png) - 可点击"已暂存文件"上方的查看方式进行修改平面列表或树状图示等 ![](./images/look_format.png) 2. **暂存** - 如下图 ![](./images/storage.png) - 当暂存后又对该文件进行了修改,可进入workspace中的"文件状态",选中"未暂存文件"中该文件,便可在右侧查看修改变化 ![](./images/see_diff.png) 3. **提交** - 进入workspace中的"文件状态"最下方,填写提交信息,点击提交即可。(对于提交信息规范,请看下面"提交约束") ![](./images/submit.png) ### 推送提交 - 提交之后在右上方"推送"会有提交文件数量提示,点击,并选择推送的分支,确认即可。 ![](./images/push.png) ![](./images/push_create.png) - **推送成功可点击客户端右上方的"远端",直接进入远端仓库进行查看** ### 提交约束 - 提交信息规范较多,在./Commit.md文件中。 - 辅助填写工具研究中。 ## 分支管理 ### 创建本地新分支 - 点击左上方"分支"创建本地新分支。 ![](./images/get_branch.png) ### 拉取远程分支并创建本地分支 1. 远程仓库创建一个新的分支。 ![](./images/remote_cre_bra.png) 2. 左上方,先"获取",再"拉取"到本地。 ![](./images/get_new_branch.png) 3. 左侧,选择远端需要检出,创建到本地的分支,双击。 ![](./images/remote_in_branch.png) 4. 成功后左侧本地栏显示 ![](./images/get_remote_sus.png) ### 切换分支 - **双击需要切换的分支即可。** ### 删除分支 1. 本地分支删除 - 在左侧本地中右击选中分支,选择删除。 ![](./images/delete.png) 2. 远端分支删除 - 同理,在左侧远端中右击选中分支,选择删除。 ## 推送 ### 将本地开发分支推送到远程仓库 - 点击左上角"推送",勾选需要推送的本地分支即可。 ![](./images/push_branch.png) ## 合并 ### 将远程分支合并到本地分支 - 先切换到需要合并的本地分支,点击左上角"拉取",选择需要远端分支,确认即可 ![](./images/pull_branch.png) ### 将开发分支移动到主分支 - 先切换到主分支(等待被其他分支合并) - 点击左上角"合并",选择需要合并的提交分支,确认即可。 ![](./images/merge.png) - 合并成功。 ![](./images/merge_sus.png) ## 冲突解决 **冲突情况:** - develop分支出来的to_conflict文件修改后,原本main分支已对to_conflict进行再次修改。因而二者合并时,to_conflict文件冲突,引起合并冲突。如下图 ![](./images/conflict.png) ![](./images/conflict_warm.png) **冲突解决:** 三种方式 - 先选择下方的的冲突文件,查看其比较。选择左上角菜单栏中的操作->解决冲突。如下图 ![](./images/conflict_s.png) 1. **外部文本对比工具Beyond Compare(收费)** 2. **直接打开冲突文件手动解决冲突** - 根据项目需求删除,保留,修改代码就行了。(注意,在项目最后这些符号: `<<<<<<>>>>>>`(一长串) 都不能存在,否则报错) - 最后选中冲突文件,再选择左上角菜单栏中的操作->解决冲突,将冲突文件标记为已解决即可。 3. **使用"我的"或者"他人的版本解决"** - (我这选择的是 "使用我的版本解决冲突",因而to_conflict应当是main版本的。push到仓库后验证如下图) ![](./images/conflict_main.png)