0%

GIT标签同步与使用SourceTree配置SSH

本文主要介绍GIT标签同步脚本设置与使用SourceTree更方便的配置SSH
基本配置可以参考之前的Hexo搭建第5节

GIT标签同步

主要步骤

  1. 将 Git 操作脚本建立成 bat 文件
  2. 开启SourceTree,选择Tools→Options
  3. 点选Add,新增一个Custom Action
  4. 输入名称,选择刚刚 bat 文件位置
  5. 选择要带入的参数 $REPO
  6. 点击 Actions → Custom Actions → 选择自定义的操作

详细配置

  • 复制下面的代码写成 .bat 文件

  • 勾选(run command silently)

  • 带入参数$REPO

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    git checkout master

    git fetch --prune origin

    git pull --rebase

    cd %1

    FOR /F %%i in ('git tag -l') DO git tag -d %%i

    git fetch --tags origin

    -----

    cd %1

    echo 'Remove all local tags'

    FOR /F %%i in ('git tag -l') DO git tag -d %%i

    echo 'Fetch tags from origin'

    git fetch --tags origin
  • git 同步原生标签命令 SyncTags 可参考git指令

1
2
git tag | xargs git tag -d
git fetch --tags
  • 清空本地 stash 自定义指令 ClearStashes
1
2
3
4
5
cd %1

echo 'Clear all stashes'

git stash clear
  • 回退上一次提交 ResetPrevCommit 自定义指令
1
2
3
4
5
cd %1

echo 'Reset previous commit'

git reset HEAD~

循环更新子模块

  • 此操作可以递归更新每个子模块,但不一定会 rebase 到子模块的最新 master (可能是 git 的 bug)
  • 勾选(run command silently)
    1
    git submodule update --recursive --remote --rebase

使用SourceTree配置SSH

目的

  • git使用https协议,每次pull, push都要输入密码,相当的麻烦,使用ssh密钥可以省去每次输密码的步骤。
  • 通过 SSH 联机,压缩传输的数据,可以大幅加快联机传输速度。
  • 把所有传输的数据进行加密,有效防止远程管理过程中的信息泄露问题。

设定方法

产生个人的公钥与私钥

使用 SourceTree 内建的软件 PuTTY Key Generator 来产生一对密钥(PuTTY Key Generator在安装SourceTree 时一并安装,此处无需另外安装。)

  • 打开 SourceTree,点击菜单栏中的 Tools ,选取 Create or Import SSH Keys 打开 PuTTY Key Generator。
  • 点击 Generate 按钮
  • 在key方框内随机移动鼠标,直到方框内出现的进度条达到满格状态,此时密钥产生完成。
  • 密钥产生完成后,填写窗口中其他选项。
    • Key comment:批注(密钥产生时自动填充)
    • Key passphrase: 私钥密码,选填项,可不填。
    • Confirm passphrase: 再次输入密码确认
  • 保存,public key 和 private key 都要保存。
    • Save public key: 储存公钥,用于GitHub/Gitee配置。
    • Save private key: 储存私钥,用于本机连接远程仓库。
      • 储存时记得档名要连扩展名 .ppk 一并输入,否则不会有扩展名。

GitHub/Gitee 设定公钥

  • 登入 GitHub/Gitee,进入设置页面。
  • SSH/GPG 密钥切换页面,再点选管理 SSH密钥的增加密钥按钮。
  • 密钥名称可以自定义也可输入PuTTY Key Generator产生的 Key comment对应的内容,密钥内容处贴上产生出来的公钥内容。
  • 增加密钥按钮进行添加,成功后就可以在屏幕上看到新增的密钥。

本机设定私钥

  • 在计算机右下角右击Putty Authentication Agent,选择 View Keys
  • 在 Pagent Key List 窗口中,再点选 Add Key 按钮。
  • 将刚刚产生的私钥添加进来(如果在产生密钥时有输入密码,则此时会要求输入密码。)
  • 添加成功后,会显示刚添加进来的私钥。

使用 SourceTree 通过 SSH 联机 GitHub/Gitee

  • 登入GitHub/Gitee,点开一项目,复制要连接的 GitHub/Gitee 上的仓库的 SSH 位置。
  • 执行 SourceTree,在上方工具栏中点选 Clone。
  • 将刚刚找到的仓库位置粘贴,SourceTree 就会自动进行识别连接。
  • 此时会弹出是否要接受的提示框,选 YES。
  • 连接成功后,点击最下面的 Clone 按钮把文件下载下来,就开始使用啦!

使用OpenSSH

此方法可以解决 SourceTree Terminal 无法使用 SSH 的问题

亦可参考之前的Hexo搭建第5节

建立一对密钥

1
2
3
4
$ ssh-keygen -t rsa -C [这边可以打mail或者空着也行,这里将按照你提供的邮箱地址,创建一对密钥。]
Enter file in which to save the key (~/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:

检查用户目录是否已经产生公钥与私钥

进入.ssh目录查看是否有密钥文件即可

1
~\.ssh

配置

  1. 打开 .pub 公钥文件,将内容导入到 Gitee/Github SSH设置中。
  2. 无 .pub 后缀为私钥文件,保存在本机即可。
  3. 在用户目录建立 config 文件,放入.ssh目录。(可略)

config内容

1
2
3
4
Host github/gitee ip
HostName github domain
IdentityFile ~/.ssh/id_rsa
User pandaoh

确认是否可连接成功,可以输入下面的命令ssh -T git@github.com看看设置是否成功

如果是下面的反馈:

1
2
3
The authenticity of host ‘github.com (207.97.227.239)’ can’t be established.
RSA key fingerprint is 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48.
Are you sure you want to continue connecting (yes/no)?

不要紧张,输入yes就好,然后会显示成功(successful)。

将 Source Tree 改用 OpenSSH 验证

  1. Tools→Options→SSH Client Configuration
  2. 将 SSH Client 改用 OpenSSH 其他不需调整

SourceTree 待办

跳过登录方法

将文件 accounts.json放入 %LocalAppData%\Atlassian\SourceTree\

  • accounts.json 内容
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
[
{
"$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": "",
"Email": null
},
"IsDefault": false
}
]

配置 SSH(参考以上内容)

配置自定义 bat(参考以上内容)

更新版本

设置英文

取消 Pull 时快速合并

开启 Force-Push

配置个人信息与个性化设置

Stash 使用教程

使用另一用户信息提交教程

修改提交信息教程

  修改完成后,Force Push 到远端即可。

合并上一条提交教程

  修改完成后,Force Push 到远端即可。

合并多条 commit

  修改完成后,Force Push 到远端即可。

SourceTree 解决 rebase 冲突(Git)

  • 同理,若 rebase 冲突太多,可以 merge,然后回退上一次版本,重新填写准确的 commit-msg,最后提交所有处理冲突后的文件。
  • 目标分支 rebase 本分支之前,应该先让本分支领先且包含目标分支内容,否则目标分支 rebase 本分支大概率有很多冲突。

push 时远端已经更新冲突解决

fetch 一下本分支远端的更新,将远端已经更新的代码 rebase 到本地需要 push 的分支即可。

跳过 commit hooks

回退版本教程

  修改完成后,Force Push 到远端即可。

以上教程均为 SourceTree 操作,其中修改过去的或者已提交的 commit 信息,原理基本都是修改了本地仓库的信息,再 Force Push 到远程。至于详细命令可参考 Git 教程

bulb