コマンドライン Git

Gitはオープンソースの分散バージョン管理システムです。GitLabはGitの上に構築されています。

GitLabでは多くのGitオペレーションを直接行うことができます。しかし、複雑なマージ競合の修正やコミットのロールバックのような高度な作業にはコマンドラインが必要です。

Gitの初心者で、自分のプロジェクトで作業しながら学びたい場合は、最初のコミットの方法を学びましょう

Git コマンドのクイックリファレンスは、Git Cheat Sheet をダウンロードしましょう。

GitとGitLabで作業する利点の詳細については、こちらをご覧ください:

ローカルでの作業を視覚化するために、Git GUIアプリをインストールすることができます。

ターミナルを選択

コンピュータ上で Git コマンドを実行するには、ターミナル(コマンドプロンプト、コマンドシェル、コマンドラインとも呼ばれます)を開く必要があります。以下にいくつかのオプションを示します:

  • MacOSユーザーの場合:
    • 内蔵ターミナル⌘ コマンド +スペース を押し、terminalと入力します。
    • iTerm2Zshや Oh My Zshとインテグレーションして、カラーハイライトやその他の高度な機能を使うことができます。
  • Windowsユーザー向け:
    • 内蔵コマンドライン。Windowsのタスクバーで、検索アイコンを選択し、cmd と入力します。
    • PowerShell.
    • Git Bash。Git for Windowsに組み込まれています。
  • Linuxユーザー向け:

Git がインストールされていることを確認します。

Gitがすでにインストールされているかどうかは、ターミナルを開いて次のコマンドを実行することで確認できます:

git --version

Gitがインストールされていれば、次のように出力されます:

git version X.Y.Z

お使いのコンピューターがgit をコマンドとして認識しない場合は、Gitをインストールする必要があります。

Gitの設定

コンピュータからGitを使い始めるには、作品の作成者であることを示す認証情報を入力しなければなりません。ユーザー名とメールアドレスは、GitLabで使っているものと一致させてください。

  1. シェルにユーザー名を追加します:

    git config --global user.name "your_username"
    
  2. メールアドレスを追加します:

    git config --global user.email "your_email_address@example.com"
    
  3. 設定を確認するには、以下を実行してください:

    git config --global --list
    

    この--global オプションは、Git に対して、システムで何かをするときには常にこの情報を使うように指示 --globalします。--global 省略 --globalしたり--localを使ったりすると、その設定は現在のリポジトリにのみ適用されます。

Git がどのように設定を管理するのかについては、Git configuration documentation を参照ください。

リポジトリの選択

作業を始める前に、作業するリポジトリを選びましょう。GitLab.comや他のGitLabインスタンスでアクセス権限を持っているプロジェクトを使うことができます。

このページの例でリポジトリを使うには

  1. https://gitlab.com/gitlab-tests/sample-project/ にアクセスしてください。
  2. 右上にある「Fork」を選択します。
  3. フォークの名前空間を選択します。

プロジェクトはhttps://gitlab.com/<your-namespace>/sample-project/ で利用可能になります。

あなたがアクセスできるプロジェクトであれば、フォークすることができます。

リポジトリのクローン

リポジトリをクローンすると、リモートリポジトリのファイルがコンピューターにダウンロードされ、接続が作成されます。

この接続には認証情報を追加する必要があります。SSH または HTTPS を使用できます。SSH を推奨します。

SSHでクローン

SSHでクローンを作成する場合は、1回だけ認証を行います。

  1. SSHドキュメントの指示に従ってGitLabで認証してください。
  2. プロジェクトのランディングページに移動し、クローンを選択します。Clone with SSH の URL をコピーします。
  3. ターミナルを開き、ファイルをクローンしたいディレクトリに移動します。Git が自動的にリポジトリ名のフォルダを作成し、そこにファイルをダウンロードします。
  4. 次のコマンドを実行します:

    git clone git@gitlab.com:gitlab-tests/sample-project.git
    
  5. ファイルを表示するには、新しいディレクトリに移動します:

    cd sample-project
    

リポジトリをクローンして Visual Studio Code で直接開くこともできます。

HTTPSでクローン

