web-dev-qa-db-ja.com

すべてのGitコマンドの先頭に「git」と入力しないようにするにはどうすればよいですか?

すべてのGitコマンドの開始時にWord gitを入力する必要を回避する方法があるかどうか疑問に思っています。

コマンドプロンプトを開いて "Git mode"になった後、最初にgitコマンドを1回だけ使用する方法があればいいでしょう。

例えば:

git>

その後、入力するすべてのコマンドはデフォルトでGitコマンドとして解釈されます。

MySQLシェルを使用してデータベースコマンドを記述する方法と同様の方法で:

mysql>

これにより、1日に何百回もgitを入力する必要がなくなります。

注:私は git-bash 、Windowsの場合。

190
Nocturnal

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$

または、そこにリンクされている他のプロジェクトをご覧ください。

  • git-sh -Gitプロンプト、エイリアス、および補完機能を備えたカスタマイズされたbashシェル。
  • gitsh -Perlで書かれたシンプルなGitシェル。
  • repl -REPL内のサブコマンドでプログラムをラップします。

注:自分でこれを使用したことはありません。

190
alfunx

これを行うPerlのワンライナー:

Perl -nE 'BEGIN {print "git > "} system "git $_"; print "git > "'

これは、gitを前に付けて入力したものを実行します。そして、^Dを押すまでそれを続けます。

115
user8549967

これはまさにあなたが求めているものではありませんが、~/.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、 等々。

57
Thomas

私は、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'
32
JacobIRR

エディターを使用します。

vs code のようなお気に入りのエディターからcommitのようなコマンドを入力し、gitでより効率的にします:

enter image description here

または、gitと入力して、すべてのコマンドを取得します。

enter image description here

31
prosti

友人がこれを実現する小さな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
26
Sam Weaver

別の方法があります。それはまた、尋ねられたものとはまったく異なりますが、私はしばらくの間それを使用してきました、それはかなりいいです。 ~/.bashrcに次の行を追加します。

complete -E -W git

空のBashプロンプトでTabを押すと、「git」と入力されます。

23
nomadictype

私はこれが非常に遅い答えであることを知っていますが、この質問は に対処する 現在、この種の繰り返しに苦しんでいます。

私はあなたについてはわかりませんが、正直に言って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というファイルに保存します
  • セミコロンを使用して、1行に複数のコマンドを追加できます
  • コマンドの先頭でキーワードgitを使用すると、スクリプトはそれを複製しません(EG:git initgit git initになりません

コマンド例:

  1. init
  2. add .
  3. stage .
  4. commit -m "inital commit"
  5. %run; %exit

追加情報(Linuxユーザーの場合):

必要に応じて、.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'

幸運を。

20
LogicalBranch

任意のコマンドで機能する別のアプローチ: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)など.

17
Lie Ryan

この例では、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;
}

私はメモリからそれを書いたばかりであり、コンパイラでチェックしていないことに注意してください。些細な構文エラーがあるかもしれません。

15
john01dav

基本的なことについては、次のことができます。

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で終了します

13
Umur Kontacı

ConemuでWindows 7を使用したときに、開発環境の起動スクリプトに次を追加しました。

doskey g=git $*

これにより、gと入力する代わりに、gitコマンドを使用できます。最後にWindows 10とConemuで試しましたが、うまくいきませんでした。バグがあると思いますが、試してみる価値はあります。

2
Adamsan

ブラケットエディターを使用します。コードとgitコマンドは使いやすく、多くの機能も備えています。

enter image description here

右上隅にある2番目の双眼鏡アイコンは、拡張機能をインストールするために使用されます。

enter image description here

検索拡張機能brackets git上記の画像のようにインストールします。

enter image description here

再び右上隅に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 を参照してください。

2
akash