Skip to content

Git 相关图形化客户端

IDEA 集成 Git 客户端

初始化配置 Git

  1. 点击【File】菜单->【Settings】

  1. 选择【Version Control】->【Git】->在【Path to Git executable】中指定 git.exe 存放目录

  1. 点击【Test】按钮进行测试

创建本地仓库

  1. 选择【VCS】->【Import into Version Control】->【Create Git Repository】或者

  1. 选择工程所在的目录后,即可创建本地仓库了

  1. 创建成功后,就会出现相关的 git 操作菜单

Commit 提交代码

  1. 右键选择【Git】->【Commit file...】,将当前项目代码提交到本地仓库

或者点击 git 后边的对勾

注意:项目中的配置文件不需要提交到本地仓库中,提交时需要忽略掉。在项目目录中创建忽略的文件.gitignore,文件内容如下:

java
.idea
target
*.iml

.classpath
.project
.settings
Bin
  1. 在提交框中,可以选择要提交的文件、填写提交信息、查看文件差异。

  1. 成功提交后,可以在底部的 Git 工具窗口查看提交的记录

版本切换

  • 方式一:选择控制台【Git】(旧版本的idea叫“Version Control”)->【Log】->【Reset Current Branch...】->【Reset】。

可以选择不同的回退方法,详情查看每个选项的说明

这种切换的特点是会抛弃原来的提交记录

  • 方式二:选择控制台【Git】->【Log】->【Revert Commit】->【Merge】-> 处理代码 -> commit。

这种切换的特点是会当成一个新的提交记录,之前的提交记录也都保留。Revert 操作会当成一个新的提交记录,如果后悔了“回退”这个操作,也可以回退到没有回退之前的版本,因为历史记录还保留提交记录。

分支管理

创建分支

选择【VCS】(旧版本idea)->【Git】->【Branches】->【New Branch】-> 给分支起名字 ->【Creat】

切换分支

  • 选择右下角 Git 分支的名称按钮 -> 选择要切换的分支 ->【Checkout】

合并分支

选择 Git(VCS)->【Merge...】

选择要合并的分支 -> merge

Tips: 如果合并时出现代码冲突,需要处理冲突后再合并。

删除分支

点击右下角分支名称 -> 选中要删除的分支 ->【Delete】

克隆远程仓库到本地仓库

  • 第一种方式(主窗口):【Get from VSC】-> 选择【Version control: Git】-> 指定远程仓库的路径 -> 指定本地存放的路径 -> clone

  • 第二种方式(主菜单):【Git】->【Clone...】-> 指定远程仓库的路径与本地存放的路径 -> clone

推送(push)本地仓库到远程仓库

  1. 【Git】(VCS)->【Push...】

  1. 选择相应的分支,点击【Push】按钮,推送到远程仓库

如果不是克隆远程仓库创建的,此时就需要点击 Define remote,设置 git 服务器远端地址。设置后,点击 Push 推送到远程仓库

更新(pull)远端仓库代码到本地仓库

选择菜单栏或者右键项目,选择【Pull...】,更新远程仓库

协同开发

模拟两个程序员同步代码与更新代码。

使用右边工具栏菜单:

获取代码

点击 pull 图标获取远程仓库代码

推送代码

点击 push 图标推送代码到远程仓库

解决冲突

两个程序员修改了同一个文件中的同一行代码,提交时

处理冲突:

Notes: 还需要重新push代码到远程仓库。

idea 取消项目与 git 仓库的关联

选择【file】->【settings】->【version control】,选择项目目录,再点“减号”即可解除 git 仓库的关联,然后去项目目录下删除.git这个文件夹即可

SourceTree(待整理)

简介

Sourcetree 是一个用于 Windows 和 Mac 的免费 Git 客户端。通过 Sourcetree 的简单 Git GUI 可视化和管理存储库,简化了与 Git 存储库进行交互。

Sourcetree 官方网址:https://www.sourcetreeapp.com/

安装

下载完成后,在安装 SourceTree 的过程中,需要通过账户登录,但注册或登录界面可能根本无法打开,导致软件无法正常安装(注:此情况是版本 2.5.5,后续版本好像没此问题)。解决方法:

  1. 在目录 C:\Users\{youruser}\AppData\Local\Atlassian\SourceTree 下创建文件 accounts.json。注:{youruser} 需要替换为登录系统用户名。如电脑路径为:
