「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > 本当に Git を知っていますか?

本当に Git を知っていますか?

2024 年 11 月 7 日に公開
ブラウズ:461

Do you really know Git?

このブログの画像は、Scott Chacon、Ben Straub 著の「Pro Git」から引用しています

このブログでは、プログラミングで使用する Git 内の日常的な機能のいくつかについて、さまざまな興味深い事実について読むことができます。

開発者は、ツールが内部でどのように機能するかを知らずに、やみくもにツールを使用することがよくあります。この抽象化は良い方向に向かう一方で、物事がどのように機能するかを知ることが、熟練プログラマーとアマチュア プログラマーの違いを生むことがあります。

いくつかの素晴らしい事実を見てみましょう!


1 - ショートステータス

Git を長期間使用している場合は、git status について知っているはずです。ただし、より読みやすく最小限のステータス出力を取得するオプションがあることをご存知ですか?

短いステータス フラグ -s を使用すると、よりコンパクトな形式になります。

$ git status -s
 M README
MM Rakefile
A  lib/git.rb
M  lib/simplegit.rb
?? LICENSE.txt

出力の左側のセクションに 2 つの列があることがわかります。左側の列は ステージング領域 のステータスを表し、右側の列は 作業ツリー のステータスを表します。時系列のアクションの順序も左から右に表されます。

上記の出力を解釈してみましょう:

  • 「M」 - 変更されましたが、ステージングされていません
  • 「MM」 - ステージングされ、その後再度変更されました。したがって、次のコミットには追加のステージが必要です。
  • 「A」 - 新しいファイルが作成され、ステージングされました
  • 「M」 - 上演中
  • 「??」 - 新しいファイルが作成されましたが、ステージングされていません(追跡されていません)

2 - ステージングエリアをスキップする

追跡された ファイルをステージングして 1 つのコマンドですべてコミットしたい場合はどうすればよいでしょうか?

これを行うには、git commit -a -m "message".

を使用します。

残念ながら、追跡されていないファイル (新しく作成されたファイル) はこの魔法のコマンドではステージングされないことに注意してください。


3 - コミット履歴を表示する

git log を使用して、リポジトリ内で行われたコミットを新しい順にリストします (最新のコミットが最初に表示されます)。

出力をカスタマイズできるさまざまなオプションがあります。便利なものをいくつか見てみましょう:

  • -{number} は、表示されるログ エントリの数を制限します (例: git log -2 は最後の 2 つのエントリを表示します)
  • --stat は、各コミットのファイル数や挿入/削除数などの省略された統計を表示します
  • --pretty=oneline 各コミットを 1 行に出力します
  • --graph は、ブランチとマージの履歴を示す ASCII グラフを追加します

4 - Git Restore を使用して元に戻す

ファイルをアンステージしたい場合は、git replace HEAD を使用します。変更したファイルを元に戻したい場合は、git checkout -- {file}を使用します。

両方を行う簡単な方法が登場しました。 Git バージョン 2.23.0 では、ファイルのステージング解除と変更解除の両方を行う 2-in-1 機能を提供する git list が導入されました。

  • git stop {file} - 変更されたファイルの変更を解除します
  • git stop --staged {file} - ステージングされたファイルのステージングを解除します

5 - Git フェッチと Git プル

おそらく、プログラマーとして git pull を少なくとも 1 回は使用したことがあるでしょう。さらに、git fetch について聞いたことはあるでしょうが、実際に使用する必要はなかったでしょう。さて、それが実際に何をするのか、そして git pull とどのように違うのかについて話しましょう。

フェッチは、プル内で起こることの単なる最初のステップとして考えることができます。

プルでは、​​リモート リポジトリからすべてのデータをダウンロードし、ローカル リポジトリに転送します。これがフェッチの動作です。

この時点では、ローカル リポジトリにはデータがありますが、最新の変更を作業できるように作業ディレクトリとマージされていません。プル内の次のステップはブランチとのマージで、最新の変更が作業ディレクトリに置かれます。

したがって、プルはフェッチとマージをすべて一度に行いますが、フェッチは最初のステップのみを実行します。


6 - Git エイリアス

git コマンドをカスタマイズできる方法があると言ったらどうしますか? git config を通じて、それが可能です。

頻繁に使用するコマンドのエイリアスを次のように設定できます:

$ git config --global alias.co checkout
$ git config --global alias.br branch
$ git config --global alias.ci commit
$ git config --global alias.st status

ここでは、git commit と入力する代わりに、git ci と入力するだけです。

これは、特定のタスクをより直感的に行うのに役立つコマンドに特に役立ちます。

$ git config --global alias.unstage 'reset HEAD --'
# the double dash serves as an option separator. 
# It tells Git to treat anything after it as a filename

上記のコマンドは、次のコマンドと同等になります:

  • git unstage fileA
  • git リセット HEAD -- fileA

最新のコミットを確認するには、last コマンドを追加することも一般的です:

$ git config --global alias.last 'log -1 HEAD'

今回のブログは以上です! Git を使用した次のプロジェクトでワークフローの品質を向上させる、いくつかの優れたトリックを学んでいただければ幸いです。読んでいただきありがとうございます!

リリースステートメント この記事は次の場所に転載されています: https://dev.to/jihoonj/do-you-really-know-git-456d?1 侵害がある場合は、[email protected] に連絡して削除してください。
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3