90

有没有一种快速简便的方法可以从命令行在 SourceTree 中打开 git 存储库?

我从终端做了很多 git 工作,但有时无法替代良好的历史视图/差异。希望能够在不使用书签的情况下打开。

4

7 回答 7

129

安装 SourceTree 命令行工具将为您提供stree命令。这将允许您在 SourceTree 中打开当前目录。

sourcetree 命令行工具

您还可以指定存储库的特定路径

stree ~/my-repo-in-another-folder

如果由于某种原因无法安装命令行工具,您还可以执行以下操作:

open -a SourceTree path-to-file

并且可能在 .bashrc 或 .zshrc 中设置别名

alias sourcetree='open -a SourceTree'

对于那些使用 SourceTree 3 的人

alias sourcetree='open -a SourceTree\ 3'
于 2013-10-29T15:54:22.787 回答
41

loeschg 的答案可能行不通;有些人在参考他们的系统日志时遇到错误,并且无法安装命令行工具。关于这个有一个未解决的问题。

在此处找到解决方法。利用:

ln -s /Applications/SourceTree.app/Contents/Resources/stree /usr/local/bin/

这将创建一个指向stree二进制文件的符号链接并将其放入/usr/local/bin. 确保该目录在您的路径上:which stree应该导致/usr/local/bin/stree. 如果没有,则将其添加到您的PATH手动或使用echo export PATH='/usr/local/bin:$PATH' >> ~/.bash_profile中,它会为您执行此操作(重新启动 shell 以重新加载PATH变量)。

在上述问题的页面上,发布了另一个我没有测试的解决方法:alias stree='/Applications/SourceTree.app/Contents/Resources/stree'. 如果您使用它,请在评论中报告它是否以及如何工作以及为什么您更喜欢它而不是符号链接。

对于这两种方法,streein的路径SourceTree.app当然必须与您安装的位置相匹配SourceTree.app

现在,stree已安装并且可以从任何目录访问。当 shell 的工作目录是存储库的根目录时,打开 SourceTree 的最短方法是stree ..

于 2017-05-08T07:18:12.963 回答
9

对于那些使用 Windows 的人,您可以stree.bat在 PATH 环境变量中的文件夹中添加一个名为的批处理文件。(我的C:\batchPATH 中有一个文件夹,用于存储所有实用程序批处理文件。)将以下内容放入批处理文件中:

@echo off
start "" "C:\Program Files (x86)\Atlassian\SourceTree\SourceTree.exe"

现在您可以转到任何 Git 或 Mercurial 存储库并运行此命令,这将在 SourceTree 中打开存储库。

于 2015-03-27T22:01:09.843 回答
5

另一个 Windows 解决方案,适用于在 Bash 命令行 (msys) 上使用 Git 的用户。

向 Bash .profile 添加两个函数:

# Courtesy: http://stackoverflow.com/questions/12015348/msys-path-conversion-or-cygpath-for-msys
function towinpath {
    { cd $1 && pwd -W; } | sed 's|/|\\|g'
}

function stree {
    if [ -z $1 ]; then
        stree_path=$(towinpath pwd)
    else
        stree_path=$(towinpath $1)
    fi

    echo "Starting SourceTree in $stree_path"

    /c/Program\ Files\ \(x86\)/Atlassian/SourceTree/SourceTree.exe -f $stree_path status
}

重新加载你的外壳。

现在您可以使用:

$ towinpath /c/Temp

它会回声c:\Temp

或者你可以打开 SourceTree:

$ stree .

它将在 SourceTree 中打开此存储库,默认为状态面板。

于 2016-05-12T14:00:03.577 回答
2

如果您安装了 cygwin,则可以将其用作stree.bat. 此批处理文件用于cygpath解析.其绝对路径,因此您可以这样做stree .

@echo off
FOR /F "tokens=* USEBACKQ" %%F IN (`cygpath -w -a %1`) DO (
SET STREE_OPEN_PATH=%%F
)
%USERPROFILE%\AppData\Local\SourceTree\SourceTree.exe -f "%STREE_OPEN_PATH%"
于 2018-06-06T19:59:26.993 回答
0

Windows使用powershell时,从要在其中打开的目录内部SourceTree

& 'C:\Users\userexample\AppData\Local\SourceTree\SourceTree.exe' -f (Get-Location)

注意:路径C:\Users\userexample\AppData\Local\SourceTree\SourceTree.exe可以更改SourceTree为安装的任何内容,

对于 Exp:如果 SourceTree 以管理员权限安装,则此路径将是C:\Program Files (x86)\Atlassian\SourceTree\SourceTree.exe并且命令将变为

& 'C:\Program Files (x86)\Atlassian\SourceTree\SourceTree.exe' -f (Get-Location)
于 2021-11-25T15:41:40.603 回答
-1

视窗

根据此处针对 Windows 的多个答案进行调整,这些脚本将允许您从命令行运行 SourceTree(在 SourceTree 3.0.1.7 / Windows 10 上测试)。

PATH 目录中的脚本

我已将这两个脚本放在我的系统 PATH 中的一个文件夹中。您不必为此脚本修改 bash 配置文件。

适用于 Windows 的 Git Bash

在您的 PATH 链接目录中创建一个名为stree( ) 的文件并在此文件上运行。touch streechmod u+x stree

#!/bin/sh

function towinpath {
    { cd $1 && pwd -W; } | sed 's|/|\\|g'
}

if [ -z $1 ]; then
    stree_path=$(towinpath pwd)
else
    stree_path=$(towinpath $1)
fi

$LOCALAPPDATA/SourceTree/SourceTree.exe -f $stree_path log &

如果您更喜欢 SourceTree 中存储库的更改/工作目录视图,可以将最后一行中的“log”替换为“status”。

命令提示符或 Powershell

stree.cmd在 PATH 链接目录中创建一个名为的文件。

@echo off
start "" "%LOCALAPPDATA%\SourceTree\SourceTree.exe"

请注意,这实际上不会将目录打开为存储库。

请随时改进脚本,尤其是用于命令提示符的脚本。

于 2019-02-20T20:16:29.667 回答