Jak otworzyć SourceTree z wiersza poleceń?

82

Czy istnieje szybki i łatwy sposób na otwarcie repozytorium git w SourceTree z wiersza poleceń?

Wykonuję dużo pracy z gitem w Terminalu, ale czasami nie ma zamiennika dla dobrego widoku / porównania historii. Chciałbym móc otwierać bez użycia zakładek.

loeschg
źródło

Odpowiedzi:

110

Zainstalowanie narzędzi wiersza poleceń SourceTree zapewni ci streepolecenie. Umożliwi to otwarcie bieżącego katalogu w SourceTree.

sourcetree narzędzia wiersza poleceń

Możesz także określić konkretną ścieżkę do repozytorium

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

Jeśli z jakiegoś powodu nie można zainstalować narzędzi wiersza polecenia, możesz również wykonać następujące czynności:

open -a SourceTree path-to-file

i może skonfiguruj alias w .bashrc lub .zshrc

alias sourcetree='open -a SourceTree'

Dla tych, którzy używają SourceTree 3

alias sourcetree='open -a SourceTree\ 3'
loeschg
źródło
9
Możesz sprawić, by alias drzewa źródłowego otwierał repozytorium git znajdujące się w bieżącym katalogu roboczym, zmieniając je na alias sourcetree='open -a SourceTree ./'. Również użytkownicy komputerów Mac mogą chcieć umieścić alias w.bash_profile
Leigh McCulloch
37

Odpowiedź loeschga może nie działać; niektórzy ludzie otrzymują błąd odnoszący się do ich dzienników systemowych i nie mogą zainstalować narzędzi wiersza poleceń. Jest to otwarta kwestia.

Tutaj można znaleźć obejście. Posługiwać się:

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

Spowoduje to utworzenie dowiązania symbolicznego do pliku streebinarnego i wstawienie go /usr/local/bin. Upewnij się, że katalog znajduje się na twojej ścieżce: which streepowinien skutkować /usr/local/bin/stree. Jeśli tak się nie stanie, dodaj go PATHręcznie lub użyj echo export PATH='/usr/local/bin:$PATH' >> ~/.bash_profile, co zrobi to za Ciebie (zrestartuj powłokę, aby ponownie załadować PATHzmienną).

Na stronie wyżej wymienionych zagadnień, w innym obejście, że nie testowałem została wysłana: alias stree='/Applications/SourceTree.app/Contents/Resources/stree'. Jeśli go używasz, zgłoś w komentarzach, czy i jak to działa i dlaczego wolisz, aby było to zamiast łącza symbolicznego.

W przypadku obu metod ścieżka do streein SourceTree.appmusi oczywiście odpowiadać lokalizacji, w której zainstalowano SourceTree.app.

Teraz streejest zainstalowany i można uzyskać do niego dostęp z dowolnego katalogu. Najkrótszym sposobem otwarcia SourceTree, gdy katalog roboczy powłoki jest katalogiem głównym repozytorium, jest stree ..

Erik
źródło
Wolę tę aliasmetodę, ponieważ wydaje mi się, że jest ona mniej „trwała” i bardziej „przenośna” niż tworzenie dowiązania symbolicznego w katalogu, który jest już stosunkowo pełny i wydaje mi się, że jest zarządzany automatycznie - Homebrew lubi tworzyć dowiązania symboliczne ze swojej piwnicy. Ponadto SourceTree wprowadził ostatnio zmiany w swoim interfejsie użytkownika, których nie doceniam, więc zacząłem przechowywać wiele wersji tego oprogramowania, na wszelki wypadek. Używanie aliasów daje mi większą elastyczność co do wersji, na którą chcę kierować reklamy w bashu.
Illya Moskvin
1
Otrzymałem również ten błąd. Co mi zadziałało: po prostu zaktualizuj SourceTree do wersji 3.0.1 (Sourcetree -> Sprawdź aktualizacje ...). Po zaktualizowaniu Instalowanie narzędzi wiersza poleceń działało poprawnie. : D (moje Sourcetree było nadal w wersji 2.7.6, kiedy pojawił się błąd)
Buju
9

Użytkownicy systemu Windows mogą dodać plik wsadowy o nazwie stree.batdo folderu w zmiennej środowiskowej PATH. (Mam C:\batchfolder, który jest w mojej ŚCIEŻCE, w którym przechowuję wszystkie moje pliki wsadowe narzędzi). Umieść następujące dane w pliku wsadowym:

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

Teraz możesz przejść do dowolnego repozytorium Git lub Mercurial i uruchomić to polecenie, które otworzy repozytorium w SourceTree.

Sumner Evans
źródło
3
Do Twojej wiadomości: na moim komputerze źródłowym drzewo NIE jest zainstalowane w Program Files, znajduje się w C: \ Users \ <user> \ AppData \ Local \ SourceTree. Prawdopodobnie dlatego, że używają teraz instalatora Squirrel?
Kevin Berridge,
5

Kolejne rozwiązanie Windows dla tych, którzy używają Gita w linii poleceń Bash (msys).

Dodaj dwie funkcje do swojego 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
}

Załaduj ponownie swoją muszlę.

Teraz możesz użyć:

$ towinpath /c/Temp

I odbije się echem c:\Temp.

Lub możesz otworzyć SourceTree:

$ stree .

I otworzy to repozytorium w SourceTree domyślnie na panelu Status.

Greg Burghardt
źródło
Wielkie dzieki! Jest też funkcja Cygwin cygpath, w której możesz zrobić coś podobnego function towinpath { cygpath -w $(cd $1 && pwd); }. Pozwoli to lepiej obsługiwać takie rzeczy, jak ścieżki UNC.
eacousineau
2

Jeśli masz zainstalowanego cygwin, możesz użyć tego jako swojego stree.bat. Ten plik wsadowy używa cygpathdo rozwiązywania .do jego ścieżki bezwzględnej, więc możesz to zrobić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%"
Yan Sern
źródło
-1

Windows

Dostosowując się z wielu odpowiedzi tutaj dla Windows, te skrypty pozwolą ci uruchomić SourceTree z wiersza poleceń (testowane na SourceTree 3.0.1.7 / Windows 10).

Skrypty w katalogu PATH

Umieściłem oba te skrypty w folderze, który jest w moim systemie PATH. Nie będziesz musiał modyfikować swojego profilu bash dla tego skryptu.

Git Bash dla Windows

Utwórz plik o nazwie stree( touch stree) w połączonym katalogu PATH i uruchom chmod u+x streena tym pliku.

#!/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 &

Możesz zamienić „log” w ostatniej linii na „status”, jeśli wolisz widok zmian / katalogu roboczego repozytorium w SourceTree.

Wiersz polecenia lub Powershell

Utwórz plik o nazwie stree.cmdw połączonym katalogu PATH.

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

Zauważ, że to faktycznie nie otworzy katalogu jako repozytorium.

Zachęcamy do ulepszania skryptów, zwłaszcza dla wiersza polecenia.

Dheeraj Chakilam
źródło