C:\Users\Administrator\AppData\Local\Atlassian\SourceTree

写入如下内容:

json
[
  {
    "$id": "1",
    "$type": "SourceTree.Api.Host.Identity.Model.IdentityAccount, SourceTree.Api.Host.Identity",
    "Authenticate": true,
    "HostInstance": {
      "$id": "2",
      "$type": "SourceTree.Host.Atlassianaccount.AtlassianAccountInstance, SourceTree.Host.AtlassianAccount",
      "Host": {
        "$id": "3",
        "$type": "SourceTree.Host.Atlassianaccount.AtlassianAccountHost, SourceTree.Host.AtlassianAccount",
        "Id": "atlassian account"
      },
      "BaseUrl": "https://id.atlassian.com/"
    },
    "Credentials": {
      "$id": "4",
      "$type": "SourceTree.Model.BasicAuthCredentials, SourceTree.Api.Account",
      "Username": "username@email.com"
    },
    "IsDefault": false
  }
]
  1. 重新启动软件,顺利进入界面,如图:

基础使用

拉取代码

以下是从 gitlab 上拉取下代码的示例

  1. 下载并安装 git。
  2. 运行 git 命令行,输入 ssh-keygen -t rsa,生成秘钥。

  1. 在 git 服务器上绑定本机的 git 公钥。绑定操作:【Settings】->【SSH Keys】->【Add key】(打开本地公钥文件粘贴里面所有内容)

  1. 利用 sourcetree 拉取代码。点击"工具 -> 选项 -> 一般",注意以下4个部分的设置。

  1. 点击确定按钮之后,点击"文件->克隆/新建",打开克隆 tab。

  • 源路径:拉取项目的 git 路径
  • 目标路径:要存放该项目的本地资源路径
  • 名字:为项目名字,一般会自动获取填充。

点击克隆按钮,项目开始拉取到本地。等待项目拉取完毕后,即可在本地开发。

上传代码

项目克隆完成之后,一般默认拉取的是 master 分支上的代码,由于 master 分支是主分支,项目多人开发的情况下,很容易造成冲突。所以一般会在 gitlab 远程新建一个开发的分支,如命名为:dev。

  1. 新建远程开发分支并在 sourcetree 中切换到该分支。双击 origin -> dev,就可以切换到 dev 开发分支。

  1. 切换到文件状态,暂存需要提交的代码,写好描述,点击“拉取”选项(相当 svn 的 update 操作)更新代码并点击提交。
  2. 点击“推送”选项,选择正确的本地和远程分支,确定推送(相当于 svn 的 commit 操作)。
  3. 等待项目管理员将 dev 分支代码合并到 master 分支,完成从开发到上传。

分支管理和使用

点击“分支”选项,切换到“新分支”选项。

  1. 可以在当前的版本下创建分支
  2. 选择指定的提交创建分支
  3. 点击“创建分支”

定位到需要提交的分支上,点击“推送”选项,选择正确的分支,确定后完成推送,将分支提交到服务器。

其他主要功能

配置忽略文件

利用 .gitignore 过滤文件,如编译过程中的中间文件等等,这些文件不需要被追踪管理。正常情况下,管理员创建项目后需要直接将忽略文件创建好。使用 sourcetree 添加忽略文件的方法以下:

忽略文件中有忽略文件夹和单个文件,如图:

冲突提示信息

“提交前,先更新”提交信息

先拉取后推送

如果推送时,拉取右上方显示数字,则需要先拉取再推送。

使用变基(Rebase)实现将 Bench A 多个提交合并到 Bench B 一个提交

  1. 启动 SourceTree 应用程序。
  2. 在 SourceTree 中,找到并检出(Checkout)分支A。(预先准备用于测试的3个提交)

  1. 使用交互式变基(Interactive Rebase):右键点击分支 A,选择需要合并的记录(到最后一个),“变基(Rebase)...”或者使用快捷键 Ctrl+Shift+B,然后选择“交互式变基(Interactive Rebase)”。

  1. 选择提交进行合并:在交互式变基界面中,将看到分支 A 的所有提交。选择想要合并的提交,除了第一个提交外,其他提交的 pick 应该改为 squash

  1. 编辑提交信息:完成选择后,SourceTree 可能会提示编辑提交信息,在这里可以输入一个合适的提交信息。
  2. 完成变基:保存并关闭提交信息编辑器,完成变基操作。

  1. 在 SourceTree 中,检出(Checkout)分支B。
  2. 合并变基后的分支 A:右键点击分支 B,选择“合并(Merge)...”,然后选择变基后的分支A进行合并。

  1. 如果在合并过程中出现冲突,SourceTree 会提示解决冲突。解决完冲突后,提交合并。
  2. 合并完成后,可能需要将更改推送到远程分支。右键点击分支B,选择“推送(Push)”。

  1. 最终代码推送后的效果

