すべてのGitコマンドの開始時にWord git
を入力する必要を回避する方法があるかどうか疑問に思っています。
コマンドプロンプトを開いて "Git mode"になった後、最初にgit
コマンドを1回だけ使用する方法があればいいでしょう。
例えば:
git>
その後、入力するすべてのコマンドはデフォルトでGitコマンドとして解釈されます。
MySQLシェルを使用してデータベースコマンドを記述する方法と同様の方法で:
mysql>
これにより、1日に何百回もgit
を入力する必要がなくなります。
注:私は git-bash
、Windowsの場合。
gitsh を試してみてください。彼らのreadmeから:
gitsh
プログラムは、git用のインタラクティブなシェルです。gitsh
内から、ローカルエイリアスと設定を使用してさえ、任意のgitコマンドを発行できます。
- Gitコマンドはグループ化される傾向があります。専用のgitシェルで実行することにより、
git
を何度も入力しないでください。sh$ gitsh gitsh% status gitsh% add . gitsh% commit -m "Ship it!" gitsh% Push gitsh% ctrl-d sh$
または、そこにリンクされている他のプロジェクトをご覧ください。
注:自分でこれを使用したことはありません。
これを行うPerlのワンライナー:
Perl -nE 'BEGIN {print "git > "} system "git $_"; print "git > "'
これは、git
を前に付けて入力したものを実行します。そして、^D
を押すまでそれを続けます。
これはまさにあなたが求めているものではありませんが、~/.bashrc
最も頻繁に使用するGitコマンドの場合:
alias commit='git commit'
alias checkout='git checkout'
...
また、Git内でエイリアスを作成できることに注意してください。
git config --global alias.ci commit
git config --global alias.co checkout
...
これにより、git ci
の代わりに git commit
、 等々。
私は、GitBashの〜/ .bash_profileでエイリアスを使用することの大ファンです。このアプローチを採用する場合、私のお気に入りのいくつかを以下に示します。
# git
alias gw='git whatchanged'
alias gg='git grep -n -C8'
alias ggi='git grep -i -n -C8'
alias gb='git branch'
alias gbd='git branch -D'
alias gba='git branch -a'
alias gc='git checkout'
alias gcp='git cherry-pick'
alias gfo='git fetch Origin'
alias s='git status'
alias gmom='git merge Origin/master'
alias grom='git rebase Origin/master'
alias gpom='git pull Origin master'
alias pplog='git log --oneline --graph --decorate'
友人がこれを実現する小さなbashスクリプトを作成しました。 Replify と呼ばれます。
$ replify git
Initialized REPL for [git]
git> init
Initialized empty Git repository in /your/directory/here/.git/
git> remote add Origin https://your-url/repo.git
git> checkout -b new-branch
Switched to a new branch 'new-branch'
git> Push
別の方法があります。それはまた、尋ねられたものとはまったく異なりますが、私はしばらくの間それを使用してきました、それはかなりいいです。 ~/.bashrc
に次の行を追加します。
complete -E -W git
空のBashプロンプトでTabを押すと、「git」と入力されます。
私はこれが非常に遅い答えであることを知っていますが、この質問は に対処する 現在、この種の繰り返しに苦しんでいます。
私はあなたについてはわかりませんが、正直に言ってdo n't(私はDO N'T)すべてのgit
コマンドのエイリアスを作成したいので、代わりにpythonというスクリプトを作成しました NoGit と呼ばれるこの問題を解決します:
#!/usr/bin/env python
import sys, os, signal, atexit, readline, subprocess
commands, stop, history_file = [], False, os.path.join(os.getcwd(), "git.history")
def run_commands():
stop = True
for cmd in commands:
command = ["git" if not cmd.startswith("git ") else ""]
command = [cmd] if command[0] == "" else [command[0], cmd]
subprocess.Popen(command).communicate()
commands = []
def signal_handler(sig, frame):
run_commands()
sys.exit(0)
try:
readline.read_history_file(history_file)
signal.signal(signal.SIGINT, signal_handler)
while True:
if stop == True:
break
command = input("git> ")
if command == "%undo":
commands.pop()
Elif command == "%run":
run_commands()
Elif command == "%exit":
sys.exit(0)
else:
commands += [cmd.strip() for cmd in command.split(";")]
signal.pause()
readline.set_history_length(-1)
except IOError:
pass
atexit.register(readline.write_history_file, history_file)
NoGit は、単純なpython "git"キーワードの不必要な繰り返しを防ぐためのスクリプトです。
%undo
コマンドは、スタックから最後のコマンドを削除します%run
コマンドはスタック内のコマンドを実行し、スタックをクリアします%exit
コマンドは何もせずにCLIを閉じますctr+c
を押すことは、%run; %exit
を実行することと同じです。git.history
というファイルに保存しますgit
を使用すると、スクリプトはそれを複製しません(EG:git init
はgit git init
になりませんinit
add .
stage .
commit -m "inital commit"
%run; %exit
必要に応じて、.py
拡張を削除し、次を使用して実行可能ファイルに変換できます。
mv ./git.py ./git
chmod +x ./git
次に、このようなスクリプトを呼び出す代わりに:
python3 git.py
代わりにこれを実行します:
./git
怠け者で./
を入力したくない場合は、このスクリプトを/bin/
フォルダーに移動してエイリアスを作成できます。
あなたが本当に、really怠laな場合は、次のコマンドを使用します。
Sudo cp ./git /bin/nogit
Sudo chmod +x /bin/nogit
alias nogit='/bin/nogit'
あなたが本当に本当に、really怠け者なら、次のワンライナーをコピーして貼り付けてください:
Sudo cp ./git /bin/nogit && Sudo chmod +x /bin/nogit && alias nogit='/bin/nogit'
あなたの怠inessが以前人類に知られていなかったレベルに達した場合、同じワンライナーのよりコンパクトなバージョンがあります:
Sudo cp ./git /bin/nogit;Sudo chmod +x /bin/nogit;alias nogit='/bin/nogit'
幸運を。
任意のコマンドで機能する別のアプローチ:Ctrl + R(reverse-i-search)を使用します。
Reverse-i-searchを使用すると、コマンド履歴を検索できます。検索文字列を押した後、Ctrl + Rを繰り返して、同じ文字列でさらに検索を繰り返します。
コマンドを1回入力するだけで、コマンドのサブストリングからそのコマンドを呼び出すことができます。ほとんどの場合、非常に長いコマンド全体とそのさまざまなバリエーションを、わずか2〜3個の適切に配置された検索文字で呼び出すことができます。通常はシェルを使用する以外に事前設定は必要なく、シェルの使用方法に自己適応します。1回完全なコマンドを入力するだけで、コマンドがコマンド履歴に自動的に追加されます。
git commit --amend
:<Ctrl+R>am
git pull
:<Ctrl+R>pu
git rebase --rebase-merges -i --onto Origin/develop Origin/develop feature/blue-header
:<Ctrl+R>blu
git rebase --abort
:<Ctrl-R>ab
git rebase --continue
:<Ctrl-R>con
docker-compose stop && git pull && make && docker-compose up -d
:<Ctrl-R>up
さらに、Ctrl-Rはbashだけではなく、Python Shell、IPython、mysql Shell、psql Shell 、irb(Ruby)など.
この例では、MySqlプロンプトと比較します。動作する方法は、MySqlプロセスが開始し、そのプロセスにコマンドを与えることです。そのため、選択した言語で似たようなものを書いてみませんか? C++の簡単な例を次に示します。
#include <iostream>
#include <cstdlib>
int main(int argc, char *argv[]){
while(true){
std::cout << "git> ";
std::cout.flush();
std::string command;
std::getline(std::cin, command);
if(command == "exit") break;
std::system("git " + command);
}
return 0;
}
私はメモリからそれを書いたばかりであり、コンパイラでチェックしていないことに注意してください。些細な構文エラーがあるかもしれません。
基本的なことについては、次のことができます。
function ggit(){ while true; do printf 'git> '; read; eval git $REPLY; done }
git> status
On branch master
Your branch is ahead of 'Origin/master' by 1 commit.
(use "git Push" to publish your local commits)
Changes not staged for commit:
(use "git add/rm <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
deleted: yarn.lock
no changes added to commit (use "git add" and/or "git commit -a")
git> add .
git> status
On branch master
Your branch is ahead of 'Origin/master' by 1 commit.
(use "git Push" to publish your local commits)
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
deleted: yarn.lock
git>
Ctrl + cで終了します
ConemuでWindows 7を使用したときに、開発環境の起動スクリプトに次を追加しました。
doskey g=git $*
これにより、g
と入力する代わりに、git
コマンドを使用できます。最後にWindows 10とConemuで試しましたが、うまくいきませんでした。バグがあると思いますが、試してみる価値はあります。
ブラケットエディターを使用します。コードとgitコマンドは使いやすく、多くの機能も備えています。
右上隅にある2番目の双眼鏡アイコンは、拡張機能をインストールするために使用されます。
検索拡張機能brackets git
上記の画像のようにインストールします。
再び右上隅に4番目のアイコンが表示されるので、クリックして上の画像のような変更を確認してください。
ブラケットを取り付ける場合は、次のコマンドを使用します。
Sudo add-apt-repository ppa:webupd8team/brackets
Sudo apt-get update
Sudo apt-get install brackets
詳細については、 buntuおよびLinux MintにBrackets Code Editorをインストールする方法 on buntupit を参照してください。