正式なドキュメントは英語版であり、この日本語訳はAI支援翻訳により作成された参考用のものです。日本語訳の一部の内容は人間によるレビューがまだ行われていないため、翻訳のタイミングにより英語版との間に差異が生じることがあります。最新かつ正確な情報については、英語版をご参照ください。

ファイル管理

Gitは、変更の追跡、他のユーザーとのコラボレーション、および大きなファイルを効率的に管理するのに役立つファイル管理機能を提供します。

ファイル履歴

git logを使用して、ファイルの完全な履歴を表示し、それが時間の経過とともにどのように変化したかを理解します。ファイル履歴には、次の情報が表示されます:

  • 各変更の作成者。
  • 各変更の日時。
  • 各コミットで行われた特定の変更。

たとえば、gitlabルートディレクトリにあるCONTRIBUTING.mdファイルに関するhistory情報を表示するには、次を実行します:

git log CONTRIBUTING.md

出力例:

commit b350bf041666964c27834885e4590d90ad0bfe90
Author: Nick Malcolm <nmalcolm@gitlab.com>
Date:   Fri Dec 8 13:43:07 2023 +1300

    Update security contact and vulnerability disclosure info

commit 8e4c7f26317ff4689610bf9d031b4931aef54086
Author: Brett Walker <bwalker@gitlab.com>
Date:   Fri Oct 20 17:53:25 2023 +0000

    Fix link to Code of Conduct

    and condense some of the verbiage

ファイルに対する以前の変更を確認する

git blameを使用して、ファイルに対する最後の変更を誰がいつ行ったかを確認します。これにより、ファイルの内容のコンテキストを理解し、競合を解決し、特定の変更の責任者を特定できます。

ローカルディレクトリ内のREADME.mdファイルに関するblame情報を検索する場合:

  1. ターミナルまたはコマンドプロンプトを開きます。

  2. Gitリポジトリに移動します。

  3. 次のコマンドを実行します:

    git blame README.md
  4. 結果ページをナビゲートするには、Spaceキーを押します。

  5. 結果を終了するには、Qキーを押します。

この出力は、各行のコミットSHA、作成者、および日付を示す注釈付きでファイルの内容を表示します。次に例を示します:

58233c4f1054c (Dan Rhodes           2022-05-13 07:02:20 +0000  1) ## Contributor License Agreement
b87768f435185 (Jamie Hurewitz       2017-10-31 18:09:23 +0000  2)
8e4c7f26317ff (Brett Walker         2023-10-20 17:53:25 +0000  3) Contributions to this repository are subject to the
58233c4f1054c (Dan Rhodes           2022-05-13 07:02:20 +0000  4)

Git LFS

Git Large File Storageは、Gitリポジトリ内の大きなファイルを管理するのに役立つ拡張機能です。大きなファイルをGit内のテキストポインターに置き換え、ファイルの内容をリモートリポジトリに保存します。

前提要件:

ファイルを追加して追跡する

大きなファイルをGitリポジトリに追加し、Git Large File Storageで追跡するには:

  1. 特定のタイプのすべてのファイルに対する追跡を構成します。isoを目的のファイルタイプに置き換えます:

    git lfs track "*.iso"

    このコマンドは、Git Large File StorageでISOファイルを処理するための手順が記載された.gitattributesファイルを作成します。次の行が.gitattributesファイルに追加されます:

    *.iso filter=lfs -text
  2. そのタイプのファイル.isoをリポジトリに追加します。

  3. .gitattributesファイルと.isoファイルの両方に対する変更を追跡します:

    git add .
  4. 両方のファイルが追加されていることを確認します:

    git status

    .gitattributesファイルは、コミットに含める必要があります。含まれていない場合、GitはGit Large File StorageでISOファイルを追跡しません。

    変更するファイルが.gitignoreファイルにリストされていないことを確認してください。リストされている場合、Gitは変更をローカルでコミットしますが、アップストリームリポジトリにプッシュしません。

  5. 両方のファイルをリポジトリのローカルコピーにコミットします:

    git commit -m "Add an ISO file and .gitattributes"
  6. 変更をアップストリームにプッシュします。mainをブランチの名前に置き換えます:

    git push origin main
  7. マージリクエストを作成します。

Git Large File Storageの追跡に新しいファイルタイプを追加すると、このタイプの既存のファイルはGit Large File Storageに変換されません。このタイプのファイルのうち、追跡を開始した後にのみ追加されたファイルがGit Large File Storageに追加されます。git lfs migrateを使用して、既存のファイルを変換してGit Large File Storageを使用するようにします。

