Wie öffnen Sie SourceTree über die Befehlszeile?

80

Gibt es eine schnelle und einfache Möglichkeit, ein Git-Repository in SourceTree über die Befehlszeile zu öffnen?

Ich mache viel Git-Arbeit vom Terminal aus, aber manchmal gibt es keinen Ersatz für eine gute Verlaufsansicht / Diff. Würde gerne ohne Lesezeichen öffnen können.

loeschg
quelle

Antworten:

108

Wenn Sie die SourceTree-Befehlszeilentools installieren, erhalten Sie den streeBefehl. Auf diese Weise können Sie das aktuelle Verzeichnis in SourceTree öffnen.

Sourcetree-Befehlszeilentools

Sie können auch einen bestimmten Pfad zu einem Repo angeben

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

Wenn die Installation von Befehlszeilentools aus irgendeinem Grund nicht möglich ist, können Sie auch Folgendes tun:

open -a SourceTree path-to-file

und vielleicht einen Alias ​​in .bashrc oder .zshrc einrichten

alias sourcetree='open -a SourceTree'

Für diejenigen, die SourceTree 3 verwenden

alias sourcetree='open -a SourceTree\ 3'
loeschg
quelle
9
Sie können Ihren Quellbaum-Alias ​​dazu bringen, das Git-Repository im aktuellen Arbeitsverzeichnis zu öffnen, indem Sie es in ändern alias sourcetree='open -a SourceTree ./'. Auch Mac-Benutzer möchten möglicherweise den Alias ​​in.bash_profile
Leigh McCulloch
37

Die Antwort von loeschg funktioniert möglicherweise nicht. Einige Benutzer erhalten eine Fehlermeldung in Bezug auf ihre Systemprotokolle und können die Befehlszeilentools nicht installieren. Hierzu gibt es ein offenes Thema.

Eine Problemumgehung finden Sie hier. Verwenden:

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

Dadurch wird eine symbolische Verknüpfung zur streeBinärdatei erstellt und eingefügt /usr/local/bin. Stellen Sie sicher , dass Verzeichnis auf Ihrem Weg ist: which streesollte zur Folge /usr/local/bin/stree. Wenn dies nicht der Fall ist, fügen Sie es PATHmanuell zu Ihrem hinzu oder verwenden Sie es echo export PATH='/usr/local/bin:$PATH' >> ~/.bash_profile, was dies für Sie erledigt (starten Sie Ihre Shell neu, um die PATHVariable neu zu laden ).

Auf der Seite des oben genannten Problems wurde eine weitere Problemumgehung veröffentlicht, die ich nicht getestet habe : alias stree='/Applications/SourceTree.app/Contents/Resources/stree'. Wenn Sie es verwenden, geben Sie in den Kommentaren an, ob und wie es funktioniert und warum Sie es dem symbolischen Link vorziehen.

Bei beiden Methoden muss der Pfad zu streein SourceTree.appnatürlich mit dem Speicherort übereinstimmen, an dem Sie installiert haben SourceTree.app.

Jetzt streeist installiert und kann von jedem Verzeichnis aus aufgerufen werden. Der kürzeste Weg, um SourceTree zu öffnen, wenn das Arbeitsverzeichnis Ihrer Shell das Stammverzeichnis eines Repositorys ist, ist stree ..

Erik
quelle
Ich bevorzuge die aliasMethode, weil sie sich weniger "permanent" und "portabler" anfühlt als das Erstellen eines symbolischen Links in einem Verzeichnis, das bereits relativ voll ist und sich für mich automatisch verwaltet anfühlt. Homebrew verknüpft dort gerne Inhalte aus seinem Keller. Außerdem hat SourceTree kürzlich Änderungen an der Benutzeroberfläche vorgenommen, die ich nicht schätze. Daher habe ich begonnen, für alle Fälle mehrere Versionen davon beizubehalten. Die Verwendung von Alias ​​(s) gibt mir mehr Flexibilität hinsichtlich der Version, auf die ich in Bash abzielen möchte.
Illya Moskvin
1
Ich habe auch diesen Fehler bekommen. Was bei mir funktioniert hat: Aktualisieren Sie einfach SourceTree auf v3.0.1 (Sourcetree -> Nach Updates suchen ...). Nach der Aktualisierung funktionierte die Installation der Befehlszeilentools einwandfrei. : D (mein Sourcetree war noch auf v2.7.6, als ich den Fehler bekam)
Buju
9

Unter Windows können Sie eine Batchdatei mit dem Namen stree.bateines Ordners in Ihrer PATH-Umgebungsvariablen hinzufügen . (Ich habe einen C:\batchOrdner in meinem PFAD, in dem ich alle meine Dienstprogramm-Batchdateien speichere.) Fügen Sie Folgendes in Ihre Batchdatei ein:

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

Jetzt können Sie zu jedem Git- oder Mercurial-Repository gehen und diesen Befehl ausführen, der das Repository in SourceTree öffnet.

Sumner Evans
quelle
3
Zu Ihrer Information: Auf meinem Computer ist der Quellbaum NICHT in Programmdateien installiert, sondern in C: \ Benutzer \ <Benutzer> \ AppData \ Local \ SourceTree. Wahrscheinlich, weil sie jetzt das Squirrel-Installationsprogramm verwenden?
Kevin Berridge
5

Eine weitere Windows-Lösung für diejenigen, die Git in der Bash-Befehlszeile (msys) verwenden.

Fügen Sie Ihrem Bash-Profil zwei Funktionen hinzu:

# 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
}

Laden Sie Ihre Shell neu.

Jetzt können Sie verwenden:

$ towinpath /c/Temp

Und es wird widerhallen c:\Temp.

Oder Sie können SourceTree öffnen:

$ stree .

Dieses Repository wird in SourceTree geöffnet, standardmäßig im Statusfenster.

Greg Burghardt
quelle
Super, danke! Es gibt auch eine Cygwin-Funktion, cygpathmit der Sie etwas Ähnliches tun können function towinpath { cygpath -w $(cd $1 && pwd); }. Dadurch werden Dinge wie UNC-Pfade robuster behandelt.
eacousineau
2

Wenn Sie Cygwin installiert haben, können Sie dies als Ihr verwenden stree.bat. Diese Batchdatei wird verwendet cygpath, um .in ihren absoluten Pfad aufzulösen , damit Sie dies tun könnenstree .

@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
quelle
-1

Windows

Mit diesen Skripten können Sie SourceTree über die Befehlszeile ausführen (getestet unter SourceTree 3.0.1.7 / Windows 10).

Skripte in einem PATH-Verzeichnis

Ich habe beide Skripte in einem Ordner abgelegt, der sich in meinem Systempfad befindet. Sie müssen Ihr Bash-Profil für dieses Skript nicht ändern.

Git Bash für Windows

Erstellen Sie eine Datei mit dem Namen stree( touch stree) in Ihrem mit PATH verknüpften Verzeichnis und führen Sie chmod u+x streediese Datei aus.

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

Sie können "log" in der letzten Zeile durch "status" ersetzen, wenn Sie die Ansicht "Änderungen / Arbeitsverzeichnis" Ihres Repositorys in SourceTree bevorzugen.

Eingabeaufforderung oder Powershell

Erstellen Sie eine Datei mit dem Namen " stree.cmdPATH".

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

Beachten Sie, dass das Verzeichnis dadurch nicht als Repository geöffnet wird.

Bitte zögern Sie nicht, die Skripte zu verbessern, insbesondere das für die Eingabeaufforderung.

Dheeraj Chakilam
quelle