参考资料

Git 客户端 SourceTree 使用教程参考:

TortoiseGit

TortoiseGit 网址:https://tortoisegit.org/

windows 版本安装

安装步骤

使用版本:TortoiseGit-2.6.0.0-64bit.msi

配置语言包:

由于目前只有英文语言包,默认即可继续下一步,配置目录。

配置开发者姓名及邮箱,每次提交代码时都会把此信息包含到提交的信息中。Email随便填写即可

选择 OpenSSH 协议,点击“完成”按钮完成配置。

完整完毕后在系统右键菜单中会出现 git 的菜单项。

安装中文语言包

安装中文语言包并不是必选项,可以根据个人情况来选择安装。安装包:TortoiseGit-LanguagePack-x.x.x.x-64bit-zh_CN.msi

直接“下一步”完整完毕。鼠标右键选择 Settings

语言包安装完毕后可以在 TortoiseGit 的设置中调整语言

创建 Git 本地仓库

使用 TortoiseGit 时只需要在目录中点击右键菜单选择“在这里创建版本库”

版本库创建成功,会在此目录下创建一个 .git 的隐藏目录,如下所示:

添加文件

在 D:\git_repo 目录下创建一个 test.txt 文件

Tips: 安装完客户端后,需要重启电脑才可以看到相应的图标

成功添加后,文本文件变为带『+』号的图标:

提交文件

在 mytest.txt 上再次点击右键选择“提交”,此时将文件保存至版本库中。

修改文件

提交修改

被版本库管理的文件不可避免的要发生修改,此时只需要直接对文件修改即可。修改完毕后需要将文件的修改提交到版本库。

修改后的 test.txt(修改后图标变成红色感叹号)文件上点击右键,然后选择“提交”,和之前的提交方式一样。

查看修改日志

在开发过程中可能会经常查看代码的修改历史,或者叫做查看代码的修改日志。用来查看某个版本是谁修改的,什么时间修改的,修改了哪些内容。可以在文件上点击右键选择“显示日志”来查看文件的修改历史。

比较差异

当文件内容修改后,需要和修改之前对比一下修改了哪些内容此时可以使用“比较差异功能”

与当前版本比较差异

与上一个版本比较差异

还原修改

当文件修改后不想把修改的内容提交,还想还原到未修改之前的状态。此时可以使用“还原”功能。

Notes: 此操作会撤销所有未提交的修改,所以当做还原操作是需要慎重!!!

检查已修改

当项目提交之前先检查哪些文件发生了改变,再比较差异,决定是否提交。

重命名文件

右键文件选择『更名...』

修改完成后提交

删除文件

需要删除无用的文件时可以使用 git 提供的删除功能直接将文件从版本库中删除。

  • 删除:git 版本库与工作区本地副本一起删除。
  • 删除并保留本地副本:只删除 git 版本库中的文件,保留工作区本地副本

Tips: 删除文件以后,需要再次提交

Java工程提交到版本库

  • 第一步:创建 java 工程后,复制到工作目录中

  • 第二步:忽略不需要的文件或文件夹。在此工程中,并不是所有文件都需要保存到版本库中的例如 eclipse 的相关配置 .settings 目录及目录下的文件就可以忽略。
    • 方式一:在 Git 工作区的根目录下创建一个特殊的 .gitignore 文件,然后把要忽略的文件名填进去,Git 就会自动忽略这些文件。
    • 方式二:如果使用 TortoiseGit 的话可以使用菜单项直接进行忽略。

按上面步骤再把 bin、.classpath、.project 都添加到忽略列表中。完成后在此文件夹内会多出一个 .gitignore 文件,这个文件就是忽略文件,当然也可以手工编辑。其中的内容就是把 bin 目录忽略掉。

  • 第三步:将工程添加到暂存区

  • 第四步:提交代码。将代码添加到 master 分支上,其中 .gitignore 文件也需要添加到暂存区,然后提交到版本库。

