コマンドラインからSourceTreeでgitリポジトリを開くための迅速で簡単な方法はありますか?
私はターミナルから多くのgit作業を行いますが、良い履歴ビュー/差分に代わるものがない場合があります。ブックマークを使用せずに開くことができるようにしたいと思います。
回答:
SourceTreeコマンドラインツールをインストールすると、stree
コマンドが提供されます。これにより、SourceTreeで現在のディレクトリを開くことができます。
リポジトリへの特定のパスを指定することもできます
stree ~/my-repo-in-another-folder
なんらかの理由でコマンドラインツールをインストールするオプションがない場合は、次のこともできます。
open -a SourceTree path-to-file
.bashrcまたは.zshrcにエイリアスを設定するかもしれません
alias sourcetree='open -a SourceTree'
SourceTree3を使用している人向け
alias sourcetree='open -a SourceTree\ 3'
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'
。使用する場合は、それが機能するかどうか、どのように機能するか、シンボリックリンクよりも好む理由をコメントで報告してください。
どちらの方法でも、stree
inへのパスSourceTree.app
は、もちろん、インストールした場所と一致している必要がありますSourceTree.app
。
これで、stree
がインストールされ、任意のディレクトリからアクセスできます。シェルの作業ディレクトリがリポジトリのルートディレクトリである場合にSourceTreeを開く最短の方法はstree .
です。
alias
すでに比較的いっぱいになっているディレクトリにシンボリックリンクを作成するよりも「永続的」で「ポータブル」であると感じ、自動的に管理されているように感じるので、この方法が好きです。Homebrewはそこのセラーからのものをシンボリックリンクするのが好きです。さらに、SourceTreeは最近UIに変更を加えていますが、私は気に入らないので、念のために複数のバージョンを保持し始めました。エイリアスを使用すると、bashでターゲットにするバージョンをより柔軟に設定できます。
Windowsを使用している場合はstree.bat
、PATH環境変数のフォルダーに名前を付けたバッチファイルを追加できます。(C:\batch
PATHに、すべてのユーティリティバッチファイルを保存するフォルダーがあります。)バッチファイルに次のファイルを入力します。
@echo off
start "" "C:\Program Files (x86)\Atlassian\SourceTree\SourceTree.exe"
これで、GitまたはMercurialリポジトリに移動してこのコマンドを実行すると、SourceTreeでリポジトリが開きます。
Bashコマンドライン(msys)でGitを使用するユーザー向けのもう1つのWindowsソリューション。
Bash.profileに2つの関数を追加します。
# 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でこのリポジトリを開きます。
cygpath
ここで、に似た何かを行うことができますfunction towinpath { cygpath -w $(cd $1 && pwd); }
。これにより、UNCパスなどをより堅牢に処理できます。
ここでのWindowsの複数の回答から適応して、これらのスクリプトを使用すると、コマンドラインからSourceTreeを実行できます(SourceTree 3.0.1.7 / Windows 10でテスト済み)。
これらのスクリプトは両方とも、システムPATHにあるフォルダーに配置しました。このスクリプトのbashプロファイルを変更する必要はありません。
PATHリンクディレクトリにstree
(touch 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」に置き換えることができます。
stree.cmd
PATHリンクディレクトリに名前の付いたファイルを作成します。
@echo off
start "" "%LOCALAPPDATA%\SourceTree\SourceTree.exe"
これは実際にはディレクトリをリポジトリとして開かないことに注意してください。
スクリプト、特にコマンドプロンプト用のスクリプトを自由に改善してください。
alias sourcetree='open -a SourceTree ./'
。また、Macユーザーはエイリアスを.bash_profile