コンピュータとGitLabの間でオペレーションを行うたびに認証を行いたい場合、HTTPSでクローンを作成します。

  1. プロジェクトのランディングページに移動し、クローンを選択します。HTTPSでクローン」のURLをコピーします。
  2. ターミナルを開き、ファイルをクローンしたいディレクトリに移動します。
  3. 次のコマンドを実行します。Git が自動的にリポジトリ名のフォルダを作成し、そこにファイルをダウンロードします。

    git clone https://gitlab.com/gitlab-tests/sample-project.git
    
  4. GitLab はあなたのユーザー名とパスワードを要求します。

    アカウントで二要素認証 (2FA) を有効にしている場合は、アカウントのパスワードを使うことはできません。その代わりに、次のいずれかの方法があります:

    2FAを有効にしていない場合は、アカウントのパスワードを使用してください。

  5. ファイルを表示するには、新しいディレクトリに移動します:

    cd sample-project
    
note
Windowsの場合、パスワードを何度も間違えて入力し、Access denied メッセージが表示された場合は、名前空間(ユーザー名またはグループ)をパスに追加してください:git clone https://namespace@gitlab.com/gitlab-org/gitlab.git.

トークンを使用したクローン

以下の場合、トークンを使用してHTTPSでクローンします:

  • 2FAを使用したい場合。
  • 1つまたは複数のリポジトリにスコープされた、取り消し可能なクレデンシャルのセットを持ちたい場合。

HTTPS 経由でのクローン作成時に、これらのトークンを使用して認証することができます:

git clone https://<username>:<token>@gitlab.example.com/tanuki/awesome_project.git

ローカルディレクトリをリポジトリに変換

ローカルフォルダを初期化して Git がリポジトリとして追跡できるようにすることができます。

  1. 変換したいディレクトリでターミナルを開きます。
  2. 次のコマンドを実行します:

    git init
    

    あなたのディレクトリに.git フォルダーが作成されます。このフォルダにはGitレコードと設定ファイルが含まれます。これらのファイルを直接編集してはいけません。

  3. Git があなたのファイルを正しいプロジェクトにアップロードできるように、リモートリポジトリへのパスを追加します。

リモートの

remote “を追加すると、GitLabのどのリモートリポジトリがあなたのコンピュータの特定のローカルフォルダに関連付けられているかをGitに伝えることができます。リモートは、Git にどこからプッシュするかプルするかを伝えます。

ローカルコピーにリモートを追加するには

  1. GitLabで、ファイルを保存するプロジェクトを作成します。
  2. このプロジェクトのホームページにアクセスし、下にスクロールして既存のフォルダをプッシュし、git remote add で始まるコマンドをコピーします。
  3. コンピューターで、初期化したディレクトリのターミナルを開き、コピーしたコマンドを貼り付け、enterを押します:

    git remote add origin git@gitlab.com:username/projectpath.git
    

ここまでできたら、ファイルをステージして GitLab にアップロードします。

リモートリポジトリを見る

リモートリポジトリを表示するには、次のように入力します:

git remote -v

-v フラグは verbose を表します。

プロジェクトの最新の変更点をダウンロード

プロジェクトの最新のコピーで作業するには、pull プロジェクトのクローンやプルを前回行ったとき以降のユーザーによるすべての変更を取得します。メインブランチのコードを取得するには、<name-of-branch>デフォルトブランチの名前に置き換えるか、現在作業しているブランチの名前に置き換えます。

git pull <REMOTE> <name-of-branch>

リポジトリをクローンする場合、REMOTE は通常origin になります。これはリポジトリのクローン元で、リモートサーバー上のリポジトリの SSH または HTTPS URL を示しています。<name-of-branch> は通常デフォルトブランチの名前ですが、既存のブランチでもかまいません。必要に応じて、名前付きリモートやブランチを追加作成できます。

Git がリモートリポジトリを管理する方法については、Git Remote のドキュメントを参照ください。

ブランチ

ブランチは、ブランチを作成した時点でのリポジトリ内のファイルのコピーです。自分のブランチでは、他のブランチに影響を与えることなく作業を進めることができます。変更内容をメインのコードベースに追加する準備ができたら、ブランチをデフォルトブランチmain などにマージします。

ブランチを使うのは、次のような場合です:

  • プロジェクトにコードを追加したいが、正しく動作するかどうかわからない場合。
  • プロジェクトで他の人と共同作業をしていて、自分の作業が混ざってしまうのが嫌な場合。