导出指定版本

第一步:显示所有版本日志信息

第二步:选中指定版本

第三步:导出指定版本为zip文件

还原文件到指定版本

第一步:选中指定版本号与需要还原的文件

第二步:还原选中的文件即可

Github 远程仓库操作

同步 Github 仓库

第一步:查看网络中的SSH客户端:ssh.exe

第二步:添加远端

  • URL:远程仓库的地址
  • 推送 URL:也是相同的
  • Putty 密钥:选择刚才生成的密钥中的私钥(可以不选择)

第三步:同步,在本地仓库的文件夹中单击右键,选择“Git同步”

克隆 Github 仓库

在任意目录点击右键:

拉取 Github 代码

使用 TortoiseGit 可以从右键菜单中点击【拉取】(pull)或者【获取】(fetch)

分支管理

在每次的提交,Git 都把它们串成一条时间线,这条时间线就是一个分支。截止到目前,只有一条时间线,在 Git 里,这个分支叫主分支,即 master 分支。HEAD 指针用来指向目前操作的 master 分支,master 分支才是提交的。

创建分支

在本地仓库文件夹中点击右键,然后从菜单中选择“创建分支”:

切换分支

如果想创建完毕后直接切换到新分支可以勾选“切换到新分支”选项或者从菜单中选择“切换/检出”来切换分支:

分支切换到 dev 后就可以对工作区的文件进行修改,然后提交到 dev 分支,原来的 master 分支不受影响。例如修改 Hello.java 中的内容,然后提交到 dev 分支。

切换到 master 分支后还是原来的内容:

合并分支

将 dev 分支合并到 master 分支,需先切换到 master 分支。再从右键菜单中选择合并。

再查看 Hello.java 类的内容就已经更新了:

解决冲突

两个分支中编辑的内容都是相互独立互不干扰的,那么如果在两个分支中都对同一个文件进行编辑,然后再合并,就有可能会出现冲突。

例如在 master 分支中对 Hello.java 进行编辑:

两个分支中编辑的内容都是相互独立互不干扰的,那么如果在两个分支中都对同一个文件进行编辑,然后再合并,就有可能会出现冲突。

例如在master分支中对Hello.java进行编辑:

然后提交到版本库。最后进行分支合并,将 dev 分支合并到 master 分支。需要先切换到 master 分支然后进行分支合并。

此时出现版本冲突。

冲突需要手动解决,如下图解决完毕:

在冲突文件上单机右键选择“解决冲突”菜单项:

把冲突解决完毕的文件提交到版本库就可以。

Eclipse 集成 Git 客户端

安装 egit 插件

说明:若 Eclipse 版本自带此 egit 插件,则无须安装。

提交代码到本地仓库

项目加入忽略文件

加入检入时需要忽略的文件 .gitignore,文件内容如下:

.classpath
.project
.settings
target
bin

分享项目选择使用Git

将项目移到工作目录

第一步:创建新的本地仓库

第二步:将工程移到工作目录

提交代码到暂存区

第一步:切换到 java 视图

第二步:添加代码到 git 暂存区

Commit 提交代码

push 分支代码到远程仓库

Notes: 当需要选择不同分支同步代码到远程仓库时使用。一般第一次同步代码用得比较多。

设置 git 服务器地址:

push 同步代码到远程仓库

pull 更新代码到本地仓库

注意:Commit 提交的作用是把代码提交到本地。Push 的作用是把本地的代码提交到远程的 git 服务器。

clone 克隆远程仓库到本地

第一步:进入 git 仓库界面

第二步:填写远程仓库Location、Connection、Authentication信息

第三步:分支选择

第四步:设置本地仓库信息

导入项目到 Eclipse

填写项目名称:

转换成对应的 Eclipse 项目

协同开发

开启两个 Eclipse,模拟两个程序员同步代码与更新代码。

解决冲突

第一步:两个程序员修改了同一个文件中的同一行代码,提交时

第二步:选择 pull 更新代码到本地仓库

第三步:处理冲突

把解决冲突后的代码先执行 Add to Index

处理完成后,先 Commit 到本地仓库,再 Push 到远程仓库。

I know where dry desert ends, green grass grows · MooN