ファイルの追跡を停止する

Git Large File Storageでのファイルの追跡を停止すると、ファイルはリポジトリの履歴の一部であるため、ディスク上に残ります。

Git Large File Storageでのファイルの追跡を停止するには:

  1. git lfs untrackコマンドを実行し、ファイルへのパスを指定します:

    git lfs untrack doc/example.iso
  2. touchコマンドを使用して、標準ファイルに変換します:

    touch doc/example.iso
  3. ファイルへの変更を追跡します:

    git add .
  4. 変更をコミットしてプッシュする

  5. マージリクエストを作成し、レビューをリクエストします。

  6. リクエストをターゲットブランチにマージします。

git lfs untrackで追跡せずに、Git Large File Storageで追跡されたオブジェクトを削除すると、オブジェクトはgit statusmodifiedとして表示されます。

単一タイプのすべてのファイルの追跡を停止する

Git Large File Storageで特定のタイプのすべてのファイルの追跡を停止するには:

  1. git lfs untrackコマンドを実行し、追跡を停止するファイルタイプを指定します:

    git lfs untrack "*.iso"
  2. touchコマンドを使用して、ファイルを標準ファイルに変換します:

    touch *.iso
  3. ファイルへの変更を追跡します:

    git add .
  4. 変更をコミットしてプッシュする

  5. マージリクエストを作成し、レビューをリクエストします。

  6. リクエストをターゲットブランチにマージします。

排他的なファイルのロック

  • プラン: Free、Premium、Ultimate
  • 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated

排他的なファイルのロックは、競合を防ぎ、一度に1人だけがファイルを編集できるようにします。これは、次のような場合に適したオプションです:

  • マージできないバイナリファイル。たとえば、設計ファイルやビデオ。
  • 編集時に排他的アクセスを必要とするファイル。

排他的なファイルのロックは、リポジトリ内のすべてのブランチに適用されます。ファイルをデフォルトブランチでのみロックする必要がある場合は、代わりにデフォルトブランチのファイルとディレクトリのファイルのロックを使用してください。

前提要件:

ファイルのロックを構成する

特定のファイルタイプのファイルのロックを構成するには:

  1. --lockableオプションを指定してgit lfs trackコマンドを使用します。たとえば、PNGファイルを構成するには:

    git lfs track "*.png" --lockable

    このコマンドは、次の内容で.gitattributesファイルを作成または更新します:

    *.png filter=lfs diff=lfs merge=lfs -text lockable
  2. 変更を有効にするには、.gitattributesファイルをリモートリポジトリにプッシュします。

ファイルタイプがロック可能として登録されると、自動的に読み取り専用としてマークされます。

LFSなしでファイルのロックを構成する

Git Large File Storageを使用せずに、ファイルタイプをロック可能として登録するには:

  1. .gitattributesファイルを手動で編集する:

    *.pdf lockable
  2. .gitattributesファイルをリモートリポジトリにプッシュします。

ファイルのロックとロック解除

排他的なファイルのロックでファイルをロックまたはロック解除するには:

  1. リポジトリディレクトリでターミナルウィンドウを開きます。

  2. 次のいずれかのコマンドを実行します:

    git lfs lock path/to/file.png
    git lfs unlock path/to/file.png
    git lfs unlock --id=123
    git lfs unlock --id=123 --force

ロックされたファイルを表示する

ロックされたファイルを表示するには:

  1. リポジトリでターミナルウィンドウを開きます。

  2. 次のコマンドを実行します:

    git lfs locks

    出力には、ロックされたファイル、ロックしたユーザー、およびファイルIDがリストされます。

GitLab UIの場合:

  • リポジトリファイルツリーには、Git Large File Storageで追跡されたファイルのLFSバッジが表示されます。
  • 排他的にロックされたファイルには、南京錠アイコンが表示されます。

排他的にロックされたファイルの名前を変更すると、ロックは失われます。ロックされた状態を維持するには、再度ロックする必要があります。

ファイルのロックと編集

ファイルをロックし、編集し、必要に応じてロックを解除するには:

  1. ファイルをロックします:

    git lfs lock <file_path>
  2. ファイルを編集します。

  3. オプション。完了したら、ファイルのロックを解除します:

    git lfs unlock <file_path>