Как открыть SourceTree из командной строки?

82

Есть ли быстрый и простой способ открыть репозиторий git в SourceTree из командной строки?

Я много работаю с git из Терминала, но иногда нет замены хорошему просмотру истории / различию. Хотелось бы иметь возможность открывать без использования закладок.

Loeschg
источник

Ответы:

110

Установка инструментов командной строки 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'
Loeschg
источник
9
Вы можете сделать так, чтобы псевдоним исходного дерева открывал репозиторий 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он установлен, и к нему можно получить доступ из любого каталога. Самый короткий способ открыть SourceTree, когда рабочий каталог вашей оболочки является корневым каталогом репозитория - stree ..

Эрик
источник
Я предпочитаю этот aliasметод, потому что он кажется менее «постоянным» и более «переносимым», чем создание символической ссылки в каталоге, который уже относительно заполнен, и кажется, что он управляется автоматически для меня - Homebrew любит размещать там символические ссылки из своего Cellar. Кроме того, SourceTree в последнее время вносит изменения в свой пользовательский интерфейс, которые мне не нравятся, поэтому я начал хранить несколько его версий, на всякий случай. Использование псевдонимов дает мне большую гибкость в выборе версии, на которую я хочу настроить таргетинг в bash.
Илья Москвин
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 \ <user> \ AppData \ Local \ SourceTree. Вероятно, потому что сейчас они используют установщик Squirrel?
Кевин Берридж
5

Еще одно решение Windows для тех, кто использует Git в командной строке Bash (msys).

Добавьте две функции в свой профиль 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 по умолчанию на панели состояния.

Грег Бургхардт
источник
Отлично, спасибо! Также есть функция Cygwin cygpath, где вы можете сделать что-то похожее на function towinpath { cygpath -w $(cd $1 && pwd); }. Это будет более надежно обрабатывать такие вещи, как пути UNC.
eacousineau
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 для этого скрипта.

Git Bash для Windows

Создайте файл с именем stree( touch stree) в связанном каталоге PATH и запустите 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 &

Вы можете заменить «log» в последней строке на «status», если вы предпочитаете просмотр изменений / рабочего каталога вашего репозитория в SourceTree.

Командная строка или Powershell

Создайте файл с именем stree.cmdв каталоге, связанном с PATH.

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

Обратите внимание, что это фактически не откроет каталог как репозиторий.

Не стесняйтесь улучшать скрипты, особенно скрипт для командной строки.

Дирадж Чакилам
источник