[toc] # SmartGit 操作指南(Linux) 本文以 SmartGit 为例介绍 Git 版本管理图形化操作的方法。(Linux版)(个人学习研究版) ## 准备工作 安装包存放地址:\10.1.135.8\导远内网文件服务器\光电产品\B1(R外网到内网)\99-其他\MHH\Smartgit ### 软件安装 1. **直接打开 .deb包安装** 2. **进入SmartGit** ![](./images/open.png) 3. **接受,选择试用三十天** ![](./images/license.png) 4. **(自动获取git),设置用户信息** ![](./images/user_inf.png) 5. **选择密钥设置。采用本地系统密钥或是客户端密钥(简单些),后续可更换** ![](./images/SSH_smart.png) 6. **提交显示的风格,随自己喜好** 7. **设置隐私,全叉掉!!** ![](./images/privacy.png) 8. **会弹出连接,检查更新。直接cancel然后skip就行。之后就进入了** ![](./images/connection.png) 9. **关掉客户端**,~~进行破解~~ **(学习研究)。** 10. **进入~/.config/smartgit目录下,将安装包中的 crackSmartGit-master文件夹 以及 crackSmartGit.jar 放入其中** 11. **打开smartgit.vmoptions文件,在其中添加“-javaagent:/home/uisrc/.config/smartgit/crackSmartGit.jar=19.1.3**(其中uisrc根据自己用户名自行修改) 12. **最后打开客户端,在菜单->帮助->注册产品 ,选择这个目录下crackSmartGit-master文件夹中的的license.txt文件即可(先解压license.zip)。最后成功效果如下图,没有到期时间的显示** ![](./images/smartgit_suc.png) ### Git 账户 **在客户端左上方菜单栏->repository->Edit Git Config** ## 初始化 ### 导入本地已有仓库 **在客户端左上方菜单栏->repository->Add or Create。选择本地已有仓库即可** ### 克隆远程仓库 **两种方式,如下** 1. **SSH协议关联远程仓库** - 在客户端左上方菜单栏->repository->clone" - 输入远程仓库的SSH地址(注意前提是远程仓库已添加本地电脑的密钥),点击next - 弹出SSH authentication,会自动读取本地私钥文件,输入密码即可 ![](./images/SSH_authentication.png) - 之后会弹出Master Password,用于保护向服务器进行身份验证的密码,也设置。之后确认SSH服务器验证。 ![](./images/Master_Password.png) - 最后设置存储地址即可。 2. **HTTP协议直接输入账户密码关联远程仓库** - 类似SSH克隆 - 输入远程仓库的HTTP地址,弹出login,输入远程仓库的账户密码,最后设置存储地址即可。 ![](./images/http_login.png) ### 初始化本地仓库 1. **在客户端左上方菜单栏->repository->Add or Create。选择存储的地方,再确认创建即可** ![](./images/smart_create.png) 2. **将其连接到远程仓库进行管理:获取远程仓库的URL,在客户端左上方菜单栏->Remote->Add... 添加即可** 3. **注意!!!本地默认的分支是master,可在左上角pull符号旁的小箭头点击选择fetch远端后,在左下角选择远端的main分支,右击选择checkout** ![](./images/main_checkout.png) - 当我在本地新增一个文件,提交后将其push到远端**(注意push的分支是哪个)** ## 提交 ### 跟踪文件 1. **跟踪**:在用SmartGit进行项目跟踪时,它是以文件夹形式跟踪文件夹下所有的文件。自动进行。 - 在右边查看其信息。 ![](./images/douc_sta.png) 2. **忽略跟踪**:右击选中文件,选中ignore即可。 ### 填写提交信息 1. 右侧文件查看栏,选中文件右击stage暂存。 2. 填写,提交 - 直接在上面commit栏填写。 - 也可以右击文件选中commit。 ![](./images/commit_douc_t.png) ### 推送提交 1. 左上方的push进行推送。 2. 也可以在提交时选择commit and push ### 提交约束 - 参考./Commit.md文件 ## 分支管理 ### 创建本地新分支 - 在客户端左上方菜单栏->branch->Add branch ### 拉取远程分支并创建本地分支 - 在左上角pull符号旁的小箭头点击选择fetch远端后,在左下方选择远端中想要分支,右击选择checkout即可 ### 切换分支 - 在左下方双击选中想要切换的分支即可 ### 删除分支 - 在左下方选择想要删除的分支,右击选择Delete即可 ## 推送 ### 将本地开发分支推送到远程仓库 - 切换到对应分支,点击左上角的push。或者在左下角选中分支,右击选中push。 ## 合并 ### 拉取远程仓库主分支到本地 - 在左上角pull符号旁的小箭头点击选择fetch远端后,在左下方选择想要拉取的远端分支,右击选择checkout即可 ### 将远程分支合并到本地分支 - fetch远端后,在左下方选择想要合并的远端分支,右击选择merge即可。或者点击右上角的merge图标 ### 将开发分支移动到主分支 - 切换到主分支(为方便查看,可将左下角的本地分支都勾选,从而显示),选中想要将其合并进来的分支,右击选择merge或右上角的merge即可 ![](./images/want_merge.png) ![](./images/merge_success.png) ## 冲突解决 情况:当我main分支和develop分支都存在conflict.md且内容冲突。将其合并引起合并冲突。 ![](./images/now_conf.png) **三种方式** 1.使用冲突解决工具"**conflict solver**" ![](./images/conflict_tool.png) 2. 直接打开冲突文件手动解决冲突  - 根据项目需求删除,保留,修改代码就行了。(注意,在项目最后这些符号: <<<<<<>>>>>>(一长串) 都不能存在,否则报错)  - 最后选中冲突文件,再选择左上角菜单栏中的操作->解决冲突,将冲突文件标记为已解决即可。 3. 使用"我的"或者"他人的版本解决",即take ours和take theirs。 我这选择的是冲突解决工具,在其中删除那些符号,将其两者保留。commit然后push到仓库后验证如下图 ![](./images/final.png)