GNU/Linux >> Linux の 問題 >  >> Linux

Linux管理者および開発者向けの40の便利なgitコマンド

Gitは、開発者がソースコードの変更を追跡できるようにする強力なバージョントラッカーです。これは、オープンソース開発者によって広く使用されているツールです。プログラミングタスクを調整するために設計されましたが、Gitは任意のファイルセットを効果的に追跡できます。さらに、Linuxカーネルの背後にいる人物であるLinusTorvaldsによって開発されました。したがって、時間の経過とともにソフトウェアに機能を追加するオープンソース開発者である場合、または最先端のエンタープライズ製品を開発するために複数のピアと協力している場合、Gitはあなたの仕事に理想的な追跡システムになります。開発サイクルを大幅に簡素化する基本的なgitコマンドのいくつかを学ぶために私たちと一緒にいてください。

オープンソース開発者向けの実用的なgitコマンド

git CLIは、開発者がソフトウェア開発プロセスを容易にするために、かなりの数のgitコマンドを提供します。私たちの編集者は、読者の便宜のために、そのような最も有用なコマンドのいくつかを概説しました。だから、読み続けて、自分のペースでそれらを発見してください。

1。ユーザープロファイルの構成

gitconfigコマンドを使用してgitプロファイルを構成できます。少なくとも設定できるのは、ユーザー名とメールアドレスです。 Gitを使用すると、ユーザーはこれらのポリシーをグローバルまたはプロジェクトベースで構成できます。以下のコマンドを使用して、各リポジトリのユーザーとメールアドレスを設定します。

$ git config user.name "USERNAME"
$ git config user.email "[email protected]"

–グローバルを追加します これらのポリシーをグローバルに設定するオプション。

$ git config --global user.name "USERNAME"
$ git config --global user.email "[email protected]"

2。 Gitリポジトリを初期化する

gitリポジトリまたは単にリポジトリは、オープンソースプロジェクトのルートディレクトリです。これには、ソースファイル、オブジェクトのサブディレクトリ、ヘッド、タグなどが含まれています。次のコマンドを使用して、gitリポジトリを簡単に初期化できます。

$ git init
---

これは、あなたが人生で使用する最も一般的なgitコマンドの1つです。これで、ソースファイルの追加を開始し、必要に応じていじくり回すことができます。

3。プロジェクトファイルを追加する

gitを使用すると、既存のプロジェクトにファイルを追加するのは非常に簡単です。 git addコマンドを使用して、変更されたすべてのファイル/ディレクトリを追跡システムに簡単に追加できます。以下の例をざっと見て、これがどのように機能するかを確認してください。

$ git add file
$ git add *.php

git addコマンドを発行すると、現在の作業ディレクトリからプロジェクトインデックスにすべてのファイルが追加されます。最初の例で行ったように、特定のファイルを指定できます。 2番目の例では、すべてのPHPファイルをインデックスに追加します。 Gitはそれらをステージング用にマークします。

4。追加されたファイルを確認する

git statusコマンドを使用して、次のコミット中にステージングされるファイルを確認できます。すべての新しいファイルまたは変更されたファイルが表示されます。

$ git status

詳細を確認したいときはいつでも上記のコマンドを実行してください。今後のコミットでステージングされるすべてのファイルの要約リストが表示されます。

5。リポジトリへの変更のコミット

変更をコミットすると、gitはコードベースのスナップショットを取得します。これは、gitが変更を追跡し、バージョン管理を提供する方法です。これには、gitcommitコマンドを使用する必要があります。

$ git commit

上記のコマンドを実行すると、gitは説明の追加などの情報を入力するように求めます。 gitのインストール中に設定したデフォルトのLinuxエディターが呼び出されます。この不注意を避けるために、以下のコマンドを使用してください。

$ git commit -m "First Commit"

したがって、 -m を使用すると、説明を直接追加できます。 オプション。

6。ログを表示する

リポジトリに加えた変更を確認したいときはいつでもログを確認できます。 Linuxターミナルからこれを行うには、gitlogコマンドを使用するだけです。

