サーチ…
シンプルエイリアス
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 st
をgit status
。 -
git co
git checkout
代わりにgit co
をgit 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
とタイプすればいいです。