ほとんど知られていないGitコマンド





Gitには後方互換性に対する厳格な義務があります。多くの高度な機能はさまざまなオプションの背後に隠されており、デフォルトの動作としては使用されません。 幸いなことに、Gitはエイリアスもサポートしているため、Git固有のすべての魔法を行う独自のチームを作成できます。 カットの下-私の.gitconfigで定義された便利な(または少なくとも面白い)エイリアスの選択



git please



$ git config --global alias.please 'push --force-with-lease'
      
      





各開発者は、チームリーダーと少なくとも1回、共通のスレッドを強制的にプッシュすることについて話し合う必要がありました(これを行わないでください)。 ストーリー全体の一部を上書きし、リポジトリ全体に重複したコミットを分散させるまで、リベース(リベース)、編集、スカッシュはすべて楽しいです。 幸いなことに、Gitでは、サーバー上の履歴を意図せずに上書きすることはできません。 意図を証明するには、 git push--forceオプションを明示的に渡す必要があります。 しかし、強制プッシュは失礼なアプローチです。アップストリームブランチをローカルバージョンで踏みつけ、それまでにフェッチしなかったすべての変更は履歴から消去されます。







gitオプション--force-with-leaseの方がはるかに正確です。ロールの前に、refのローカルコピーが最新であることを確認します。 これは、少なくともトランプルするすべての変更をプルアップすることを意味します。 しかし、毎回git push --force-with-leaseを記述しないために、この行のエイリアスを作成しました: git please



git commend



 $ git config --global alias.commend 'commit --amend --no-edit'
      
      





コミットして、(ステージ)ファイルのインデックス付けを忘れたことにすぐに気付きました。 これ以上の心配はありません! Alias gitは、既存のコミットメッセージを再利用して、すべてのインデックス付きファイルを作成した最後のコミットにサイレントアタッチします。



 $ git add Dockerfile $ git commit -m 'Update Bitbucket pipeline with new Docker image' # (facepalm) $ git add bitbucket-pipelines.yml $ git commend
      
      





git it



 $ git config --global alias.it \ '!git init && git commit -m “root” --allow-empty'
      
      





通常どおり、リポジトリ内の最初のコミットをリベースすることはできません。 したがって、空のコミットをルートとして作成することをお勧めします。 Alias gitはリポジトリを初期化し、1回の操作で空のルートコミットを作成します。 そして、次にプロジェクトを実行するときに、バージョン管理システムに追加するだけでなく、 git gitを実行してください!



 $ cd shiny-new-thing $ git it Initialized empty Git repository in /shiny-new-thing/.git/ [master (root-commit) efc9119] root
      
      





git staaash



 $ git config --global alias.stsh 'stash --keep-index' $ git config --global alias.staash 'stash --include-untracked' $ git config --global alias.staaash 'stash --all'
      
      





git stashは、最も驚くべき便利なgitコマンドの1つです。 追跡されたファイルに加えられたすべての変更を作業ツリーに登録し、後で使用できるように非表示にし、クリーンなツリーを表示して、別の部分で安全に作業できるようにします。 ただし、新しいファイルを作成してまだインデックスを作成していない場合、デフォルトではgit stashはファイルにアクセスしないため、作業ツリーが乱雑になります。 したがって、追跡されていないファイルまたは無視されたファイルの内容は、デフォルトでは非表示になりません。



非表示にする作業ツリーのビットに応じて、さまざまなgit stashバリアントの便利なエイリアスを作成しました。



 git stsh #        git stash #       git staash #      git staaash #  ,    
      
      





疑わしい場合は、最長のエイリアス( git staaash )は常に、リポジトリの新しいクローンの状態の作業ツリーを復元できます。



git shorty



 $ git config --global alias.shorty 'status --short --branch'
      
      





他のgitコマンドよりも頻繁にgit statusを実行しています 。 Gitの組み込みヘルプは、近年非常に便利になりました。これは初心者には非常に便利ですが、経験のあるユーザーにとっては情報が冗長すぎます。 たとえば、 git statusは、インデックス付き、インデックスなし、および追跡されていない変更がいくつかあることを12行で通知します。



 $ git status On branch master Changes to be committed: (use “git reset HEAD <file>…” to unstage) modified: package.json Changes not staged for commit: (use “git add <file>…” to update what will be committed) (use “git checkout -- <file>…” to discard changes) modified: package.json Untracked files: (use “git add <file>…” to include in what will be committed) index.js
      
      





同じgit shortyは3行で私に教えてくれます:



 $ git shorty ## master AM test ?? .gitignore
      
      





簡潔にするために、エイリアスgit stの形式で実行しましたが、停止できませんでした。



git merc



 $ git config --global alias.merc 'merge --no-ff'
      
      





リベースせずに通常の分岐ワークフローを使用する場合、標準のgit mergeを実行して、ブランチとマスターブランチの機能をマージするのは最適なソリューションではありません。 このコマンドにオプションを追加しない場合、デフォルトのマージ戦略--ffが使用されます。この場合、masterブランチに新しい変更がない場合にのみ、新しいマージコミットが作成されます。 それ以外の場合、マスターブランチは単にブランチの最後のコミットの場所に「巻き戻す」だけです。 まれに 、マージコミットを作成するとき、Gitストーリーを表示するときに、どのコードがどのブランチで開発されたかを言うのは困難です。







git merc--no-ff戦略を使用します。これは常にマージコミットを作成します。







ところで、プルリクエストをBitbucketにマージするときは、デフォルトで--no-ffが常に使用されます。



git grog



 $ git config --global alias.grog 'log --graph --abbrev-commit --decorate --all --format=format:"%C(bold blue)%h%C(reset) - %C(bold cyan)%aD%C(dim white) - %an%C(reset) %C(bold green)(%ar)%C(reset)%C(bold yellow)%d%C(reset)%n %C(white)%s%C(reset)"'
      
      





私の別名であるgit grog(またはgr aphical l og )は、ここ数年で大きく成長したため、それが何をしているのかを正確に知ることができなくなりました。 しかし、それは美しく見えます:







比較のために、ここに標準のgitログがあります







あらゆる種類の便利なフォーマットが利用できるので、上記のチームをフォークして健康を使ってください!



GUIファン向け



Git GUIのファンであり、MacまたはWindowsで実行している場合は、 無料のAtitian SourceTree Gitクライアントを使用している可能性があります 。 「はい」の場合、この記事で説明されているエイリアスを適用して、SourceTree設定で新しいカスタムアクションを作成します(キーの組み合わせを割り当てることができます)。







このアクションは、メニュー( アクション→カスタムアクション )またはキーボードショートカットを使用して起動します。







いいエイリアスがあります!



All Articles