$ git log
$ git log --file

最初の例は、gitcommitに関する一般的な情報を示しています。特定のファイルの変更のみを表示する場合は、2番目のコマンドを使用します。 –log-sizeなどのオプションをさらに追加することもできます オプション、または正規表現を使用した検索コミット。

7。プロジェクトブランチを確認する

gitブランチは、プロジェクトの独立した開発ラインを表します。 git branchコマンドを使用すると、現在のブランチを非常に簡単に確認できます。新しい機能を開発している、または古い機能を変更している現在アクティブなブランチが表示されます。

$ git branch

出力は、アスタリスク(*)記号を使用して現在のブランチをマークします。

8。プロジェクトブランチをリセットする

現在のリポジトリと作業ディレクトリを既知の状態に簡単にリセットできます。 git resetコマンドは、HEAD参照を特定のコミットに調整し、それに応じてこの特定のコミットに一致するようにインデックスを更新します。

$ git reset

次のコマンドを使用して、現在のブランチのソフトリセットを実行します。

$ git reset --soft

同様の方法でハードリセットを実行することもできます。 –softを置き換えるだけです –ハード 以下の例に示すように、オプション。

$ git reset --hard

9。新しいブランチを追加する

新しいブランチを追加すると、新しい機能を個別に操作できます。 git branchコマンドを使用して、ブランチを簡単に追加できます。以下に示すように、ブランチ名を追加するだけです。

$ git branch new-feature

git branchコマンドを発行して、追加が成功したかどうかを確認します。 new-featureという新しく作成されたブランチが表示されます。 。ただし、同じブランチ名を使用して複数のブランチを追加することはできません。致命的なエラーが発生します。

10。ブランチを切り替える

checkoutコマンドを使用すると、プロジェクトのさまざまなブランチを非常に簡単に切り替えることができます。これは、ソフトウェア開発中に使用する最もよく使用されるgitコマンドの1つです。次の例をざっと見て、これがどのように機能するかを確認してください。

$ git checkout new-feature

このコマンドは、ブランチが正常に切り替えられたことを通知します。前に示したgitbranchコマンドを使用してこれを確認することもできます。

11。プロジェクトブランチを削除する

新しい機能の開発に成功したら、それらをgitmasterブランチに追加する必要があります。これが完了したら、そのブランチに移動して完全に削除できます。 -D gitコマンドのオプションを使用すると、これを非常に簡単に行うことができます。

$ git checkout master
$ git branch -D new-feature

ブランチを正常に削除するには、最初にブランチから抜け出す必要があります。それ以外の場合、gitはエラーをスローします。

12。コミット、ツリー、ファイルの違いを確認する

git diffコマンドを使用すると、2つの複数のファイル、作業ツリーとインデックスツリー、コミット間、およびBLOBオブジェクト間の変更を表示できます。これは、コードベースの変更を追跡するために使用される最も基本的なgitコマンドの1つです。

$ git diff
$ git diff new-feature master

最初の例では、作業ツリーとインデックスツリーの間の変更を表示します。 2番目の例では、マスターブランチと新機能ブランチの間の変更を表示します。

13。 2つのブランチをマージする

git mergeコマンドを使用して、2つの異なる開発ブランチを簡単にマージできます。 2つのブランチを1つの統合されたブランチに結合します。 gitmergeコマンドはいくつかの目的に使用できます。以下の例を見て、それらをどのように使用できるかを確認してください。

$ git merge fixes new-feature
$ git merge -s ours obsolete
$ git merge --no-commit main

最初の例では、2つのブランチの新機能と修正をマージして、1つのブランチを作成します。 2番目の例では、 ours を使用して、obsol]ブランチを現在の開発ブランチにマージします。 ストラテジー。最後の例では、ブランチメインを現在のブランチにマージしますが、自動コミットを無効にします。

14。既存のコミットを元に戻す

一部のコミットが不要になったと判断する場合があります。このような場合、ブランチを完全に変更するよりも、これらのコミットを元に戻す方が適切です。 git revertコマンドを使用すると、これを正確に実行できます。