新しいブランチは、デフォルトブランチと区別するためにfeature ブランチと呼ばれることがあります。

ブランチの作成

機能ブランチを作成します:

git checkout -b <name-of-branch>

GitLab は問題を防ぐためにブランチの命名ルールを強制し、マージリクエストの作成を効率化するためにブランチの命名パターンを提供します。

ブランチへの切り替え

Git での作業はすべてブランチで行われます。ブランチを切り替えて、そのブランチでのファイルや作業の状態を見ることができます。

既存のブランチに移動するには

git checkout <name-of-branch>

例えば、main ブランチに変更する場合:

git checkout main

差分を見る

ローカルのステージされていない変更と、クローンまたはプルした最新バージョンとの差分を表示します:

git diff

変更のあるファイルを表示

ファイルやフォルダーを追加・変更・削除すると、Git はその変更内容を知ることができます。どのファイルが変更されたのかを調べるには

git status

ローカルの変更を追加してコミット

git status と入力すると、内部で変更されたファイルが赤く表示されます。これらの変更は、新規、変更、または削除されたファイルやフォルダです。

  1. コミットするファイルをステージするには

    git add <file-name OR folder-name>
    
  2. 追加したいファイルやフォルダーごとにステップ1を繰り返します。または、現在のディレクトリとサブディレクトリにあるすべてのファイルをステージするには、git add ..

  3. ファイルがステージングに追加されたことを確認します:

    git status
    

    ファイルは緑色のテキストで表示されます。

  4. ステージされたファイルをコミットします:

    git commit -m "COMMENT TO DESCRIBE THE INTENTION OF THE COMMIT"
    

ステージを作成し、すべての変更をコミットします。

ショートカットとして、1つのコマンドですべてのローカルの変更をステージに追加し、コミットすることができます:

git commit -a -m "COMMENT TO DESCRIBE THE INTENTION OF THE COMMIT"

GitLab.com に変更を送る

ローカルでの変更をすべてリモートリポジトリにプッシュします:

git push <remote> <name-of-branch>

たとえば、ローカルのコミットをorigin リモートのmain ブランチにプッシュします:

git push origin main

Git でリポジトリにプッシュできないこともあります。代わりに、強制的に更新しなければなりません。

ブランチのすべての変更を削除します。

トラックされたファイルのすべての変更を破棄するには

git checkout .

このアクションは、ファイルそのものではなく、ファイルへの変更を削除します。追跡されていない(新しい)ファイルは変更されません。

ステージングエリアに追加されたすべての変更のステージ解除

コミットされていないすべてのファイルをアンステージ(削除)します:

git reset

直近のコミットを取り消す

直近のコミットを取り消します:

git reset HEAD~1

このアクションでは、変更されたファイルやフォルダーはローカルリポジトリにステージされないまま残ります。

caution
Git のコミットは、すでにリモートリポジトリにプッシュしている場合は取り消すことはできません。コミットを取り消すこともできますが、慎重に作業することでそのような事態を避けるのが一番です。

Git によるさまざまな取り消し方については、Git Undoing Things ドキュメント を参照ください。

デフォルトブランチとのマージ

デフォルトブランチに変更を加える準備ができたら、機能ブランチをマージします:

git checkout <default-branch>
git merge <feature-branch>

GitLab では、変更をマージするにはコマンドラインではなくマージリクエストを使うのが一般的です。

フォークからアップストリームリポジトリへのマージリクエストを作成するには、フォークワークフローを参照ください。

コマンドラインからの Git の高度な使い方

より高度な Git のテクニックについては、Git rebase、force-push、merge conflicts を参照ください。

フォークしたリポジトリでの変更をアップストリームと同期させます。

ネームスペースにリポジトリのコピーを作成するには、リポジトリをフォークします。リポジトリのコピーに加えられた変更は、元のリポジトリと自動的に同期されません。プロジェクトを元のプロジェクトと同期させるには、元のリポジトリからpull を取得する必要があります。

元のリポジトリから変更を取り込むには、リモートリポジトリへのリンクを作成する必要があります。このリモートリポジトリをupstream と呼ぶのが一般的です。

これで、upstream<remote> として使用し、pull 新しい更新 を元のリポジトリから取得したり、origin を使用してローカルの変更をプッシュしたり、マージリクエストを作成したりできるようになります。