如何从命令行打开SourceTree?


80

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

我在Terminal上做了很多git工作,但有时无法替代良好的历史记录视图/差异。希望能够不使用书签而打开。

Answers:


108

安装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'

9
您可以将sourcetree别名更改为,以打开当前工作目录中的git存储库alias sourcetree='open -a SourceTree ./'。另外,Mac用户可能希望将别名放入.bash_profile
Leigh McCulloch

37

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(重新启动外壳程序以重新加载PATH变量)。

在上述问题的页面上,发布了另一个我未测试的解决方法:alias stree='/Applications/SourceTree.app/Contents/Resources/stree'。如果您使用它,请在注释中报告它是否起作用以及如何起作用,以及为什么您不希望它使用符号链接。

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

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


我喜欢这种alias方法,因为它比在一个已经相对完整的目录中创建符号链接感觉更少的“永久”和“便携”,并且感觉好像它是由我自动管理的– Homebrew喜欢从那里的酒窖中进行符号链接。另外,SourceTree最近一直在对其UI进行更改,这是我不满意的,因此,为了以防万一,我已经开始保留它的多个版本。使用别名使我可以更灵活地选择bash中的目标版本。
Illya Moskvin

1
我也收到此错误。对我有用的是:只需将SourceTree更新到v3.0.1(Sourcetree->检查更新...)。更新后,安装命令行工具即可正常工作。:D(当我收到错误消息时,我的Sourcetree仍在v2.7.6上)
Buju

9

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

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

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


3
仅供参考:在我的计算机上,源树未安装在Program Files中,而是在C:\ Users \ <用户> \ AppData \ Local \ SourceTree中安装。可能是因为他们现在正在使用Squirrel安装程序?
凯文·贝里奇

5

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

在您的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中打开此存储库,默认为“状态”面板。


太好了,谢谢!还有一个Cygwin函数,cygpath您可以在其中执行与相似的操作function towinpath { cygpath -w $(cd $1 && pwd); }。这将更强大地处理诸如UNC路径之类的事情。
eacousineau '16

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%"

-1

视窗

这些脚本适用于Windows,适用于Windows,这些脚本将使您能够从命令行运行SourceTree(在SourceTree 3.0.1.7/Windows 10上进行了测试)。

PATH目录中的脚本

我将这两个脚本都放置在系统PATH的文件夹中。您无需为此脚本修改bash配置文件。

Windows版Git Bash

在PATH链接目录中创建一个名为streetouch stree)的文件,然后chmod 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中存储库的更改/工作目录视图,则可以用“状态”替换最后一行中的“日志”。

命令提示符或Powershell

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

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

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

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.