$ git revert ad9ef37d88ad4gfyg90aa6a23f71e775982f4b
$ git revert HEAD~3

最初の例では、コミットID f5ad9ef37d88ad4gfyg90aa6a23f71e775982f4bによって導入された変更を元に戻します。 。 2番目の例は、HEADで最後から4番目のコミットを繰り返し、新しいコミットを実行します。

15。作業ディレクトリを隠します

作業ディレクトリの現在の状態を一時的にどこかに保存し、後で必要なときにそのディレクトリに戻ることができます。これは、gitの用語ではスタッシングと呼ばれます。作業ディレクトリとインデックスの状態を保存するだけなので、新しい作業を行うことができます。

$ git stash

開発者は通常、厄介な状況に陥ったときにこのコマンドを使用します。それは彼らが乱雑なワークフローを保存し、後でそれを解決するために戻ってくることを可能にします。 stash listコマンドを使用して、stashリストを表示します。

$ git stash list

16。リポジトリのクローンを作成する

オープンソースの最も優れている点の1つは、他の人のコードを自分のものであるかのように操作できることです。 Gitを使用すると、gitcloneコマンドを使用して既存のプロジェクトを簡単にダウンロードできます。下の図を見て、これが実際にどのように機能するかを確認してください。

$ git clone <GIT:URL>
$ git clone git://example.com/git.git/ test-dir

これにより、上記のプロジェクトが test-dirにダウンロードされます。 システムのディレクトリ。

17。新しいアップデートをプルする

実際のプロジェクトは常に進化しています。以前にリモートリポジトリからリポジトリのクローンを作成したとします。開発者がそのリポジトリの新機能を更新したらどうしますか?同じリポジトリをローカルマシンに何度も複製するのは不便です。 gitpullコマンドはこれからあなたを救います。

$ git pull

このコマンドは、共同作業者によって行われた新しい変更でプロジェクトのローカルバージョンを更新します。最新の更新をプルする前に、作業ディレクトリをプロジェクトディレクトリに変更することを忘れないでください。

18。更新をプッシュする

更新の処理が完了したら、を押してリモートリポジトリに更新を追加できます。 gitpushとgitcommitの違いは、変更をコミットすると、リモートリポジトリではなくローカルリポジトリに追加されることです。

$ git push

このコマンドは、プロジェクトのリモートリポジトリに更新を追加します。通常、リモート開発者とのコラボレーションにはプルアンドプッシュを使用します。したがって、それらを完全に習得することが重要です。

19。リモートリポジトリを表示する

git remoteコマンドを使用すると、Linuxターミナルから追跡されたリポジトリのセットを簡単に管理できます。一部の選択したブランチのみのクローン作成に使用できます。

$ git remote
$ git remote --verbose

最初の例では、現在構成されているすべてのリモートリポジトリを表示します。 –verboseを追加する フラグは、これに関する詳細情報を示しています。

20。リモートリポジトリに接続する

ローカルリポジトリがリモートサーバーに接続されるように、リモートリポジトリを設定できます。これにより、ローカルの変更をリモートサーバーに直接プッシュできるようになります。次の図をざっと見て、これが実際にどのように機能するかを確認してください。

$ git remote add origin <server>

上記のコマンドは、サーバーにリモート名として「origin」を追加します。 ソースを調べることでサーバーのURLを見つけることができます GitHubリポジトリのサブタブ。

21。プロジェクトにタグを追加する

タグを使用すると、オープンソースプロジェクトの重要なイベントをマークできます。開発者は、新しい再発やバグ修正をマークするためにそれらを使用することがよくあります。 gitを使用してプロジェクトにタグを追加する方法については、以下のgitコマンドをよく見てください。

$ git tag 1.0.0 <commit-id>

このコマンドは、タグ1.0.0を特定のコミットに追加します。以下のコマンドを使用してcommit-idを取得できます。

$ git log

次のコマンドを使用して、タグをリモートリポジトリにプッシュします。

$ git push origin --tags

