サーチ…


シンプルエイリアス

Gitにエイリアスを作成する方法は2つあります。

  • ~/.gitconfigファイルを~/.gitconfig
[alias]
    ci = commit
    st = status
    co = checkout
  • コマンドラインで:
 git config --global alias.ci "commit"
 git config --global alias.st "status"
 git config --global alias.co "checkout"

エイリアスが作成された後、次のように入力します。

  • git ci git commit代わりにgit ci
  • git st代わりにgit stgit status
  • git co git checkout代わりにgit cogit checkoutます。

通常のgitコマンドと同様に、エイリアスは引数の横に使用できます。例えば:

 git ci -m "Commit message..."
 git co -b feature-42

既存のエイリアスの一覧表示/検索

既存のgitエイリアス--get-regexpを使ってリストすることができます

$ git config --get-regexp '^alias\.'

エイリアスの検索

エイリアス検索するには、 [alias] .gitconfig次の行を追加します。

aliases = !git config --list | grep ^alias\\. | cut -c 7- | grep -Ei --color \"$1\" "#"

次に、

  • git aliases - すべてのエイリアスを表示する
  • git aliases commit - "commit"を含むエイリアスのみ

高度なエイリアス

Gitを使うと、別名にGit以外のコマンドとsh構文を使用することができます!

あなたの~/.gitconfigファイルで:

[alias]
    temp = !git add -A && git commit -m "Temp"

これらのプレフィックス付きエイリアスでフルシェル構文が利用できるということは、シェル関数を使用して、コマンドライン引数を利用するようなより複雑なエイリアスを構築できることを意味します。

[alias]
    ignore = "!f() { echo $1 >> .gitignore; }; f"

上記のエイリアスはf関数を定義し、エイリアスに渡す引数でそれを実行します。だから、実行しているgit ignore .tmp/追加します.tmp/あなたに.gitignoreファイル。

実際、このパターンは非常に便利で、Gitは$1$2などの変数を定義しているので、特別な関数を定義する必要はありません。 (ただし、これらの変数を使ってアクセスしても、Gitは引数を追加するので、最後にダミーコマンドを追加することをお勧めします)。

!先頭にエイリアスがあることに注意してください!現在のディレクトリがツリー内で深い場合でも、git checkoutのルートディレクトリから実行されます。これは明示的にそこにcdする必要なしにルートからコマンドを実行するのに便利な方法です。

[alias]
    ignore = "! echo $1 >> .gitignore"

トラッキングされたファイルを一時的に無視する

一時的にファイルを無視してマークする(エイリアスへのパラメータとしてファイルを渡す) - タイプ:

unwatch = update-index --assume-unchanged

ファイルの再追跡を開始するには -

watch = update-index --no-assume-unchanged

一時的に無視されたすべてのファイルを一覧表示するには、次のように入力します。

unwatched = "!git ls-files -v | grep '^[[:lower:]]'"

未処理のリストを消去するには、次のように入力します。

watchall = "!git unwatched | xargs -L 1 -I % sh -c 'git watch `echo % | cut -c 2-`'"

エイリアスの使用例:

git unwatch my_file.txt
git watch my_file.txt
git unwatched
git watchall

ブランチグラフを使ったきれいなログを表示する

[alias]
  logp=log --pretty=format:'%h %ad | %s%d [%an]' --graph --date=short

  lg =  log --graph --date-order --first-parent \
     --pretty=format:'%C(auto)%h%Creset %C(auto)%d%Creset %s %C(green)(%ad) %C(bold cyan)<%an>%Creset'
  lgb = log --graph --date-order --branches --first-parent \                      
     --pretty=format:'%C(auto)%h%Creset %C(auto)%d%Creset %s %C(green)(%ad) %C(bold cyan)<%an>%Creset'
 lga = log --graph --date-order --all \                                          
   --pretty=format:'%C(auto)%h%Creset %C(auto)%d%Creset %s %C(green)(%ad) %C(bold cyan)<%an>%Creset'

ここでは、-- --pretty形式で使用されるオプションとプレースホルダの説明(網羅的なリストはgit help log利用可能です)

--graph - コミットツリーを描画する

--date-order - できるだけコミットタイムスタンプを使用する

--first-parent - マージノードの最初の親に従います。

--branches - すべてのローカルブランチを表示します(デフォルトでは、現在のブランチのみが表示されます)

--all - すべてのローカルとリモートのブランチを表示する

%h - コミットのハッシュ値(省略形)

%ad - 日付スタンプ(著者)

%an - 作成者のユーザー名

%an - ユーザー名をコミットする

%C(auto) - [color]セクションで定義された色を使用する

%Creset - 色をリセットする

%d - - デコレート(ブランチとタグ名)

%s - メッセージをコミットする

%ad - 作成者の日付(--dateの指示に従います)(コミッタの日付ではありません)

%an - 著者名(コミッター名の%cn)

線形履歴を保持しながらコードを更新する

場合によっては、コードの線形(分岐しない)履歴をコミットする必要があります。ブランチでしばらく作業している場合は、通常のgit pullを行う必要がある場合、上流側とのマージを記録するので、これは難しいかもしれません。

[alias]
  up = pull --rebase

これはあなたのアップストリームソースで更新され、あなたがプルダウンしたものの上にプッシュしていない作品を再適用します。

使用するには:

git up

あなたの.gitignore設定で無視されるファイルを表示する

[ alias ]

    ignored = ! git ls-files --others --ignored --exclude-standard --directory \
            && git ls-files --others -i --exclude-standard

ファイルごとに1行を表示するのでgrep(ディレクトリのみ):

$ git ignored | grep '/$'
.yardoc/
doc/

またはカウント:

~$ git ignored | wc -l
199811                 # oops, my home directory is getting crowded

ステージングされたファイルをステージング解除する

通常、 git reset commitを使用してコミットされるようにステージングされたファイルを削除するには、 reset与えられた引数に応じて多くの機能があります。完全にunstageすべてのファイルは、私たちが使用して新しいエイリアスを作成するためのgitの別名を利用することができ、段階的なresetが、今我々がするために正しい引数を提供するために、覚えておく必要はありませんreset

git config --global alias.unstage "reset --"

今、あなたがステージファイルをステージングしたくないときはいつでも、 git unstageとタイプすればいいです。



Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow