git 如何从命令行打开SourceTree?

lztngnrs  于 2023-01-19  发布在  Git
关注(0)|答案(7)|浏览(227)

有没有一种简单快捷的方法可以从命令行打开SourceTree中的git仓库?
我在Terminal上做了很多git工作,但是有时候没有什么东西可以替代一个好的历史视图/diff。我希望能够不使用书签打开。

gab6jxml

gab6jxml1#

安装SourceTree命令行工具将为您提供stree命令。这将允许您打开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'
gzszwxb4

gzszwxb42#

The answer by loeschg可能不起作用;有些人得到一个错误参考他们的系统日志并且不能安装这命令行工具. There is an open issue about this.
此处提供了一种解决方法。用途:

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'。如果你使用它,请在评论中报告它是否和如何工作,以及为什么你更喜欢它而不是符号链接。
对于这两种方法,SourceTree.appstree的路径当然必须与您安装SourceTree.app的位置匹配。
现在,stree已经安装好了,并且可以从任何目录访问,当shell的工作目录是存储库的根目录时,打开SourceTree的最短方法是stree .

fsi0uk1n

fsi0uk1n3#

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

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

现在你可以进入任何Git或Mercurial仓库并运行这个命令,它将在SourceTree中打开仓库。

dced5bon

dced5bon4#

另一个Windows解决方案,适用于那些在Bash命令行(msys)上使用Git的用户。
在Bash .配置文件中添加两个函数:

# 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中打开这个存储库,默认情况下会显示在Status面板中。

lmyy7pcs

lmyy7pcs5#

如果你已经安装了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%"
6jygbczu

6jygbczu6#

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

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

B:路径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)
vnzz0bqm

vnzz0bqm7#

窗口

根据这里针对Windows的多个答案改编,这些脚本将允许您从命令行运行SourceTree(在SourceTree3.0.1.710上测试)。

PATH目录中的脚本

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

Git Bash for Windows

在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中存储库的更改/工作目录视图,可以将最后一行中的“log”替换为“status”。

命令提示符或Powershell

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

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

注意,这实际上不会将目录作为存储库打开。
请随时改进脚本,特别是命令提示符。

相关问题