–タグを指定する必要があります オプションを明示的に。それ以外の場合、タグはローカルリポジトリにのみ追加され、リモートリポジトリには追加されません。

22。リモートデータを取得する

よく使用するもう1つの一般的なgitコマンドはfetchです。これは、いくつかの理由で非常に役立ちます。まず、fetchは新しいデータ/参照のみを取得し、それらをローカルブランチにマージしません。そのため、ローカルリポジトリの作業コピーが安全で健全な状態に保たれることを保証できます。

$ git fetch origin

これは、プロジェクトの独自のバージョンを壊すことなく、リモートコードベースの最近の進捗状況を確認するための優れた方法です。すべての新しいデータが適切であることが確認できたら、それらをローカルブランチにマージするだけです。

23。コミットされていない変更を復元する

git restoreコマンドを使用すると、開発者はプロジェクトでコミットされていない変更を復元できます。これらは、プロジェクトの作業バージョンまたはローカルインデックスのコンテンツに加えた変更です。このコマンドを使用して、作業コピーの変更またはインデックスの変更を元に戻すか、両方を行うことができます。

$ git restore --staged test.php
$ git restore --source=HEAD --staged --worktree test.php

最初のコマンドはインデックス内のファイルtest.phpを復元し、2番目のコマンドはインデックスとプロジェクトの現在の作業ディレクトリの両方を復元します。

24。ファイルを削除する

作業ツリーまたはプロジェクトインデックスからいくつかのファイルを完全に削除したい場合があります。これを行うには、gitrmコマンドを使用できます。ただし、このコマンドは、指定されたファイルを作業ディレクトリから削除しません。これを行うには、Linuxrmコマンドを使用します。

$ git rm *.php
$ git rm -r dir/
$ git rm --cached *.php

最初のコマンドは、作業ツリーとインデックスからすべてのPHPファイルを削除します。 2番目のコマンドは、dir/ディレクトリからすべてを削除します。最後のコマンドは、作業ツリーではなく、インデックスからのみすべてのPHPファイルを削除します。

25。ファイルの移動または名前の変更

Linuxのmvコマンドを使用する場合と同じように、gitを使用してファイルを移動または名前変更できます。これは実際には、gitに組み込まれている忙しい開発者の省略形です。

$ git mv test.py new-test.py

上記のコマンドは、単に次のLinux操作を実行します。

$ mv test.py new-test.py
$ git add new-test.py
$ rm test.py

そのため、git mvコマンドを使用すると、追加のLinuxターミナルコマンドを大量に入力する手間を省くことができます。

26。追跡されていないファイルをクリーンアップする

追跡されていないファイルは、gitバージョン管理システムの下にないファイルです。大規模なプロジェクトで作業する場合、このようなファイルに頻繁に遭遇します。 gitresetやgitcheckoutなど、いくつかの方法を使用してそれらを削除できます。ただし、これを行うにはgitcleanコマンドを使用するのが最適な方法です。

$ git clean
fatal: clean.requireForce defaults to true and neither -i, -n, nor -f given; refusing to clean

上記のコマンドは、これが私のシステムでgitが構成されている方法であるため、失敗しました。 -n を追加することで、この問題を回避できます。 、 -i 、または -f オプション。

$ git clean -n

27。ローカルリポジトリを最適化する

私の最も好きなgitコマンドの1つはgcです。ガベージコレクションに使用され、ローカルリポジトリのサイズを縮小するのに役立ちます。大規模なプロジェクトで作業している場合は、このコマンドを頻繁に使用する必要があります。

$ git gc

git gcコマンドは非常に高速に実行され、ローカルリポジトリの周りにある不要なファイルをクリーンアップします。それはその速度と効率のために最高の最適化方法の1つです。 –aggressiveを使用することもできます 最適化を増やすためのオプション。ただし、完了するまでにさらに時間がかかります。

28。ローカルリポジトリのアーカイブ

git archiveコマンドを使用すると、ローカルリポジトリを簡単にアーカイブできます。これにより、開発者はプロジェクトを安全な場所に保存できます。このアーカイブはネットワーク経由で転送することも、Linuxファイルシステムに保存することもできます。

