Sourcetreeユーザー必見!GitLab連携完全ガイド
はじめに
ソフトウェア開発の世界は常に進化しており、特に近年はGitOpsやDevOpsといった概念が広がりを見せています。これらは、バージョン管理システムを中心とした自動化されたワークフローを通じて、開発からデプロイメントまでのプロセスを効率化し、信頼性を高めることを目指します。その核となるのが、Gitのような分散型バージョン管理システムです。
多くの開発者がコマンドラインインターフェース(CLI)でGitを操作していますが、特に初心者やGUIツールを好むユーザーにとって、より直感的で視覚的に理解しやすいインターフェースを提供してくれるのがGUIクライアントです。その中でもSourcetreeは、多くのユーザーに支持されている高機能なGit/Mercurial GUIクライアントの一つです。
一方、リモートリポジトリホスティングサービスとして、GitHubやGitLab、Bitbucketなどが挙げられます。中でもGitLabは、単なるリポジトリ管理にとどまらず、CI/CDパイプライン、Issueトラッカー、Wiki、コンテナレジストリなど、DevOpsライフサイクル全体をカバーする多機能なプラットフォームとして、世界中の企業や開発チームに利用されています。
Sourcetreeの持つ直感的な操作性と、GitLabの持つ包括的なDevOps機能。この二つを連携させることで、開発ワークフローはよりスムーズかつ効率的になります。CLIに慣れていないチームメンバーも、複雑なGit操作を視覚的に理解しながらプロジェクトに参加でき、GitLabが提供するCI/CDやIssue管理といった機能を最大限に活用できるようになります。
この記事は、「Sourcetreeユーザー必見!GitLab連携完全ガイド」と題し、SourcetreeとGitLabを効果的に連携させるためのあらゆる側面を網羅的に解説します。Sourcetreeの基本的な使い方からGitLabの概要、そして両者を連携させる具体的な手順、認証方法、日々の開発ワークフローでの活用法、さらにCI/CD連携や応用的なヒント、トラブルシューティングに至るまで、約5000語にわたって詳細に説明します。
この記事を読むことで、以下のことが可能になります。
- SourcetreeとGitLabそれぞれの基本的な役割と機能を理解する。
- SourcetreeからGitLabリポジトリを操作するための具体的な連携設定方法を習得する。
- OAuth認証、個人アクセストークン、SSHキーといった様々な認証方法を理解し、適切に設定できるようになる。
- 日常の開発におけるGitLab連携のメリット(Issue管理、マージリクエストなど)を最大限に引き出す方法を知る。
- GitLab CI/CDとの連携の意義と、Sourcetreeからの利用方法を理解する。
- 連携時によく発生する問題のトラブルシューティング方法を身につける。
CLI操作に苦手意識がある方、Sourcetreeを使っているがGitLab連携をさらに深めたい方、チームでの開発効率を上げたい方など、多くのSourcetreeユーザーにとって有益な情報を提供できることを願っています。さあ、SourcetreeとGitLabの強力なタッグで、あなたの開発ワークフローを次のレベルへ引き上げましょう!
Sourcetreeの基本
Sourcetreeは、Atlassian社が提供するGitとMercurialのための無料GUIクライアントです。macOSとWindowsに対応しています。コマンドラインを使わずに、リポジトリの操作や状態を視覚的に把握できるのが最大の特徴です。
Sourcetreeとは何か(GUIクライアントの利点)
Gitは強力なバージョン管理システムですが、その操作は基本的にコマンドラインで行います。git clone
, git add
, git commit
, git push
, git pull
, git branch
, git merge
, git rebase
など、多くのコマンドとオプションが存在します。これらのコマンドを習得し、現在のリポジトリの状態や履歴を把握するのは、特に初心者には少し難しく感じられることがあります。
SourcetreeのようなGUIクライアントは、これらのGit操作をボタンクリックやドラッグ&ドロップといった直感的な方法で行えるようにします。また、リポジトリのコミット履歴、ブランチ構造、現在の変更などを視覚的に表示してくれるため、プロジェクトの状況を一目で理解しやすくなります。これにより、Gitの学習コストが下がり、操作ミスを減らすことにも繋がります。
主要機能の紹介
Sourcetreeは、Gitの基本的な操作から高度な操作まで、幅広い機能をGUIで提供します。
- リポジトリのクローン (Clone): リモートリポジトリをローカル環境にコピーします。GitLab上のリポジトリURLを指定して簡単にクローンできます。
- コミット (Commit): ローカルでの変更をリポジトリに記録します。ステージングエリアへの追加(
git add
に相当)やコミットメッセージの入力がGUIで行えます。 - プッシュ (Push): ローカルコミットをリモートリポジトリに送信します。特定のブランチを指定してプッシュできます。
- プル (Pull): リモートリポジトリの変更をローカルに取り込みます。フェッチ(Fetch)とマージ(Merge)を組み合わせた操作です。
- フェッチ (Fetch): リモートリポジトリの最新情報を取得しますが、ローカルのブランチにはマージしません。リモートの状況を確認するのに便利です。
- ブランチ操作 (Branch): 新しいブランチの作成、既存ブランチへの切り替え(Checkout)、ブランチの名前変更、削除などを行います。ブランチツリーが視覚的に表示されるため、複雑なブランチ構成も把握しやすいです。
- マージ (Merge): 異なるブランチの変更を統合します。マージコンフリクトが発生した場合も、Sourcetreeのツールを使って解消を試みることができます。
- リベース (Rebase): コミット履歴を整理するために使用します。
- スタッシュ (Stash): 現在の作業中の変更を一時的に退避させます。別の作業に移る際に便利です。
- タグ (Tag): 特定のコミットに重要なポイントとしてタグを付けます(例: リリースバージョン)。
- ログ/履歴表示 (Log/History): コミット履歴をグラフ形式で表示します。誰がいつ何をコミットしたか、どのブランチがどこを指しているかなどが視覚的に分かります。コミットの詳細(変更内容、作者、日時など)も確認できます。
- 差分表示 (Diff): ファイルの変更内容を比較表示します。ステージング前の変更、ステージング済みの変更、コミット間の差分などを確認できます。
- 対話的なリベース (Interactive Rebase): コミットの並べ替え、編集、削除、結合などをGUIで行えます。
- サブモジュール (Submodule): 他のリポジトリをプロジェクト内にサブディレクトリとして組み込む際の管理機能です。
インストールと基本的な設定
Sourcetreeは公式サイトから無料でダウンロードできます。
- Sourcetree公式サイト (https://www.sourcetreeapp.com/) へアクセスします。
- お使いのOS(WindowsまたはmacOS)を選択し、ダウンロードします。
- ダウンロードしたインストーラーを実行し、画面の指示に従ってインストールを進めます。インストール中にGitまたはMercurialがシステムにインストールされていない場合、Sourcetreeがこれらをインストールするか尋ねることがあります。通常はSourcetreeに任せてインストールするのが簡単です。
- インストール完了後、Sourcetreeを起動します。初期設定ウィザードが表示される場合があります。
- GitまたはMercurialの実行ファイルのパスを尋ねられたら、Sourcetreeが自動検出したパスを使用するか、必要に応じて手動で指定します。
- ユーザー名とメールアドレスの設定を求められます。これらはGitのコミット情報として使用されるため、正確に入力します。通常、GitLabアカウントで使用しているものと同じにするのが良いでしょう。
- 外部のGit/Mercurialホスティングサービス(GitLab, GitHub, Bitbucketなど)との連携設定をこの時点で行うこともできますが、後から「設定」メニューで追加することも可能です。今回はGitLab連携に焦点を当てているため、後述の「連携手順」で詳しく説明します。
Sourcetreeを使うメリット(直感的な操作、視覚的な理解)
Sourcetreeを使う最大のメリットは、前述の通り、複雑になりがちなGit操作やリポジトリの状態を視覚的に理解しやすくする点です。
- 操作の直感性: コマンドを覚える必要がなく、ボタンをクリックしたり、コンテキストメニューを使ったりすることで、ほとんどのGit操作が行えます。
- 状態の可視性: ブランチツリーやコミットログがグラフで表示されるため、どのブランチがどこから派生し、どのコミットを指しているかなどが一目で分かります。変更されたファイルリストや差分も分かりやすく表示されます。
- 操作ミスの軽減: コマンドのタイプミスによるエラーを防ぎ、GUIで操作を選択することで意図しない操作を防ぎやすくなります。特にマージやリベースといった複雑な操作では、GUIの補助が役立ちます。
- 学習コストの低減: Gitそのものの概念(コミット、ブランチ、マージなど)は理解する必要がありますが、具体的な操作方法の習得はGUIによって大幅に容易になります。
もちろん、CLIでの操作には、GUIでは難しい細かな制御や、スクリプトによる自動化といった利点もあります。SourcetreeはCLIを完全に置き換えるものではなく、CLIと組み合わせて使うことで、それぞれの利点を活かした効率的なワークフローを構築できます。特にチーム開発では、GUIによる可視性がメンバー間の状況共有にも役立ちます。
GitLabの基本
GitLabは、Gitリポジトリ管理を中心に据えつつ、ソフトウェア開発ライフサイクル全体をサポートするWebベースのDevOpsプラットフォームです。リポジトリホスティング機能に加えて、Issueトラッカー、CI/CDパイプライン、Wiki、コードレビュー機能、コンテナレジストリなど、開発に必要な多くのツールを統合して提供しています。
GitLabとは何か(DevOpsプラットフォームとしての特徴)
かつては、GitリポジトリはGitHubで、Issue管理はJiraで、CI/CDはJenkinsで、WikiはConfluenceで…といった具合に、開発プロセスごとに異なるツールを組み合わせて使うことが一般的でした。しかし、これらのツール間の連携設定やデータ同期は手間がかかり、ワークフローの分断を生む原因となることもありました。
GitLabは、これらの機能を一つのプラットフォームに統合することで、開発ワークフローのシームレス化を目指しています。「GitLab Flow」と呼ばれる独自のワークフローも提唱しており、バージョン管理を中心に、Issue、コードレビュー(マージリクエスト)、CI/CD、デプロイメント、モニタリングといった各ステージをスムーズに連携させることができます。この統合されたアプローチが、GitLabを単なるGitホスティングサービスではなく、DevOpsプラットフォームたらしめている所以です。
主要機能の紹介
GitLabが提供する主要な機能群は以下の通りです。
- リポジトリ管理 (Repository Management): Gitリポジトリのホスティング、ブランチ管理、タグ管理、ファイルブラウザ、コミット履歴表示など、基本的なGitホスティング機能。
- Issueトラッカー (Issue Tracker): タスク、バグ、機能要望などを管理するための機能。ラベル、マイルストーン、担当者割り当て、関連Issue、ボード表示などが可能。
- マージリクエスト (Merge Request – MR): コードレビューとブランチ統合のための機能。プルリクエスト(Pull Request)と同等の概念です。変更内容の比較、コメント交換、承認、CI/CDパイプラインの結果表示、マージ操作などがここで行われます。
- CI/CD (Continuous Integration/Continuous Delivery): コードの変更を自動的にビルド、テスト、検証、デプロイするための強力な機能。
.gitlab-ci.yml
ファイルでパイプラインを定義し、GitLab Runner上で実行します。 - Wiki: プロジェクトに関するドキュメントを管理するための機能。
- スニペット (Snippets): コードの断片を共有・管理するための機能。
- コンテナレジストリ (Container Registry): Dockerイメージなどを保存・管理するための機能。
- パッケージレジストリ (Package Registry): 各種プログラミング言語のパッケージ(npm, Maven, PyPIなど)を保存・管理するための機能。
- セキュリティスキャン (Security Scans): 静的解析、依存関係スキャン、コンテナスキャン、動的解析などをCI/CDパイプラインに組み込むことで、コードのセキュリティ脆弱性を早期に検出します。
- モニタリング (Monitoring): デプロイされたアプリケーションのパフォーマンスやエラーを監視するための機能。
- デプロイボード (Deploy Boards): 各環境にどのバージョンのアプリケーションがデプロイされているかを可視化する機能。
これらの機能が連携しているため、例えばIssueとマージリクエストを紐付けたり、マージリクエスト作成時に自動的にCI/CDパイプラインを実行したり、CI/CDの結果をマージリクエスト上で確認したりといった、効率的なワークフローが実現可能です。
クラウド版 (GitLab.com) とオンプレミス版 (GitLab CE/EE)
GitLabには、以下の2つの主要な提供形態があります。
- GitLab.com: GitLab社がホスト・管理するSaaS(Software as a Service)版です。アカウントを作成すればすぐに利用開始でき、インフラ管理の手間がありません。個人利用から大規模な組織まで幅広く利用されています。プランによって利用できる機能やリソース制限が異なります。
- オンプレミス版 (GitLab Community Edition / Enterprise Edition): ユーザー自身がサーバーにインストールして運用するセルフホスト版です。
- Community Edition (CE): オープンソース版で、基本的な機能が無料で利用できます。
- Enterprise Edition (EE): 有償版で、CEの全機能に加えて、大規模組織向けの高度な機能(LDAP連携、強化された権限管理、監査ログ、Geoレプリケーションなど)が提供されます。
Sourcetreeからの連携設定において、GitLab.comとセルフホスト版では認証方法の選択肢や、設定時に指定するURLなどが異なる場合があります。
プロジェクトとグループの概念
GitLabでは、リポジトリや関連する機能(Issue、CI/CD設定など)は「プロジェクト (Project)」という単位で管理されます。一つのプロジェクトは通常、一つのソフトウェアリポジトリに対応します。
複数のプロジェクトをまとめて管理したり、ユーザー権限をまとめて設定したりするために、「グループ (Group)」という概念があります。グループ内にさらにサブグループを作成することも可能です。チームや部署ごとにグループを作成し、その中にプロジェクトを配置するといった使い方が一般的です。
リポジトリのURLは、通常 https://gitlab.com/グループ名/プロジェクト名.git
または https://gitlab.com/ユーザー名/プロジェクト名.git
のようになります(セルフホスト版の場合はドメイン名が変わります)。
GitLabを使うメリット(オールインワン、堅牢なCI/CD)
GitLabを開発プラットフォームとして利用するメリットは多岐にわたりますが、特に以下の点が挙げられます。
- DevOps機能の統合: バージョン管理からCI/CD、セキュリティ、モニタリングまで、開発・運用のライフサイクル全体をカバーする機能が統合されており、ツール間の連携コストが低い。
- 堅牢なCI/CD: 高度に設定可能なCI/CDパイプラインはGitLabの大きな強みです。
.gitlab-ci.yml
をリポジトリに含めることで、コードとともにパイプラインをバージョン管理でき、Reproducibleなビルド・デプロイを実現できます。GitLab Runnerによる柔軟な実行環境構築も可能です。 - 強力なコードレビュー機能: マージリクエスト機能はレビュープロセスを効率化し、品質向上に貢献します。
- Issue管理との連携: Issueとコード変更(コミット、マージリクエスト)を密接に連携させることで、開発タスクの追跡が容易になります。
- セキュリティ機能: 静的・動的コード解析、依存関係スキャンなど、セキュリティ対策を開発プロセスに組み込みやすい機能を提供します。
GitLabはオープンソース(CE版)を提供しており、セルフホスト版の選択肢があることも、特定の要件(データガバナンス、カスタマイズなど)を持つ組織にとって大きなメリットとなります。
SourcetreeとGitLab連携のメリット
SourcetreeとGitLabを連携させることで、それぞれの強みを活かした効率的な開発ワークフローを構築できます。具体的なメリットを見ていきましょう。
GUIでGitLabリポジトリを簡単に操作できる
SourcetreeのGUIを通じて、GitLab上にホストされているリポジトリに対して、クローン、プッシュ、プル、ブランチ作成・切り替え、マージなどの基本的なGit操作を簡単に行えるようになります。コマンドラインに不慣れなユーザーでも、視覚的なインターフェースを通してこれらの操作を直感的に実行できます。
例えば、リモートの変更を取り込む際に、Sourcetreeはプルするコミットのリストや、ローカルリポジトリへの影響を視覚的に表示します。プッシュ時にも、ローカルとリモートの差分を確認しながら操作できます。これは、特に複数のリモートや複雑なブランチ構成を持つプロジェクトで役立ちます。
GitLabの各種機能(Issue、CI/CD結果など)へのアクセス向上
Sourcetree自体がGitLabの全機能をGUIで提供するわけではありませんが、連携設定を行うことで、SourcetreeからGitLabの関連ページへ簡単にアクセスできるようになります。
- リポジトリの閲覧: Sourcetreeでローカルリポジトリを選択した状態から、GitLab上のリポジトリページ(コードブラウザ、コミット履歴など)をブラウザで開くことができます。
- Issueトラッカーへのリンク: Sourcetreeの「リポジトリ」メニューやカスタムアクションなどを設定することで、GitLabのIssue一覧や特定のIssueページへ素早くアクセスできます。コミットメッセージにIssue番号を含めていれば、GitLab側で自動的にリンクが生成される機能も利用できます。
- マージリクエストへの導線: プッシュ後、GitLab上で新しいマージリクエストを作成する流れがスムーズになります。また、Sourcetreeの履歴表示から特定のコミットに関連するマージリクエストを追跡することも可能です(直接リンク表示は限定的ですが、カスタムアクションで補えます)。
- CI/CDステータスの確認: Sourcetreeの一部のバージョンや設定によっては、コミットやブランチの横にGitLab CI/CDパイプラインの実行結果(成功/失敗)のアイコンが表示されることがあります。これにより、コード変更がビルドやテストに合格したかどうかをGUI上で素早く確認できます。失敗している場合は、SourcetreeからGitLabのパイプライン詳細ページへ遷移して原因を調査するといったワークフローが可能になります。
チーム開発における可視性と効率性の向上
Sourcetreeの視覚的なリポジトリ表現は、チームメンバー間での状況共有に役立ちます。
- ブランチ戦略の理解: Git-FlowやGitHub Flowといったブランチ戦略を採用している場合、Sourcetreeのブランチツリー表示を見れば、現在の開発ライン、リリース準備中のライン、安定版などがどのように管理されているかを視覚的に理解できます。
- 変更履歴の追跡: コミットログを見れば、誰がいつどのような変更を加えたか、どの機能がどのブランチで開発されているかなどを容易に追跡できます。
- コンフリクトの早期発見と対応: 他のメンバーが行った変更をプルする際にコンフリクトが発生した場合、Sourcetreeはそれを明確に示し、解消作業を支援します。
GitLabのIssueやマージリクエストといったコラボレーション機能と組み合わせることで、タスクの割り当て、コードレビュー、変更の統合といったチーム開発のプロセス全体がより可視化され、効率的に進められるようになります。
コマンドライン操作が苦手なユーザーへの敷居を下げる
前述の通り、これがSourcetreeを使う最大の理由の一つです。GitLabを導入しても、Gitの基本的な操作がハードルとなり、開発への参加を躊躇するメンバーがいるかもしれません。Sourcetreeはそういったメンバーにもフレンドリーなインターフェースを提供し、プロジェクトへの貢献を容易にします。Gitの概念学習は必要ですが、具体的な操作方法の習得はGUIによって大幅に短縮されます。
認証設定の簡略化(OAuthなど)
Sourcetreeは、GitLabを含む主要なホスティングサービスとの連携を容易にするための認証方法を提供しています。特にOAuth認証を利用すれば、パスワードを直接入力することなく、セキュアに連携を設定できます。一度設定すれば、以降のGit操作(プッシュ、プルなど)で認証情報を繰り返し入力する必要がなくなり、手間が省けます。
これらのメリットを享受するために、次章ではSourcetreeとGitLabを連携させる具体的な手順を詳しく見ていきます。
SourcetreeとGitLabの連携手順
SourcetreeからGitLabリポジトリを操作するためには、SourcetreeにGitLabアカウントを登録し、認証情報を設定する必要があります。ここでは、最も推奨されるOAuth認証を中心に、個人アクセストークンやSSHキーを使用する方法も合わせて説明します。
事前の準備
- Sourcetreeのインストール: まだの場合は、前述の「Sourcetreeの基本」を参考にインストールしておきます。
- GitLabアカウントの準備: GitLab.comまたはセルフホスト版のGitLabインスタンスにアカウントを持っている必要があります。
- 認証情報の準備 (任意): OAuth認証を使う場合は不要ですが、代替方法として個人アクセストークンまたはSSHキーを事前に準備しておくとスムーズです。これらは連携設定のセクションで生成・設定手順を説明します。
連携設定方法
SourcetreeでGitLabアカウントを追加する方法はいくつかありますが、GUIのウィザードを使うのが最も簡単です。
- Sourcetreeを起動します。
- メニューバーから
ツール(Tools)
>オプション(Options)
を選択します。(macOSの場合はSourcetree
>設定(Preferences)
) - 開いた設定ウィンドウで
認証(Authentication)
タブを選択します。 - アカウントのリストの下にある
追加(Add)
ボタンをクリックします。 - 「ホストサービスをホストアカウントに追加」ウィンドウが表示されます。
- ホスティングサービス(Hosting Service): ドロップダウンリストから
GitLab
を選択します。 - 認証方法(Authentication): ここで認証方法を選択します。推奨は
OAuth
ですが、個人アクセストークン(Personal Access Token)
やSSHキー(SSH Key)
も選択可能です。以下、それぞれの方法について詳しく説明します。
- ホスティングサービス(Hosting Service): ドロップダウンリストから
連携設定方法1: OAuth認証 (推奨)
OAuthは、パスワードを共有することなく、あるサービス(Sourcetree)が別のサービス(GitLab)上のユーザーのリソースにアクセスするための認可メカニズムです。GitLabとの連携において最もセキュアで便利な方法として推奨されます。Sourcetreeから認証フローを開始し、GitLabのサイトで認可を行うことで連携が完了します。
- 前述の「ホストサービスをホストアカウントに追加」ウィンドウで、
- ホスティングサービス:
GitLab
- 認証方法:
OAuth
を選択します。
- ホスティングサービス:
- プロトコル(Protocol):
HTTPS
を選択します。(OAuthはHTTPS経由で行われます) - ホストURL(Host URL): GitLabインスタンスのURLを入力します。
- GitLab.comを利用している場合は、
https://gitlab.com
と入力します。 - セルフホスト版のGitLabを利用している場合は、そのインスタンスのURLを入力します(例:
https://your.gitlab.instance.com
)。
- GitLab.comを利用している場合は、
アカウントを更新されたパスワードで認証(Authenticate account with updated password)
ボタン(または「アカウントを認証(Authenticate account)」のようなボタン)をクリックします。- Sourcetreeがブラウザを起動し、GitLabの認証・認可ページを開きます。
- GitLabにログインしていない場合は、まずGitLabのユーザー名とパスワードでログインします。
- ログイン後、SourcetreeがあなたのGitLabアカウントへのアクセスを要求する画面が表示されます。Sourcetreeに許可する権限のリストが表示されます。通常、リポジトリの読み書きやプロジェクト情報の取得などが含まれます。
- 内容を確認し、
Authorize
または認可
ボタンをクリックします。 - 認可が成功すると、ブラウザに「Sourcetree連携が成功しました」のようなメッセージが表示され、自動的にSourcetreeに戻るか、またはSourcetreeに戻るように指示されます。
- Sourcetreeの設定ウィンドウに戻ると、アカウント情報が自動的に入力されています。通常、ユーザー名などが表示されます。
OK
をクリックして設定を保存します。
これで、SourcetreeはOAuthプロトコルを使ってGitLab APIと安全に連携できるようになります。リポジトリのクローンやプッシュ/プル操作時に、GitLabのパスワードを直接入力する必要はなくなります。OAuth認証情報はSourcetreeによって安全に管理されます。
連携設定方法2: 個人アクセストークン (Personal Access Token – PAT) を使用
OAuth認証が利用できない場合(例: 古いSourcetreeバージョン、特定のネットワーク制限など)や、スクリプトからの利用など、OAuth以外の方法が必要な場合に個人アクセストークン(PAT)を使用できます。PATは、ユーザーのパスワードの代わりにGitLab APIへのアクセスに使用できる文字列です。
GitLab側でのPAT生成手順:
- GitLabにウェブブラウザでログインします。
- ユーザーアイコンをクリックし、
Edit profile
>Access Tokens
(または設定
>アクセス トークン
) を選択します。 - 「Add a personal access token」セクションで以下の情報を入力します。
- Token name: このトークンを識別するための名前を入力します(例:
sourcetree-連携用トークン
)。 - Expires at: トークンの有効期限を設定します。セキュリティのため、必要以上に長い期間を設定しないようにしましょう。空白の場合は無期限になりますが、非推奨です。
- Scopes: このトークンに許可する権限を選択します。SourcetreeからのGit操作には、少なくとも
read_user
,read_api
,read_repository
,write_repository
あたりが必要になることが多いです。必要な権限は、行いたい操作によって異なります。広すぎる権限を与えないように注意が必要です。一般的なSourcetreeからの操作であれば、api
スコープがあれば多くの操作が可能です。
- Token name: このトークンを識別するための名前を入力します(例:
Create personal access token
ボタンをクリックします。- 生成されたトークンが表示されます。このトークンは一度しか表示されないため、必ず安全な場所にコピーして控えておいてください。 この画面を閉じると二度と表示できません。
SourcetreeでのPAT設定手順:
- 前述の「ホストサービスをホストアカウントに追加」ウィンドウで、
- ホスティングサービス:
GitLab
- 認証方法:
個人アクセストークン(Personal Access Token)
を選択します。
- ホスティングサービス:
- プロトコル(Protocol):
HTTPS
またはSSH
を選択します。PATは通常HTTPS経由で使用します。SSHを選択する場合は、SSHキーの設定が別途必要になります。ここではHTTPSを選択します。 - ホストURL(Host URL): GitLabインスタンスのURLを入力します(例:
https://gitlab.com
)。 - ユーザー名(Username): GitLabのユーザー名を入力します。
- パスワード(Password): 先ほどGitLabで生成した個人アクセストークン(PAT)をペーストします。
OK
をクリックして設定を保存します。
これで、Sourcetreeは指定したPATを使ってGitLabに認証されるようになります。PATはパスワードよりも権限を細かく設定できる点がメリットですが、漏洩した場合のリスクもあるため、厳重に管理する必要があります。有効期限を設定しておくことで、リスクを軽減できます。
連携設定方法3: SSHキーを使用
SSH(Secure Shell)は、暗号化された通信路を介してリモートサーバーに安全に接続するためのプロトコルです。Gitでは、HTTPSに加えてSSH経由でのリモートリポジトリ操作も可能です。SSHを使用する場合、パスワードの代わりに公開鍵暗号方式を用いた認証を行います。
SSHキーペアの生成手順:
まだSSHキーペアを持っていない場合は生成します。SourcetreeはSSHクライアントを内蔵している場合と、システムのSSHクライアントを使用する場合があります。Sourcetreeの設定を確認してください。通常、以下の手順で生成します。
- Sourcetreeで生成する場合: Sourcetreeの設定画面(ツール > オプション > 一般 または SSHクライアント)にキー生成機能がある場合があります。PuTTYgenなどが統合されていることが多いです。
- 外部ツールで生成する場合: コマンドライン (
ssh-keygen
) や他のツール(PuTTYgenなど)を使用します。- コマンドライン例:
ssh-keygen -t rsa -b 4096 -C "[email protected]"
- 生成時に保存先とパスフレーズを尋ねられます。パスフレーズはキーを保護するためのパスワードです。設定することを強く推奨します。
- 生成されるのは公開鍵 (
.pub
拡張子が付くファイル) と秘密鍵のペアです。秘密鍵は厳重に管理し、誰にも渡さないでください。
- コマンドライン例:
公開鍵のGitLabへの登録手順:
- 生成したSSH公開鍵ファイル(例:
id_rsa.pub
)をテキストエディタで開き、内容をすべてコピーします。ssh-rsa AAAA...
で始まり、メールアドレスなどで終わる文字列です。 - GitLabにウェブブラウザでログインします。
- ユーザーアイコンをクリックし、
Edit profile
>SSH Keys
(または設定
>SSH キー
) を選択します。 - 「Add an SSH key」セクションで以下の情報を入力します。
- Key: コピーした公開鍵の内容をペーストします。
- Title: このキーを識別するための名前を入力します(例:
My Laptop Sourcetree SSH Key
)。 - Expires at: キーの有効期限を設定します。
Add key
ボタンをクリックします。
SourcetreeでのSSH設定手順:
- 前述の「ホストサービスをホストアカウントに追加」ウィンドウで、
- ホスティングサービス:
GitLab
- 認証方法:
SSHキー(SSH Key)
を選択します。
- ホスティングサービス:
- プロトコル(Protocol):
SSH
を選択します。 - ホストURL(Host URL): GitLabインスタンスのSSHクローンURLに使用されるドメイン名を入力します。
- GitLab.comの場合は
gitlab.com
と入力します。 - セルフホスト版の場合は、そのインスタンスのSSHドメイン名を入力します(例:
your.gitlab.instance.com
)。
- GitLab.comの場合は
- SSHクライアント(SSH Client): Sourcetreeが使用するSSHクライアントを選択します。Sourcetree内蔵のクライアント(PuTTY/OpenSSH)またはシステムのOpenSSHを選択できます。通常はデフォルト設定で問題ありません。
- SSHキー(SSH Key): 使用する秘密鍵ファイルのパスを指定します。
OK
をクリックして設定を保存します。
SSHキーにパスフレーズを設定した場合、Sourcetreeでの最初のSSH接続時(クローン、プッシュ、プルなど)にパスフレーズの入力を求められます。キーペアとパスフレーズが正しく設定されていれば、以降はパスフレーズの入力を省略できるSSHエージェントの使用を促されることがあります。SSH認証はHTTPS+PATよりも一般的に推奨される認証方法の一つです。
既存リポジトリのクローン
SourcetreeにGitLabアカウントを連携設定したら、GitLab上にある既存のリポジトリをローカルにクローンできます。
- Sourcetreeを起動します。
- メニューバーから
ファイル(File)
>新規/クローン(New/Clone)
を選択します。または、Sourcetreeの起動画面で「リポジトリをクローン/新規作成」をクリックします。 - 「ソースパス/URL(Source Path / URL)」フィールドに、GitLabリポジトリのクローンURLを入力します。
- GitLab上のプロジェクトページにアクセスし、「Clone」ボタンをクリックすると、HTTPSまたはSSHのURLが表示されます。どちらのURLを使うかは、前述のSourcetreeでの認証設定で選択したプロトコル(HTTPS+OAuth/PAT または SSH)に合わせてください。
- HTTPS URLの例:
https://gitlab.com/group_name/project_name.git
- SSH URLの例:
[email protected]:group_name/project_name.git
- HTTPS URLの例:
- ヒント: Sourcetreeの設定でGitLabアカウントを登録している場合、「ソースパス/URL」フィールドにGitLabインスタンスのURL(例:
https://gitlab.com
)を入力すると、そのアカウントに関連付けられたリポジトリのリストが表示され、そこから選択してクローンすることも可能です。これは多数のリポジトリをクローンする場合に非常に便利です。
- GitLab上のプロジェクトページにアクセスし、「Clone」ボタンをクリックすると、HTTPSまたはSSHのURLが表示されます。どちらのURLを使うかは、前述のSourcetreeでの認証設定で選択したプロトコル(HTTPS+OAuth/PAT または SSH)に合わせてください。
- 「保存先パス(Destination Path)」に、ローカルPC上のリポジトリを保存したいディレクトリパスを指定します。
- 「名前(Name)」は、Sourcetree上で表示されるリポジトリ名です。デフォルトでプロジェクト名が入りますが、任意に変更可能です。
クローン(Clone)
ボタンをクリックします。
Sourcetreeは指定されたURLからリポジトリをクローンし、ローカルに作業コピーを作成します。クローン完了後、Sourcetreeのウィンドウにそのリポジトリが開かれます。
新規リポジトリの作成(SourcetreeからGitLabへ)
新しいプロジェクトを開始し、Sourcetreeでローカルリポジトリを作成してから、後からGitLabにリモートリポジトリとして追加することも可能です。
- Sourcetreeを起動します。
- メニューバーから
ファイル(File)
>新規/クローン(New/Clone)
を選択します。 - 「リポジトリをクローン/新規作成」ウィンドウで、左側の
新しいリポジトリを作成(Create New Repository)
を選択します。 - リポジトリの種類を
Git
に設定します。 - 「保存先パス(Destination Path)」に、ローカルPC上のリポジトリを作成したいディレクトリパスを指定します。空のディレクトリを指定することを推奨します。
作成(Create)
ボタンをクリックします。
これでローカルリポジトリが作成されましたが、まだGitLabとは関連付けられていません。次に、このローカルリポジトリのプッシュ先としてGitLab上のリモートリポジトリを設定します。
- GitLabにウェブブラウザでログインし、新しい空のプロジェクトを作成します。このとき、READMEや
.gitignore
ファイル、ライセンスなどを追加しない(Initialize repository with…のチェックを外す)ことを推奨します。後からSourcetreeでプッシュするからです。 - 作成したGitLabプロジェクトのページで、リポジトリのクローンURL(HTTPSまたはSSH)をコピーします。
- Sourcetreeに戻り、作成したローカルリポジトリを開きます。
- 左側のナビゲーションツリーで「REMOTE」の横にある
設定(Settings)
ボタン(歯車アイコン)をクリックします。 - リポジトリ設定ウィンドウが開いたら、左側の
リモート(Remotes)
を選択します。 - リストの下にある
追加(Add)
ボタンをクリックします。 - 「リモートを追加」ウィンドウで以下の情報を入力します。
- リモート名(Remote name): 通常は
origin
と入力します。これはリモートリポジトリを指すエイリアスのようなものです。 - URL/パス(URL / Path): 先ほどGitLabでコピーしたリモートリポジトリのクローンURLをペーストします。
- 認証情報が必要な場合は、Sourcetreeに登録済みのGitLabアカウントを選択するか、手動で入力します。SourcetreeにGitLabアカウントを登録していれば、自動的に認証情報が関連付けられることがあります。
- リモート名(Remote name): 通常は
OK
をクリックしてリモート設定を保存します。- リポジトリ設定ウィンドウも
OK
で閉じます。 - Sourcetreeのメインウィンドウに戻ります。ローカルリポジトリにコミットがあれば、ツールバーの
プッシュ(Push)
ボタンが有効になります。 プッシュ
ボタンをクリックします。プッシュ先のリモートリポジトリ
(通常origin
が選択されています)と、プッシュしたいブランチ(通常main
やmaster
)を選択します。プッシュ
ボタンをクリックして実行します。
これで、ローカルリポジトリの内容がGitLab上のリモートリポジトリに送信されました。以降は、このリモートに対して通常通りプッシュ/プル操作が行えます。
日常的な開発ワークフローにおける連携活用
SourcetreeとGitLabの連携は、日々の開発作業をよりスムーズにし、チームとの連携を強化するのに役立ちます。ここでは、一般的な開発ワークフローにおける連携の活用法を見ていきます。
Issue駆動開発
多くのチームは、Issueトラッカーを使ってタスクやバグを管理します。GitLabのIssueトラッカーは、この目的のために非常に強力です。Sourcetreeと連携させることで、Issueに基づいた開発ワークフローが効率化されます。
- GitLabでIssueを作成・管理: ウェブブラウザでGitLabにアクセスし、プロジェクトのIssueボードやリストを使って新しいタスク(Issue)を作成します。担当者、ラベル、マイルストーンなどを設定します。
- Sourcetreeから対応ブランチを作成: Issueに対応するための新しいブランチを作成します。良いプラクティスとして、ブランチ名にIssue IDを含めると、どのブランチがどのIssueに対応しているか分かりやすくなります(例:
feature/123-add-user-profile
やbugfix/456-fix-login-error
)。Sourcetreeでブランチ(Branch)
ボタンをクリックし、新しいブランチ名を入力して作成します。このとき、元となるブランチ(通常main
やdevelop
)を選択します。 - コーディングとコミット: 作成したブランチで作業を進め、変更をコミットします。
- コミットメッセージにIssue参照を含める: コミットメッセージに
Fixes #123
やCloses #456
のようにIssue参照を含めると、GitLab側でこのコミットが関連Issueに自動的にリンクされ、マージ時にIssueを自動的にクローズさせるといった設定が可能になります。これはIssueとコード変更のトレーサビリティを高める上で非常に重要です。Sourcetreeのコミット画面でメッセージを入力する際に、意識的にIssue参照を含めるようにします。 - Sourcetree上でIssueトラッカーへのリンクを確認: Sourcetree自体にGitLabのIssueリストを直接表示する機能は標準では限定的ですが、カスタムアクションを設定することで、選択中のリポジトリのIssueリストページをブラウザで開くようにできます。これは後述の応用技で説明します。
フィーチャーブランチワークフロー
Git開発で広く採用されているフィーチャーブランチワークフロー(またはGitHub Flow、GitLab Flow)は、Sourcetreeで非常にスムーズに実行できます。
- 最新のコードを取得: 作業を開始する前に、Sourcetreeで
プル(Pull)
ボタンをクリックし、リモートリポジトリの最新の変更をローカルに取り込みます。これにより、他のメンバーの変更とコンフリクトするリスクを減らせます。 - フィーチャーブランチの作成: 開発対象の機能やタスクごとに新しいブランチを作成します。通常、
main
やdevelop
ブランチから派生させます。Sourcetreeのブランチ(Branch)
ボタンまたは履歴表示から右クリックで簡単に作成できます。 - 作業とコミット: 作成したフィーチャーブランチに切り替え(チェックアウトし)、コード変更を行います。変更が一段落したら、Sourcetreeで変更されたファイルを確認し、ステージングエリアに追加(
git add
)して、コミットメッセージとともにコミット(git commit
)します。コミットは作業の節目ごとに頻繁に行うことが推奨されます。 - GitLabへのプッシュ: ローカルでコミットした変更をGitLab上のリモートリポジトリに送信します。Sourcetreeの
プッシュ(Push)
ボタンをクリックし、作成したフィーチャーブランチを選択してプッシュします。初めてそのブランチをプッシュする場合は、アップストリーム設定(リモートのどのブランチと紐付けるか)を自動で行うか尋ねられることがあります。
マージリクエスト (Merge Request / Pull Request) の活用
フィーチャーブランチでの開発が完了したら、その変更をメインの開発ブランチ(例: develop
または main
)に統合するために、GitLabでマージリクエストを作成します。これはコードレビューを行い、変更を承認するための主要な手段です。
- Sourcetreeでプッシュ後、GitLab上でマージリクエストを作成: フィーチャーブランチをGitLabにプッシュすると、GitLabのUI上にそのブランチからのマージリクエスト作成を促すメッセージが表示されることがよくあります。これをクリックするか、GitLabの「マージリクエスト」ページから手動で新しいマージリクエストを作成します。Sourcetree自体は直接マージリクエストを作成する機能を持っていませんが、プッシュ成功後にGitLabへのリンクを表示する場合があります。
- コードレビュー(GitLab上で実施): 作成されたマージリクエスト上で、チームメンバーがコードの変更内容を確認し、コメントを付けたり、質問をしたりします。Sourcetreeで確認した差分表示やコミット履歴と突き合わせながらレビューを進めると効果的です。
- Sourcetreeでの修正・追記: レビューのフィードバックに基づいてコードを修正したり、追加のコミットが必要になったりした場合、Sourcetreeで作業ブランチのコードを修正し、コミット&プッシュします。これらの新しいコミットは自動的に既存のマージリクエストに追加されます。
- CI/CDとの連携(MRごとに自動実行): GitLab CI/CDは、通常、新しいコミットがプッシュされたり、マージリクエストが作成・更新されたりするのをトリガーに自動実行されるように設定されます。ビルド、テスト、静的解析などが実行され、その結果がマージリクエストのページに表示されます。レビュー担当者は、CI/CDの結果(パイプラインが成功したかどうか)を確認してから承認できます。Sourcetreeから直接CI/CDのログを見ることはできませんが、マージリクエストページへのリンクをたどることで確認できます。
- マージ: コードレビューが完了し、CI/CDパイプラインが成功し、必要な承認が得られたら、マージリクエストをマージします。これは通常GitLabのウェブUI上で行います。マージ方法(Merge commit, Squash commits, Rebase)を選択できます。
- Sourcetreeでの最新コードのプル・フェッチ: マージが完了したら、Sourcetreeで開発ブランチ(マージ先となったブランチ、例:
develop
やmain
)に切り替え、リモートの最新の状態(マージされた変更を含む)をプルします。プル(Pull)
またはフェッチ(Fetch)
後にマージ(Merge)
操作を行います。Sourcetreeはリモートブランチの変更を視覚的に表示してくれるため、マージ後の状態を把握しやすいです。
コンフリクト解消
複数の開発者が同じファイルを同時に変更し、それらの変更を統合(プルやマージ)しようとした際に発生するのがマージコンフリクトです。Sourcetreeはコンフリクトの発生を検出し、解消を支援するツールを提供します。
- コンフリクトの発生: Sourcetreeでプルまたはマージを実行した際に、コンフリクトが発生すると、ステータス表示エリアに「コンフリクトが発生しました」といったメッセージが表示され、コンフリクトしているファイルがリストアップされます。
- Sourcetreeのコンフリクト解消ツールの使用: コンフリクトしているファイルを右クリックし、コンテキストメニューから
コンフリクト解消(Resolve Conflicts)
を選択します。Sourcetreeは、内蔵のツールまたは設定済みの外部マージツール(Beyond Compare, KDiff3, P4Mergeなど)を使用して、コンフリクトしているファイルを開きます。 - 手動での解消: マージツールを使って、自分の変更と相手の変更を見比べながら、最終的に残したいコードを決定します。
<<<<<<<
,=======
,>>>>>>>
といったGitのコンフリクトマーカーを手動で編集して解消することも可能です。 - Sourcetreeでのマーク付け: コンフリクトを解消したら、そのファイルに対する解消作業が完了したことをGitに伝える必要があります。Sourcetreeのステータス表示エリアで、コンフリクト解消済みのファイルを右クリックし、
コンフリクト解消済みとしてマーク(Mark as Resolved)
を選択します。 - コミット: 全てのコンフリクトファイルが解消済みとしてマークされたら、マージ(またはプル)操作を完了させるためのコミットを行います。Sourcetreeは自動的にコミットメッセージを生成しますが、必要に応じて編集できます。
SourcetreeのGUIとマージツールを組み合わせることで、コンフリクトしている箇所を視覚的に確認しながら、比較的容易に解消作業を進めることができます。GitLab上でのマージリクエストに対しても、ローカルでコンフリクトを解消してプッシュし直す、といった対応が可能です。
タグとリリースの管理
タグは、特定のコミットに永続的な参照(通常はリリースバージョンなど)を付けるために使用されます。SourcetreeとGitLabの両方でタグを管理できます。
- Sourcetreeでのタグ作成: リリースポイントとなるコミットを選択(履歴表示で)し、右クリックして
このコミットにタグを付ける(Tag this commit)
を選択します。タグ名(例:v1.0.0
)と必要に応じてメッセージを入力します。軽量タグと注釈付きタグを選択できます。注釈付きタグが推奨されます。 - GitLabへのタグのプッシュ: 作成したタグはローカルにのみ存在します。リモートのGitLabにもタグを共有するには、プッシュ操作が必要です。Sourcetreeの
プッシュ(Push)
ボタンをクリックし、表示されるウィンドウで「タグ(Tags)」のセクションを確認します。プッシュしたいタグにチェックを入れてプッシュします。 - GitLabでのタグ表示とリリースの関連付け: GitLabでは、プッシュされたタグがプロジェクトの「Tags」ページに表示されます。GitLabの「Releases」機能を使うと、特定のタグをリリースとして扱い、リリースノートやバイナリファイルなどを関連付けることができます。Sourcetreeから直接リリースを作成・管理する機能はありませんが、タグをプッシュすることでGitLabでのリリース管理のトリガーとすることができます。
GitLab CI/CDとの連携
GitLabのCI/CD機能は非常に強力で、DevOpsワークフローの自動化に不可欠です。Sourcetree自体がCI/CDパイプラインを実行したり設定したりするわけではありませんが、Sourcetreeでのコミットやプッシュ操作がGitLab CI/CDのトリガーとなり、その結果をGitLab上で確認するといった連携が重要になります。
CI/CDパイプラインの概要
CI(Continuous Integration:継続的インテグレーション)は、開発者が頻繁にコード変更を共有リポジトリにマージし、自動的にビルドとテストを行うプラクティスです。CD(Continuous Delivery/Deployment:継続的デリバリー/デプロイメント)は、CIで検証されたコード変更を、迅速かつ信頼性高くステージング環境や本番環境にリリース可能、あるいは自動的にデプロイするプラクティスです。
GitLab CI/CDは、リポジトリに含まれる .gitlab-ci.yml
ファイルでパイプラインを定義することで、これらの自動化を実現します。パイプラインは、ステージ(Stage)とジョブ(Job)から構成されます。ステージはジョブの実行順序を定義し、同じステージ内のジョブは並行して実行できます。
.gitlab-ci.yml
の役割
.gitlab-ci.yml
は、GitLab CI/CDパイプラインの設計図となるYAML形式のファイルです。このファイルには、どのイベント(プッシュ、タグ作成、スケジュールなど)でパイプラインを実行するか、パイプラインがどのようなステージを持ち、各ステージでどのようなジョブ(コマンド実行、スクリプト実行など)を行うか、などが記述されます。
例えば、プルリクエストが作成されたら、自動的にコードをビルドし、単体テストを実行し、静的解析を行う、といった一連のタスクをこのファイルに定義します。.gitlab-ci.yml
もコードと一緒にバージョン管理されるため、パイプラインの変更履歴も追跡可能です。
Sourcetree上でのCI/CDステータスの確認
Sourcetreeは、GitLab CI/CDパイプラインの実行そのものをGUIで操作する機能は持っていません。しかし、Sourcetreeの履歴表示において、特定のコミットやブランチに関連付けられたCI/CDパイプラインのステータス(成功、失敗、実行中など)を示すアイコンが表示されることがあります。
このアイコンを確認することで、ローカルでのコミットや、プッシュした変更が、リモートのCI/CDパイプラインを正常に通過したかどうかを素早く把握できます。もし失敗している場合は、そのアイコンをクリックしたり、コンテキストメニューを使ったりすることで、GitLab上の該当するパイプラインの詳細ページへブラウザで遷移できる場合があります。これにより、失敗の原因(ビルドエラー、テスト失敗など)をGitLab上で調査することが可能になります。
コミット・プッシュがトリガーとなる自動化の恩恵
Sourcetreeでコード変更をコミットし、GitLabにプッシュするという日常的な操作自体が、GitLab CI/CDパイプラインを自動的に起動するトリガーとなります。
- フィーチャーブランチへのプッシュ: 開発途中の変更をプッシュするたびに、Feature Branch Pipelineが実行され、コードの品質やテスト結果が継続的に検証されます。これにより、問題を早期に発見し、修正することができます。
- マージリクエストの作成/更新: マージリクエストが作成されたり、新しいコミットが追加されて更新されたりすると、通常、CI/CDパイプラインが実行され、その変更をターゲットブランチにマージした場合の整合性やテスト結果が検証されます。これはコードレビューの重要な一部となります。
main
/master
ブランチへのマージ: コードレビューとCI/CDパイプラインの成功を経て、フィーチャーブランチがメインブランチにマージされると、プロダクション環境へのデプロイなどを含むより広範なCDパイプラインがトリガーされることがあります。
Sourcetreeユーザーは、普段通りのGit操作を行うだけで、背後でGitLab CI/CDによる自動化の恩恵を受けることができます。コミットとプッシュの粒度を適切に保つことが、CI/CDの効果を最大化する上で重要になります。
ローカルでのテストとCIの連携(pre-commitフックなど)
GitLab CI/CDで実行されるテストやチェックの一部は、ローカル環境でも実行可能です。pre-commit
のようなGitフックを利用することで、コミット前に自動的にコードフォーマットのチェックやリンターの実行などを行うことができます。SourcetreeはGitフックをサポートしており、ローカルリポジトリの .git/hooks
ディレクトリに配置されたスクリプトは、該当するGitイベント(コミット前など)で実行されます。
ローカルでCIパイプラインの一部をシミュレーションすることで、プッシュしてからGitLab CI/CDで失敗するまでの時間を節約し、開発サイクルを高速化できます。GitLab CI/CDで実行されるテストスクリプトなどをローカルでも簡単に実行できるように整備しておくと、Sourcetreeを使ったローカル開発の効率がさらに向上します。
SourcetreeとGitLab連携の応用技とヒント
基本的な連携設定やワークフローに慣れてきたら、さらにSourcetreeとGitLabの連携を深めるための応用的な機能やヒントを活用してみましょう。
カスタムアクションの活用
Sourcetreeの「カスタムアクション(Custom Actions)」機能を使うと、Sourcetreeのメニューやコンテキストメニューに独自のコマンドを追加できます。これを利用して、SourcetreeからGitLab上の関連ページへ直接アクセスするショートカットを作成すると非常に便利です。
例えば、以下のようなカスタムアクションを設定できます。
- GitLabリポジトリページを開く: 選択中のリポジトリのメインページをブラウザで開きます。
- GitLabのIssueリストを開く: 選択中のリポジトリのIssueリストページをブラウザで開きます。
- GitLabのマージリクエストリストを開く: 選択中のリポジトリのマージリクエストリストページをブラウザで開きます。
- 現在のブランチに関連するマージリクエストを開く: 現在チェックアウトしているブランチに関連するオープンなマージリクエスト(もしあれば)を検索して開く、といった少し高度なことも、GitLab APIやGitLab CLIツールと組み合わせて可能です。
カスタムアクションの設定例 (Windows):
- Sourcetreeのメニューから
ツール(Tools)
>オプション(Options)
を選択します。 - 「カスタムアクション(Custom Actions)」タブを選択します。
追加(Add)
ボタンをクリックします。- アクションの設定を入力します。
- メニューキャプション(Menu Caption): Sourcetreeのメニューに表示される名前(例:
Open GitLab Repository
) - 実行スクリプト(Run Script): ウェブブラウザの実行ファイルパス(例:
C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe
またはC:\Program Files\Google\Chrome\Application\chrome.exe
)。環境によって異なります。 - 引数(Parameters): 開きたいGitLabページのURLを指定します。Sourcetreeの組み込み変数を使用できます。
- リポジトリページの場合:
{remote:origin:url}/-/tree/{branch}
または{remote:origin:url}
- Issueリストの場合:
{remote:origin:url}/-/issues
- マージリクエストリストの場合:
{remote:origin:url}/-/merge_requests
{remote:origin:url}
は、リモートorigin
に設定されているURLに展開されます。必要に応じて{branch}
で現在のブランチ名を取得することも可能です。
- リポジトリページの場合:
- メニューを表示する場所(Show this item in): コンテキストメニュー(ファイルステータス、履歴、ブランチなど)やツールメニューなど、アクションを表示したい場所を選択します。
- メニューキャプション(Menu Caption): Sourcetreeのメニューに表示される名前(例:
OK
をクリックして保存します。
これで、設定した場所に新しいメニュー項目が追加され、クリックすると指定したGitLabページがブラウザで開くようになります。
GitLab CLIなどの外部ツールとの連携:
GitLab CLI (glab) のようなツールをインストールしている場合、カスタムアクションからこれらのコマンドを実行して、GitLab上の情報を取得したり、簡単な操作を行ったりすることも可能です。例えば、現在のIssueをCLIで取得して表示する、といったアクションが考えられます。
リポジトリマネージャー機能
Sourcetreeは複数のリポジトリをまとめて管理するための「リポジトリマネージャー(Repository Manager)」機能を提供します。GitLab上で複数のプロジェクトやグループに参加している場合に便利です。
リポジトリマネージャーには、GitLabアカウントを連携設定していれば、そのアカウントに関連付けられたリポジトリが一覧表示されることがあります。ここからクローンしたいリポジトリを選択したり、既存のローカルリポジトリを登録したりできます。
グループごとにリポジトリをフォルダ分けして表示するといった整理も可能なので、多数のプロジェクトに関わっている場合でも目的のリポジトリに素早くアクセスできます。
認証エージェントの利用
OAuthやPATを設定した場合でも、Gitの操作時に認証が必要になる場面があります。SSH認証でパスフレーズを設定した場合も同様です。これらの認証情報の入力を省略するために、認証エージェント(credential managerやssh-agent)の利用が有効です。
- Git Credential Manager: HTTPS接続の場合、Git Credential Managerをシステムにインストールしておくと、Sourcetreeがこれを利用して認証情報を安全に保存・管理し、繰り返し入力を不要にすることができます。GitLabのPATやOAuthトークンを管理するのに役立ちます。
- SSH Agent: SSH接続でパスフレーズ付きの秘密鍵を使用する場合、SSH Agentを起動しておき、秘密鍵をエージェントに追加しておくことで、セッション中はパスフレーズの入力を省略できます。SourcetreeがシステムのSSH Agentを利用するように設定できます。
これらのエージェントは通常システムレベルで動作するため、Sourcetreeだけでなく、コマンドラインからのGit操作や他のSSHクライアントでも認証情報を共有して利用できるメリットがあります。
パフォーマンスチューニング
非常に大規模なリポジトリや、大量のコミット履歴を持つリポジトリを扱う場合、Sourcetreeの動作が重くなることがあります。Sourcetreeのパフォーマンス設定を見直すことで、改善できる場合があります。
- フェッチ頻度: Sourcetreeはデフォルトで定期的にリモートリポジトリの最新情報をフェッチしようとします。頻繁なフェッチはシステムリソースを消費するため、必要に応じてフェッチ間隔を調整したり、自動フェッチを無効にして手動で実行したりすることを検討します。(設定 > 一般 > リモートへの自動フェッチ)
- 表示設定: 履歴グラフの表示オプション(例えば、全てのブランチを表示するか、特定のブランチのみにするかなど)を調整することで、描画負荷を減らせる場合があります。
- Sourcetreeのキャッシュクリア: Sourcetreeの一時ファイルやキャッシュが蓄積されて動作に影響を与えることがあります。Sourcetreeを再起動したり、設定ファイルやキャッシュファイルを保存しているディレクトリ(OSによって場所が異なります)を確認したりして、不要なファイルを削除することで改善する場合があります。
これらの設定は、Sourcetreeのオプション画面や、リポジトリごとの設定(リポジトリ > リポジトリ設定)で変更可能です。
トラブルシューティング
SourcetreeとGitLabの連携中に発生しうる一般的な問題とその解決策について説明します。
認証エラー(403 Forbidden, authentication failedなど)
GitLabリポジトリに対してプッシュやプル、クローンなどの操作を行う際に、以下のような認証エラーが発生することが最も多い問題です。
remote: HTTP Basic: Access denied
fatal: Authentication failed for 'https://gitlab.com/...'
fatal: Could not read from remote repository.
(SSHの場合)Permission denied (publickey).
(SSHの場合)HTTP 403 Forbidden
原因と解決策:
- 無効な認証情報: Sourcetreeに登録しているユーザー名/パスワード、個人アクセストークン、またはSSHキーが間違っている、有効期限が切れている、権限がないなどの可能性があります。
- Sourcetreeの設定(ツール > オプション > 認証)で、該当するGitLabアカウントを選択し、「編集」または「認証を更新」ボタンをクリックして、認証情報を再確認・更新してください。特にパスワードやPATは有効期限を確認しましょう。
- OAuth認証を使っている場合は、GitLab側でSourcetreeへの認可を取り消して(GitLabのユーザー設定 > Applications)、Sourcetree側でアカウントを一度削除し、再度OAuthで連携設定をやり直してみてください。
- PATを使っている場合は、GitLabでPATを再生成し、Sourcetreeの設定で更新してください。PATのスコープが適切かどうかも確認が必要です(リポジトリの読み書き権限など)。
- SSHを使っている場合は、後述のSSH接続の問題を確認してください。
- リポジトリへのアクセス権限不足: ログインはできているが、操作対象のリポジトリに対して、あなたのユーザーに適切な権限(Reporter, Developer, Maintainerなど)が付与されていない可能性があります。GitLabのプロジェクトメンバー設定を確認してください。
- ホストURLの間違い: Sourcetreeの設定で指定したホストURLや、クローンしようとしているリポジトリURLが間違っている可能性があります。GitLabのプロジェクトページで正確なURLを確認してください。
- 二要素認証(2FA)の設定: GitLabで二要素認証を有効にしている場合、パスワード認証ではプッシュ/プルができないことがあります。この場合は、個人アクセストークン(PAT)を使用するか、SSH認証を使用する必要があります。PATを生成する際に、パスワードの代わりとしてPATを使用します。
- ネットワークやファイアウォールの問題: 企業のプロキシ設定やファイアウォールがGitプロトコルやHTTPS通信を妨害している可能性もゼロではありません。ネットワーク管理者に確認してください。
SSH接続の問題(Permission denied)
SSH認証で Permission denied (publickey).
などのエラーが出る場合、主に以下の原因が考えられます。
原因と解決策:
- 公開鍵がGitLabに登録されていない、または間違っている: ローカルの秘密鍵に対応する公開鍵が、GitLabアカウントのSSH Keys設定に正しく登録されているか確認してください。公開鍵の内容を再度コピーして貼り付けてみるのも良いでしょう。
- Sourcetreeが使用する秘密鍵が間違っている、またはパスが正しくない: Sourcetreeの設定(ツール > オプション > 一般 または SSHクライアント)で、使用するSSHクライアントと秘密鍵のパスが正しく指定されているか確認してください。秘密鍵ファイルが存在し、読み取り権限があることも確認します。
- 秘密鍵にパスフレーズが設定されており、入力がスキップされている/間違っている: パスフレーズ付きの秘密鍵を使用する場合、通常最初の接続時にパスフレーズの入力が求められます。これが表示されない場合や、間違ったパスフレーズを入力している可能性があります。SourcetreeがSSH Agentを利用する設定になっている場合、Agentにキーが追加されているか確認してください。
- SSH Agentが起動していない、または秘密鍵がAgentに追加されていない: SSH Agentを使用している場合、エージェントが起動しており、かつ使用する秘密鍵が
ssh-add
コマンドなどでエージェントに追加されているか確認してください。Sourcetreeの設定でSSH Agentを使用する設定になっているかも確認します。 - GitLabのKnown Hostsに登録されていない: SSHで初めて接続する際に、サーバーのフィンガープリントを確認し、
known_hosts
ファイルに追加する必要があります。CLIで一度接続を試みると、このプロセスを確認できます (ssh -T [email protected]
)。 - SSH URLが間違っている: クローンやリモート設定で使用するSSH URLが正しい形式か確認します(例:
[email protected]:group_name/project_name.git
)。HTTPS URLをSSHプロトコルで使用しようとしていないか確認します。
クローン・プッシュ・プル時のネットワーク問題
タイムアウトエラーや接続エラーが発生する場合、ネットワークに起因する問題の可能性があります。
原因と解決策:
- インターネット接続がない/不安定: 基本的ですが、インターネット接続が正常か確認します。
- プロキシ設定: 企業のネットワーク環境などでプロキシサーバーを経由する必要がある場合、GitおよびSourcetreeがプロキシ設定を正しく使用できているか確認します。Gitの環境変数 (
http.proxy
,https.proxy
) やSourcetreeのネットワーク設定を確認してください。 - ファイアウォール: クライアント側またはネットワーク上のファイアウォールが、GitLabへの通信をブロックしている可能性があります。HTTPS (ポート443) や SSH (ポート22) の通信が許可されているか確認します。
- GitLab側の問題: 一時的にGitLabサーバー側で問題が発生している可能性もゼロではありません。GitLabのステータスページを確認するか、しばらく待ってから再試行してください。
コンフリクト解消時の一般的なミス
コンフリクトが発生した際に、解消手順を間違えると意図しないコードが残ったり、コンフリクトマーカーが残ったままコミットしてしまったりすることがあります。
原因と解決策:
- コンフリクトマーカーの残存: ファイルを編集してコンフリクトを解消する際、
<<<<<<<
,=======
,>>>>>>>
といったGitのマーカーを完全に削除しないまま保存し、コミットしてしまうミスが多いです。ファイルの内容をよく確認し、これらのマーカーが全て削除されていることを確認してください。 - 解消済みのファイルを「追加」し忘れる: ファイルの内容を修正しただけでは、Gitはそのファイルがコンフリクト解消済みであることを認識しません。修正後、ステージングエリアに追加(
git add
相当の操作)する必要があります。Sourcetreeでは、コンフリクト解消ツールで保存した後、ステータス表示でそのファイルを「ステージング済み」エリアに移動させるか、「コンフリクト解消済みとしてマーク」する操作を行います。 - 意図しないコードを選択してしまう: 複数の変更を統合する際に、どちらの変更を残すか、あるいは両方を組み合わせるかを間違えると、バグの原因となります。変更内容を慎重に確認しながら解消作業を進めてください。必要であれば、チームメンバーと相談しながら行うことを推奨します。
- 解消コミットをスキップしてしまう: マージ操作によって発生したコンフリクトを全て解消すると、そのマージを完了させるための新しいコミット(マージコミットまたは解消内容を含む通常のコミット)が必要です。これを忘れてしまうと、マージ状態が不安定になります。Sourcetreeは通常、コンフリクト解消後にコミットを促します。
コンフリクト解消は慣れが必要な作業です。Sourcetreeのコンフリクト解消ツールを積極的に活用し、不安な場合は小さな変更から試したり、重要な変更の場合はバックアップを取ってから作業したりすると良いでしょう。
Sourcetreeのキャッシュクリアや再起動
稀に、Sourcetreeが表示する情報が最新でなかったり、内部状態が不安定になったりすることがあります。
原因と解決策:
- 内部キャッシュの問題: Sourcetreeが保持しているリポジトリの状態に関するキャッシュが古くなっている可能性があります。Sourcetreeを完全に終了して再起動するだけで解決することが多いです。
- リポジトリのインデックス破損: Gitリポジトリ自体のインデックスなどが破損している可能性もゼロではありません。Sourcetreeで
リポジトリ(Repository)
>サブモジュール/その他(Submodules / Other)
>リポジトリのクリーン(Clean repository)
または強制的にクリーン(Force Clean)
を試すか、ローカルリポジトリを一度削除して再クローンすることを検討します(ただし、ローカルの未コミットの変更は失われるので注意)。 - Sourcetree本体の不具合: ごく稀に、Sourcetreeのバージョン固有の不具合である可能性もあります。Sourcetreeを最新バージョンにアップデートすることで解決する場合があります。
これらのトラブルシューティングの手順を踏むことで、SourcetreeとGitLab連携におけるほとんどの問題は解決できるはずです。問題が解決しない場合は、SourcetreeやGitLabの公式ドキュメント、コミュニティフォーラムなども参考にしてみてください。
まとめ
この記事では、「Sourcetreeユーザー必見!GitLab連携完全ガイド」として、SourcetreeとGitLabを連携させることの重要性、それぞれのツールの基本、連携のメリット、そして具体的な連携設定手順から日常の開発ワークフローでの活用方法、応用技、トラブルシューティングに至るまで、幅広く詳細に解説しました。
SourcetreeとGitLab連携の改めての重要性
現代のソフトウェア開発において、バージョン管理システムとそれを中心としたDevOpsプラットフォームは不可欠です。GitLabはリポジトリ管理に加えてCI/CD、Issueトラッカー、コードレビューなど開発ライフサイクル全体をカバーする強力なプラットフォームであり、SourcetreeはGit操作を直感的かつ視覚的に行える優れたGUIクライアントです。この二つを連携させることで、コマンドラインに習熟していなくても、GitLabの持つ高度なDevOps機能を最大限に活用した効率的で可視性の高い開発ワークフローを実現できます。
効率的で可視性の高い開発ワークフローの実現
Sourcetreeは、ブランチツリー、コミット履歴、変更されたファイルリストなどを視覚的に表示することで、リポジトリの状態を容易に把握させます。GitLabは、Issue、マージリクエスト、CI/CDパイプラインといった機能で、開発タスクの進捗、コードレビューの状況、ビルド・テスト結果などを可視化します。
両者を連携させることで、Sourcetree上でコード変更を行い、それをGitLabにプッシュすることで自動的にCI/CDが走り、マージリクエストでチームのレビューを受け、その結果をGitLab上で確認するといった一連の流れがスムーズに行えます。SourcetreeからのGitLab関連ページへの簡単なアクセスや、コミットメッセージによるIssueの自動連携なども、ワークフローの効率化に大きく貢献します。
今後の展望(さらなる連携強化、DevOpsへの貢献)
SourcetreeやGitLabといったツールは常に進化しています。今後は、SourcetreeからGitLabのIssueやマージリクエストの状態をより詳細に確認できる機能が追加されたり、CI/CDパイプラインの実行状況をSourcetree上でよりリッチに表示したりするなど、さらなる連携強化が期待されます。
これらのツールを最大限に活用することで、開発チームはより迅速に、より高い品質でソフトウェアをリリースできるようになります。これは、DevOpsの目指す「文化」「プラクティス」「ツール」の導入において、ツール面で非常に重要な貢献となります。
読者へのメッセージ
SourcetreeはGitLabをより身近に、より使いやすくするための強力なパートナーです。この記事で解説した連携手順や活用方法を参考に、ぜひあなたの開発ワークフローにSourcetreeとGitLabの連携を取り入れてみてください。最初は少し難しく感じるかもしれませんが、慣れてくればその効率性の高さに気づくはずです。
CLIでのGit操作も確かに重要ですが、GUIツールであるSourcetreeは、特にGitの概念を理解する初期段階や、リポジトリの複雑な状態を把握したい場合に非常に役立ちます。GitLabの豊富なDevOps機能と組み合わせることで、個人開発から大規模なチーム開発まで、あらゆるシーンで開発効率と品質を向上させることができるでしょう。
この記事が、あなたのSourcetreeとGitLabを活用した開発ライフの一助となれば幸いです。Happy Coding!