2017-08-15 11 views
2

Linuxディストリビューションを実行する共有ホスティングプランでgitを使用しています。共有されているため、sudoにアクセスすることはできません。マシンはすでにが/usr/bin/にインストールされていますが、この時点ではむしろ先史時代です。私はすでにmake installを使って、現在のバージョン2.14.1を入手しました。これは~/git-2.14.1/です。 this answerで詳述したように、私はそうのようなコマンドラインからのgitの正しいバージョンにアクセスすることができます新バージョンでgitショートカットを使用して、古いバージョンを上書き

~/.bash_profile$PATH変数への簡単な変更であった
$ git --version 
git version 2.14.1 

をので、私はちょうど罰金にgitを使用することができます。

私は私が使用するためにはるかに高速にgitを作る私の~/.gitconfigファイル内のショートカットのリストを持っている:

[alias] 
    co = checkout 
    st = status 
    ci = commit 
    ... etc etc etc 

私が起動すると、これらの(例えばgit st)、私はgitの間違ったバージョンから結果を取得します。それは1.7.1に戻ります。完全なコマンド(例えばgit status)を入力すると、gitの正しいバージョンが使用されます。

git() { 
    case "$*" in 
     st*) shift 1; command ~/git-2.14.1/git status "[email protected]" ;; 
     *) shift 1; command ~/git-2.14.1/git "[email protected]" ;; 
    esac 
} 

私はsourceが書いて以来、-edあります

は、私も自分の~./bashrcでこれらのコマンドを持っています。

私も試してみました:

alias git="~/git-2.14.1/git" 

を無駄に。

希望のバージョンのgitでこれらのショートカットを使用できる回避策がありますか?私は別の場所にポインタをリダイレクトすることによって他のバージョンから設定ファイルを隠す方法を想像していますが、私はそのようなポインタの存在を知らない。

また、rootにアクセスしないで、以前のバージョンのgitを完全に無効にする方法はありますか?

答えて

1

これは私が見つけたものです。 .gitconfigのエイリアスセクションを取り出した場合、前述のシェルラッパー関数が機能しました。私がそれを削除してssh接続を再起動しても、(期待どおり)何も働かなかった。

私はgit-addgit-commitgit-status、らのようなツールを見つけるためにgitのを告げる魔法のGIT_EXEC_PATH変数があることが、this answerからの助けを借りて、発見しました。アルは... .gitconfigファイルの私の別名セクションをコメント解除し、

$ export GIT_EXEC_PATH=/path/to/my/new/git's/executables/ 

を使用すると、.gitconfigファイルに別名を使用することが可能となりました。私はにインストールとして私のために働いていたパスが同じフォルダました:としてうまく機能echo $GIT_EXEC_PATH、また

$ git --exec-path 
/path/to/my/new/git's/executables/ 

~/git-2.14.1。あなたは、とGIT_EXEC_PATHの現在の値を確認することができます。 gitはgit <alias>と呼ばれるgitのインスタンスではなくエイリアスを使用していますが、execパス内の実行可能ファイルを介して直接実行します。

注:私にとっては、

$ git --exec-path=/path/to/my... 

は動作しませんでしたが、私が正しく理解していれば、これは同等のコマンドです。

TL; DR:あなたの.bash_profileに新しい実行ファイル(git-addgit-statusなど)へのパスを追加します。

export GIT_EXEC_PATH=/your/path/ 
+1

'GIT_EXEC_PAT'でニースが見つかりました(これについてはhttps://stackoverflow.com/a/43432410/6309で説明しました)。 +1 – VonC

1

これらを呼び出すと(git stなど)、誤ったバージョンのgitから結果が得られます。それは1.7.1に戻ります

これは私のUbuntuセッションでは見られません。

私は(git --versionと同じである)git versionをチェックするために、私はgit vを入力する意味というのが私の.gitconfigに

[alias] 
     st = status 
     br = branch 
     v = !git version 

を持っています。

PATHを新しいコンパイル済みGitに変更すると、別のバージョンが表示されます。

[email protected]:~/gits$ echo $PATH 
/usr/local/bin:/usr/bin:/bin 
[email protected]:~/gits$ which git 
/usr/bin/git 
[email protected]:~/gits$ git v 
git version 2.13.0 

[email protected]:~/gits$ export PATH=~/gits/v2.14.0/bin:$PATH 
[email protected]:~/gits$ git v 
git version 2.14.0 
+0

私は同じ結果を得ることはありません。私は 'v =!git version'を追加しました。'〜/ git-2.14.1/git v'を実行しても、私はまだ 'git version 1.7.1'を取得します。 'export PATH =〜/ git-2.14.1 /:$ PATH'と' export PATH =〜/ git-2.14.1:$ PATH' –

+0

@ M.Davisはい!あなたのパスが同じでないサブシェルを開きます。エイリアスや関数 'git'をどこにも置いていないと確信していますか? – VonC

+0

gitのように見えます。あなたは正しい方向に私を指摘しましたが、ありがとう –

関連する問題