$ git archive --output=test --format=tar master

上記のコマンドは、リポジトリをtestという名前のtarファイルに保存します。 –formatは省略できます 必要に応じてオプション。この場合、gitはその名前からアーカイブ形式を推測しようとします。このコマンドで使用できるオプションは他にもたくさんあります。

29。パターンを検索する

大規模なプロジェクトで作業する場合、多くの場合、さまざまなものを検索する必要があります。ありがたいことに、git grepコマンドを使用すると、リポジトリ内の特定のパターンを検索でき、開発がはるかに簡単になります。標準のLinuxgrepコマンドと非常によく似ていますが、git固有の機能がいくつかあります。

$ git grep -iw 'import' master

このコマンドは、マスターブランチの「import」を含むすべての行を表示します。大文字と小文字を区別しない方法で検索します。次のコマンドは、すべてのコミットとブランチで指定されたパターンを検索します。

$ git grep 'import' $(git rev-list --all)

これは、大規模なプロジェクトで共同作業をしている場合に習得するのに最適なgitコマンドの1つです。

30。作業ツリーの管理

開発者は、gitで複数の作業ツリーを操作できます。これは、プロジェクトの複数のブランチをチェックアウトするときに役立ちます。次のgitコマンドをチェックして、gitで作業ツリーを管理する方法を確認してください。

$ git worktree list
$ git worktree add new-branch
$ git worktree remove new-branch
$ git worktree prune

最初のコマンドを使用して、現在作業中のツリーを表示できます。 2番目のコマンドを使用して新しい「リンクされた作業ツリー」を追加し、3番目のコマンドを使用してそのツリーを削除します。最後のコマンドを使用すると、作業ツリー情報を整理できます。

31。追跡されていないオブジェクトを削除する

gitによって追跡されなくなったオブジェクトを削除したい場合があります。 Gitは、これを行うための簡単なコマンドを提供します。 git pruneコマンドは、追跡されていないオブジェクトのみをオブジェクトデータベースから削除し、参照自体は削除しません。

$ git prune --dry-run
$ git prune --verbose --progress

最初のコマンドは何も削除せず、プルーニングによって削除されるオブジェクトのみを表示します。 2番目のコマンドは、削除期間中の進行状況レポートだけでなく、詳細な出力も提供します。 pruneコマンドを使用して、gitgcコマンドと一緒にリポジトリを最適化できます。

32。解凍されたオブジェクトをパックする

gitでは、パックは個別に圧縮されたオブジェクトのコレクションです。 Gitはこれらのオブジェクトにデルタ圧縮を適用し、それらを1つのファイルに保存します。これらは、Linuxファイルシステムまたはミラーシステムの負荷を軽減するために使用されます。 git repackコマンドを使用すると、ユーザーは既存のパック内にないオブジェクトで構成される新しいパックを作成できます。

$ git repack

このコマンドをgicgcおよびgitpruneと一緒に使用して、gitリポジトリを最適化できます。

33。解凍されたオブジェクトのリスト

解凍されたオブジェクトが多すぎる場合を除いて、オブジェクトを頻繁に再パックしないでください。 git count-objectsコマンドは、解凍されたオブジェクトの数とそれらが消費するディスク容量を表示するためのシンプルですが便利な方法です。

$ git count-objects

上記のコマンドを使用して、gitrepackの時間かどうかを判断します。 –verboseを追加できます 詳細情報を取得するためのフラグと–人間が読める形式 従来の方法でサイズを表示するフラグ。

34。オブジェクトデータベースを検証する

Gitは、初期にはファイルシステムとして開発されました。これにはfsckと呼ばれる便利なコマンドがあり、Unixのfsckと非常によく似ています。このコマンドを使用して、接続を確認し、オブジェクトの整合性チェックを実行できます。

$ git fsck

上記のコマンドを実行すると、オブジェクトデータベースで見つかった破損したオブジェクトが表示されます。これは、欠落しているオブジェクトや不良なオブジェクトを見つけるための最も便利なgitコマンドの1つです。

