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 的分支即可。

仓库设置-用户信息无法修改或提交时报 xxx.lock 错误

找到当前仓库的 .git 目录,删除所有带 .lock 后缀的文件,重新操作即可。

跳过 commit hooks

commit 时加上 --no-verify 或者使用 SourceTree 进行如下操作

回退版本教程

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

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

bulb