35。コミットごとに変更を表示する

git whatchangedコマンドは、私たちのお気に入りのgitサブコマンドの1つです。これは、個々のgitcommitがプロジェクトにどのような変更をもたらすかを確認するためのシンプルですが効果的な方法です。

$ git whatchanged

このgitコマンドは、コミットログとdiff出力を使用して情報を表示します。全体として、操作はgitlogコマンドと非常によく似ています。

36。ログ情報の要約

履歴を表示するためにgitshortlogコマンドを使用することもできます。このコマンドの背後にある主なアイデアは、リリースアナウンスに出力を含めることです。次のコマンドをざっと見て、これがどのように機能するかを確認してください。

$ git shortlog
$ git shortlog --email --summary

–メールを追加する オプションは、各作成者の電子メールを表示します。 –要約 オプションは通常の出力を抑制し、コミット数のみを表示します。

37。構成オプションの管理

gitで利用できる構成オプションは多数あります。 git configコマンドを使用して、さまざまなオプションのクエリ、設定、または置換を行うことができます。特定のリポジトリとグローバル構成の両方に変更を加えることができます。

$ git config --list

上記のコマンドは、gitで現在設定されているすべての構成オプションを一覧表示します。新しいオプションを簡単に追加または削除できます。これらのタスクを実行する方法については、configサブコマンドのヘルプページに従ってください。

$ git config --help

38。 Gitヘルプを参照

gitまたはその他のLinuxターミナルコマンドのヘルプページには、使用可能なすべてのオプションの要約情報が記載されています。 gitで問題が発生した場合は、最初にアクセスする必要があります。次のコマンドをざっと見て、gitヘルプページを呼び出す方法を学びましょう。

$ git help
$ git --help

したがって、Unixスタイルの –help を利用して、gitヘルプページを参照できます。 オプションまたはgitに組み込まれているhelpサブコマンド。さらに、gitはサブコマンドのヘルプページも提供します。

$ git <command> --help
$ git commit --help

39。マニュアルページを参照

マニュアルページには、gitバージョン管理システムとそのすべてのサブコマンドに関する詳細情報が含まれています。以下の構文に従って表示できます。

$ man git
$ man git commit

そのため、ヘルプページと同じように、個々のサブコマンドのマニュアルを表示することもできます。

40。バージョン情報を表示する

次の簡単なコマンドを使用して、システムにインストールされているgitのバージョンを表示できます。 gitは時間の経過とともに大きく進化したため、さまざまなgitバージョン間で大きな違いがあります。

$ git --version

上記のコマンドを使用するだけで、マシンで利用可能なgitの特定のバージョンを取得できます。

終わりの考え

Gitは、その実用的な設計と多様な機能セットのおかげで、事実上のバージョン管理システムとしての地位を固めています。 MercurialやCVSなどの優れた代替手段がいくつかありますが、実用的なgitコマンドが多数あるため、競合他社よりも用途が広くなっています。私たちの編集者は、あなたのために最も実用的なコマンドの概要を説明するために、非常に長い時間を費やしました。このガイドから、探していた重要な洞察が得られたと思います。特定のコマンドについて疑問がある場合は、遠慮なく質問してください。この長いガイドを通して私たちと一緒にいてくれてありがとう。


Linux
  1. 3システム管理者に役立つLinuxコマンド

  2. Linuxでファイルを検索するには、検索と検索を使用します

  3. 11 Linux で便利な「ssh」および「scp」コマンド

  1. Linuxでファイルを圧縮および抽出するための16のtarコマンド

  2. 初心者向けLinux:ファイルを操作するためのさらに10個のコマンド

  3. Linuxの検索コマンド

  1. Linuxでのmkdir、tar、killコマンドに関する4つの便利なヒント

  2. Linuxでファイルタイプとシステム時間を管理するための5つの便利なコマンド–パート3

  3. SemiCode OS:プログラマーとWeb開発者向けのLinuxディストリビューション