結論

Sourcetreeは、Gitをボタンで操作できる無料のWindows・Mac用アプリです。ボタンを押すと、裏で git コマンドが実行されます。

この記事でわかること

  • ボタンと git コマンドの対応表19行と実行結果
  • インストールと初期設定の6手順
  • 認証失敗・SSH鍵・改行コードなどエラー原文12件

2026年10月22日更新|Git 2.43.0・Ubuntu 24.04 で実行確認

Sourcetree の操作は「作業フォルダ → ステージ → 手元のリポジトリ → リモート(GitHub など)」の間でファイルの状態を動かすことです。どのボタンが、どの矢印に当たるかを図にしました。

flowchart TD
    W[作業フォルダ] -->|ステージ = git add| S[ステージ]
    S -->|コミット = git commit| L[(手元のリポジトリ)]
    L -->|プッシュ = git push| R[(GitHub・Bitbucket)]
    R -->|フェッチ = git fetch| L
    R -->|プル = fetch + merge| W

よく使う操作と、裏で動く git コマンドは次のとおりです。

やりたいこと Sourcetree の操作 裏の git コマンド
リポジトリを手元に持ってくる クローン git clone URL
変更を記録する ステージ → コミット git add → git commit
記録をサーバーに送る プッシュ git push origin main
サーバーの変更を取り込む プル git pull origin main
取り込まずに確認だけする フェッチ git fetch origin
作業用のブランチを作る ブランチ → 新しいブランチ git checkout -b 名前
ブランチを取り込む マージ git merge 名前
作業中の変更を一時退避 スタッシュ git stash push -m メモ
変更を捨てる 破棄 git restore ファイル
コミットを打ち消す コミット適用前に戻す… git revert ID

確認環境:Ubuntu 24.04.4・Git 2.43.0。手元に Basic 認証つきの HTTP の Git サーバー(git http-backend)と、SSH の Git サーバー(OpenSSH の sshd)を立て、クローン・ステージ・コミット・プッシュ・フェッチ・プル・ブランチ・マージ・コンフリクト・スタッシュ・タグ・リバート・リセット・チェリーピックと、認証失敗・SSH 鍵・改行コードなどのエラーを、各ボタンに対応する git コマンドで実行して確かめています。Sourcetree は Windows・Mac 専用のため、画面・ボタンの名前・版・設定の場所は Sourcetree 公式サイトとリリースノート、Atlassian の公式ドキュメント(日本語版があるものは日本語版)、Sourcetree が実際に記録したコマンドは Atlassian コミュニティと Jira の報告で確かめました。GitHub Desktop・VS Code・GitHub の認証は各社の公式ドキュメントで確かめました(確認日 2026年10月22日)。

本記事の内容は、ご自由にお使いください。
ご利用の際は、出典として本ページへのリンクを記載いただけますようお願いします。

(記載例)出典:株式会社RJC「Sourcetreeの使い方|インストールからボタンの裏のgitコマンドまで」

Sourcetreeとは(無料・対応OS・最新版)

この節では、Sourcetree が何をするアプリで、いくらで、どの OS で使えるかが分かります。

Sourcetree(ソースツリー)は、Atlassian 社が出している Git の GUI クライアントです。 公式サイトの見出しは「A free Git client for Windows and Mac」で、無料で使えます。GUI クライアントとは、コマンドを打つ代わりに、画面のボタンや一覧で操作するアプリのことです。Sourcetree 自身は Git の仕組みを持たず、ボタンを押すと Git のコマンドを実行して、その結果を画面に表示します。

3.4.32Windows 版の最新2026年8月28日公開(2026年10月22日時点)
4.2.19Mac 版の最新2026年7月30日公開。macOS 10.15 以降
0円料金無料。Atlassian アカウントが要る
項目 内容(2026年10月22日時点)
提供元 Atlassian(Jira・Confluence・Bitbucket の会社)
料金 無料
対応 OS Windows・Mac(Linux 版は無い)
扱えるもの Git と Mercurial のリポジトリ
主な機能 ファイル・ハンク・行単位のステージ、ブランチの図、Git LFS、Git-flow、サブモジュール、インタラクティブリベース
つなげるサービス Bitbucket・GitHub・GitLab など
使う Git 同梱の Git(Windows 版 3.4.25 以降は Git 2.51.0)か、PC に入れた Git
企業向け Windows Enterprise 版(一括インストール・更新・管理)

Sourcetree でできることは Git でできることと同じです。違いは、履歴が線でつながった図で見えること、差分を見ながら行単位でステージできること、操作をメニューから選べることです。

Sourcetreeのインストール(Windows・Mac)とAtlassianアカウント

この節では、ダウンロードから最初の画面までの手順と、つまずきやすい選択肢が分かります。

公式のインストール手順では、Sourcetree を使うには Atlassian アカウント が要ります(Bitbucket のアカウントと同じものです)。GitHub だけを使う場合も、最初にサインインします。

1

公式サイトからダウンロード

sourcetreeapp.com を開き、Mac は「Download for Mac OS X」、Windows は「Also available for Windows」を押します。Windows は SourceTreeSetup-3.4.32.exe、Mac は zip(中にアプリ)が落ちてきます。

無料・公式サイトから

2

インストーラーを開く

Windows は exe を実行します。Mac は zip を開くと Sourcetree のアプリが出てくるので、アプリケーションフォルダに移してから開きます。

Windows は exe、Mac はアプリ

3

利用規約に同意する

Atlassian Customer Agreement に同意して「Continue」を押します。

最初の1回だけ

4

Atlassian アカウントでサインイン

持っていれば「Use an existing account」、無ければ「Go to My Atlassian」で作ってから戻ります。

Bitbucket と同じアカウント

5

Git を選ぶ・GitHub などをつなぐ

GitHub・Bitbucket の認証は、ここで既定の設定のまま入れるか、後でアカウント設定から足します。SSH 鍵を作らないと進めないときは HTTPS を選びます。

迷ったら HTTPS

6

名前とメールを設定する

コミットに記録される名前とメールアドレスです。Sourcetree の設定画面(Windows は Tools → Options、Mac は Preferences)で入れます。中身は git config user.name と user.email です。

入れないとコミットで止まる

クローンの準備ができていなければ、手順5の画面で「Skip Setup」を押して後で行えます。

名前とメールを入れないとどうなるか

名前とメールが無い状態でコミットすると、Git は次のエラーで止まりました。Sourcetree でも、この文がエラーの画面に出ます。

$ git commit -m first
Author identity unknown

*** Please tell me who you are.

Run

  git config --global user.email "you@example.com"
  git config --global user.name "Your Name"

to set your account's default identity.
Omit --global to set the identity only in this repository.

fatal: unable to auto-detect email address (got 'root@vm.(none)')

$ git config user.name "Taro Yamada"

$ git config user.email taro@example.com

$ git commit -m first
[main (root-commit) 2c0572f] first
 1 file changed, 1 insertion(+)
 create mode 100644 a.txt

同梱の Git とシステムの Git

Sourcetree は、自分に同梱された Git(埋め込み Git)か、PC に別に入れた Git(システム Git)のどちらかを使います。Atlassian のナレッジベースによると、切り替える場所は次のとおりです。

OS 場所 ボタン
Windows Tools → Options → Git Use Embedded Git / Use System Git / Update Embedded Git
Mac Preferences(設定)→ Git Reset to Embedded Git / Use System Git

ターミナルでも同じリポジトリを操作するなら、システム Git に揃えると、Sourcetree とコマンドで同じ Git の版と設定(~/.gitconfig)が使われます。pre-commit などのフックが Sourcetree からだけ動かないときも、システム Git に切り替えると直ることがあります(Sourcetree から起動したときは PATH が短くなるため)。

日本語化

Sourcetree は日本語の画面を持っています(Windows 版は 1.4.0 から日本語に対応)。Mac 版は macOS の言語設定に従います。Windows 版は「Tools → Options → General」の Language で切り替えられます(Atlassian コミュニティの回答による)。この記事では、日本語の画面名を Atlassian の日本語ドキュメントの表記で書き、英語のドキュメントにしか無いものは英語のまま書いています。

Mac で「開けない」と出たとき

Mac で「開発元を確認できない」と出て開けないときは、Apple のサポートの手順で開きます。アップルメニュー →「システム設定」→「プライバシーとセキュリティ」→「セキュリティ」の「このまま開く」です。このボタンは、開こうとしてから約1時間だけ使えます。ダウンロード元が sourcetreeapp.com であることを先に確かめます。

GitHub・Bitbucketのアカウントをつなぐ(HTTPSとSSH)

この節では、GitHub や Bitbucket のリポジトリを Sourcetree から使えるようにする設定が分かります。

公式の手順では、右上の「•••」または歯車アイコンから Accounts を開き、Add → Host で Bitbucket か GitHub を選び、Auth Type は既定のまま Connect Account を押してサインインします。アカウントは複数足せます。

選ぶもの HTTPS SSH
URL の形 https://github.com/user/repo.git git@github.com:user/repo.git
認証に使うもの ブラウザでの OAuth、またはトークン 鍵のペア(公開鍵をサービスに登録)
GitHub のパスワード 使えない(2021年8月13日に廃止) 使わない
最初の設定 アカウントを足すだけ 鍵を作って公開鍵を登録する
つまずきやすい点 前の認証情報が残る 鍵が読み込まれていない・ホスト鍵の確認

GitHub Docs には、HTTPS で Git からパスワードを聞かれたら、パスワードではなく personal access token を入れるとあります。Bitbucket Cloud のドキュメントでは、API トークンが App パスワードの長期的な代わりと書かれています。Sourcetree でアカウントを足すときは、Auth Type の既定(ブラウザでのサインイン)を使うと、トークンを手で作らずに済みます。

SSH 鍵を作る(Windows・Mac)

Atlassian の日本語ドキュメント「Sourcetree を使用して SSH を設定する」の手順を表にしました。

手順 Windows Mac
1. プロトコル アカウントの「優先プロトコル」を SSH にする 「設定」→「アカウント」→「編集」で「プロトコル」を SSH
2. 鍵を作る 「ツール」→「SSH キーの作成またはインポート」で PuTTY キー ジェネレーターの「生成」 Option キーを押しながら「キーを生成」
3. 鍵を保存 「公開キーを保存」「秘密キーを保存」 自動で保存(Sourcetree で作れる鍵は1つ)
4. 鍵を読み込む Pageant の「キーの追加」で秘密キーを読む ―
5. 公開鍵を登録 公開キーをコピーして Bitbucket・GitHub に貼る 「クリップボードにコピー」して貼る

ターミナルで鍵を作る場合は、Bitbucket のドキュメントでは次の形です(-f のファイル名は自分で決めます)。

ssh-keygen -t ed25519 -C "you@example.com" -f ~/.ssh/bitbucket_work

登録した鍵が使われているかは、ssh -T git@github.com(Bitbucket は ssh -T git@bitbucket.org)で確かめます。手元で作った鍵の指紋は次のように見られます。サービスの画面に出る指紋と同じなら、同じ鍵です。

$ ssh-keygen -lf ~/.ssh/id_ed25519.pub
256 SHA256:HCKodBBHg1nWsUMPyMDR4Y00r6BRosoi01CAGo0LqLI rjc@example.com (ED25519)

SSH のエラーの原文と直し方は「よくあるエラーと直し方」の節にあります。

Sourcetreeの画面の見方

この節では、Sourcetree の画面のどこに何があるかが分かります。

Atlassian の日本語ドキュメントは、リポジトリの画面を5つの部分に分けて説明しています。

1操作ボタン

上の帯。コミット・プル・プッシュ・フェッチ・ブランチ・マージ・スタッシュなど。押すと git コマンドが動く。

2ブランチ リスト

左側。ファイルステータス・履歴、ブランチ・タグ・リモート・スタッシュの一覧。ダブルクリックで切り替え。

3コミット リスト

履歴の一覧と、ブランチの線の図。右クリックでリセット・打ち消し・チェリーピックなど。

4ファイル リスト

選んだコミット、または「未コミットの変更」で変わったファイルの一覧。

5選択したファイル

差分の表示。ハンク(変更のかたまり)や行ごとにステージ・破棄できる。

左の「ファイルステータス」は git status、「履歴」は git log --graph を画面にしたものです。

Sourcetreeのボタンと裏で動くgitコマンドの対応表

この節では、各ボタンが実行する git コマンドと、Sourcetree が付ける共通のオプションの意味が分かります。

Sourcetree が実際に実行したコマンド

Sourcetree は、実行したコマンドと出力をエラーの画面などに表示します。Atlassian コミュニティと Jira に報告された実際のコマンドは次の形でした(Windows 版)。

git -c diff.mnemonicprefix=false -c core.quotepath=false --no-optional-locks fetch origin
git -c diff.mnemonicprefix=false -c core.quotepath=false --no-optional-locks fetch --no-tags origin
git -c diff.mnemonicprefix=false -c core.quotepath=false --no-optional-locks pull --no-commit origin release/11.3.0
git -c diff.mnemonicprefix=false -c core.quotepath=false --no-optional-locks pull --rebase origin develop
git -c diff.mnemonicprefix=false -c core.quotepath=false --no-optional-locks push -v --tags --set-upstream origin develop:develop-mars
git -c diff.mnemonicprefix=false -c core.quotepath=false --no-optional-locks submodule sync

Mac 版のコミットでは、git --no-optional-locks -c color.branch=false -c color.diff=false -c color.status=false -c diff.mnemonicprefix=false -c core.quotepath=false -c credential.helper=sourcetree commit -q -F (一時ファイル) の形が報告されています。コミットメッセージを一時ファイルに書き、-F で渡しています。

後ろの fetch・pull・push・commit が本体で、前の -c … と --no-optional-locks は毎回付く共通の設定です。 -c は、そのコマンドの間だけ設定を上書きするオプションです。

共通の部分 意味 Sourcetree が付ける理由
-c core.quotepath=false 日本語などのファイル名をエスケープせずに出す 一覧に日本語のファイル名を表示するため
-c diff.mnemonicprefix=false 差分の見出しを a/・b/ にする 差分の表示を決まった形で読むため
--no-optional-locks 省略できるロック付きの処理をしない 画面の更新で .git/index を書き換えないため
-c credential.helper=sourcetree 認証情報を Sourcetree から渡す(Mac) 登録したアカウントで認証するため
-c color.*=false 色の制御文字を出さない(Mac) 出力を画面で読むため

3つの共通オプションの違いを、手元で同じコマンドを実行して確かめました。まず core.quotepath です。既定(true)では日本語のファイル名が8進数のエスケープになりました。

$ git -c core.quotepath=true status --short
?? README.md
?? src/
?? "\343\203\241\343\203\242.txt"

$ git -c core.quotepath=false status --short
?? README.md
?? src/
?? メモ.txt

diff.mnemonicprefix を true にすると、差分の見出しが「i/(ステージ)」「w/(作業フォルダ)」に変わりました。Sourcetree は false にして、いつも a/・b/ で読みます。

$ git -c diff.mnemonicprefix=true diff
diff --git i/README.md w/README.md
index e965047..6ceb7b1 100644
--- i/README.md
+++ w/README.md
@@ -1 +1,2 @@
 Hello
+Sourcetree

$ git -c diff.mnemonicprefix=false diff
diff --git a/README.md b/README.md
index e965047..6ceb7b1 100644
--- a/README.md
+++ b/README.md
@@ -1 +1,2 @@
 Hello
+Sourcetree

--no-optional-locks は、Git 公式マニュアルで「ロックが要る、省略できる処理をしない」と説明されています。ファイルの時刻だけを変えてから git status を実行し、.git/index の更新時刻を見ました。付けたときは変わらず、付けないときは書き換わりました。Sourcetree は画面を最新にするために status を何度も実行するので、ターミナルで同時に git commit しても index のロックがぶつかりにくくなります。

$ stat -c '%y' .git/index
2026-10-22 18:47:38.923165555 +0900
$ git --no-optional-locks status --short
$ stat -c '%y' .git/index
2026-10-22 18:47:38.923165555 +0900
$ git status --short
$ stat -c '%y' .git/index
2026-10-22 18:47:52.783882846 +0900

ボタン・メニューと git コマンドの対応表

各操作の実行結果は、この後の節にあります。

Sourcetree の操作 対応する git コマンド 節
クローン(新規クローン) git clone URL 宛先パス クローン
新規作成(ローカルリポジトリ) git init クローン
ファイルをステージ(チェック) git add ファイル ステージ
ハンク・行をステージ git add -p と同じ結果 ステージ
ステージを外す git restore --staged ファイル ステージ
破棄 git restore ファイル ステージ
コミット git commit -q -F 一時ファイル コミット
直前のコミットを上書き git commit --amend コミット
プッシュ git push -v origin main:main プッシュ
フェッチ git fetch origin フェッチ
プル git pull origin main プル
ブランチ(新しいブランチ) git checkout -b 名前 ブランチ
マージ git merge 名前 マージ
マージ(fast-forward でも作成) git merge --no-ff 名前 マージ
スタッシュ git stash push -m メモ スタッシュ
タグを追加 git tag -a 名前 -m メモ タグ
コミット適用前に戻す… git revert ID 取り消し
(ブランチ名)をこのコミットまで戻す git reset --soft・--mixed・--hard ID 取り消し
チェリーピック git cherry-pick ID 取り消し

上部の「ターミナル」ボタンで、そのリポジトリのフォルダでターミナルが開きます。表のコマンドはそこで打てます。

リポジトリのクローンと新規作成

この節では、GitHub などのリポジトリを手元に持ってくる手順と、手元のフォルダを Git の管理下に置く手順が分かります。

クローン(リモートから持ってくる)

Atlassian の日本語ドキュメントでは、Bitbucket の画面の「クローン」→「Sourcetree でクローン」で Sourcetree の「新規クローン」画面が開き、「宛先パス」を確かめて「クローン」を押します。GitHub の場合は、リポジトリの「Code」ボタンで URL をコピーし、Sourcetree の新しいタブの「Clone」(Mac は「新規」→「URL からクローン」)に貼ります。つないだアカウントのリポジトリは「Remote」の一覧から「Clone」でも選べます。

裏で動くのは git clone です。認証が通ると、次のように手元にフォルダができました。

$ git clone http://127.0.0.1:31000/app.git work
Cloning into 'work'...

$ ls work
README.md
src
メモ.txt
入力するもの 意味 git での対応
クローン元の URL GitHub などでコピーした URL git clone の1つ目の引数
宛先パス 手元に作るフォルダ 2つ目の引数
ブックマーク名 Sourcetree の一覧での表示名 Git には無い(Sourcetree だけの設定)

新規作成(手元のフォルダから始める)

「新規」→「ローカルリポジトリを作成」は git init です。後から GitHub にプッシュするには、リポジトリの設定の「リモート」で origin を足します。これは git remote add と同じです。

$ git init -b main newrepo
Initialized empty Git repository in (作業フォルダ)/newrepo/.git/

$ git remote add origin http://127.0.0.1:31000/app.git

$ git remote -v
origin  http://127.0.0.1:31000/app.git (fetch)
origin  http://127.0.0.1:31000/app.git (push)

git init の後の最初のプッシュまでの流れは、関連記事「Gitコマンド一覧|やりたいこと別の早見表と実行結果・エラー対処」で扱っています。

ステージとコミット(ハンク・行単位、破棄、直前のコミットの修正)

この節では、変更を選んでコミットする方法と、変更を捨てる方法が分かります。

左の「ファイルステータス」を開くと、「ステージ化されていないファイル」と、ステージ済みのファイルの2つの一覧が出ます。ファイルの横のチェックを入れるとステージ(git add)、外すとステージの解除です。

$ git add README.md

$ git status --short
M  README.md

$ git restore --staged README.md

$ git status --short
 M README.md

git status --short の左の列がステージ、右の列が作業フォルダの状態です。M はステージ済み、M は作業フォルダだけの変更です。Sourcetree の2つの一覧は、この2つの列に当たります。

ハンク・行だけをステージする

差分の画面では、変更のかたまり(ハンク)ごと、行ごとにステージ・破棄ができます(公式サイトの機能一覧の「file, hunk or line」)。1つのファイルの2か所を変えて、1か所目だけをステージしました。コマンドでは git add -p で、ハンクごとに y(入れる)・n(入れない)を答えます。

$ printf 'y\nn\n' | git add -p list.txt
diff --git a/list.txt b/list.txt
index 624b469..5eec0e6 100644
--- a/list.txt
+++ b/list.txt
@@ -1,5 +1,5 @@
 line 1
-line 2
+line 2 修正A
 line 3
 line 4
 line 5
(1/2) Stage this hunk [y,n,q,a,d,j,J,g,/,e,?]? @@ -8,5 +8,5 @@ line 7
 line 8
 line 9
 line 10
-line 11
+line 11 修正B
 line 12
(2/2) Stage this hunk [y,n,q,a,d,K,g,/,e,?]?

$ git diff --cached
@@ -1,5 +1,5 @@
 line 1
-line 2
+line 2 修正A

$ git diff
@@ -8,5 +8,5 @@ line 7
-line 11
+line 11 修正B

$ git commit -m "修正Aだけコミット"
[main a099ea9] 修正Aだけコミット
 1 file changed, 1 insertion(+), 1 deletion(-)

(git diff の出力は前後の行を一部省いています。)ステージした「修正A」だけがコミットされ、「修正B」は作業フォルダに残りました。

破棄(変更を捨てる)

「破棄」は、作業フォルダの変更を最後のコミットの状態に戻します。コマンドでは git restore ファイル(または git checkout -- ファイル)です。

「破棄」と「スタッシュ」の違い

破棄コミットしていない変更が消える。Git には残らない
→
スタッシュ変更を一時的にしまう。後で「退避した変更を適用」で戻せる

要るかもしれない変更は、破棄ではなくスタッシュに入れておく

コミットと「すぐにプッシュ」

上の「コミット」ボタンを押し、メッセージを書いて下の「コミット」を押します。メッセージ欄の下には、コミットの後に続けてプッシュまで行うチェックボックスもあります。

ファイルステータスの「直前のコミットを修正」と、「コミット オプション」の「直前のコミットを上書き」は git commit --amend です。プッシュ済みのコミットを上書きすると、リモートと履歴が食い違うので、プッシュ前のコミットに使います。

プッシュ・フェッチ・プルの違い

この節では、サーバーとやり取りする3つのボタンの違いと、それぞれの出力の読み方が分かります。

フェッチ(git fetch)

サーバーの新しいコミットを取ってくるだけ

自分のファイルは変わらない。「〜件遅れている」が分かる

プル(git pull)

フェッチしてから、今のブランチに取り込む

ファイルが変わる。ぶつかるとコンフリクト

プッシュ

「プッシュ」ボタンを押すと、送るブランチを選ぶ画面が出ます。チェックしたブランチだけが送られ、タグも送る設定にすると --tags が付きます。Sourcetree の記録と同じ形のコマンドで送りました。

$ git push -v --tags origin refs/heads/main:refs/heads/main
Pushing to http://127.0.0.1:31000/app.git
POST git-receive-pack (841 bytes)
To http://127.0.0.1:31000/app.git
   651a78d..a099ea9  main -> main
updating local tracking ref 'refs/remotes/origin/main'

651a78d..a099ea9 は「サーバーの main を 651a78d から a099ea9 まで進めた」という意味です。新しいブランチを初めて送るときは、追跡先を設定する --set-upstream が付きます(報告されたコマンドにも付いています)。

$ git push -v --tags --set-upstream origin feature/login:feature/login
Pushing to http://127.0.0.1:31000/app.git
POST git-receive-pack (488 bytes)
To http://127.0.0.1:31000/app.git
 * [new branch]      feature/login -> feature/login
updating local tracking ref 'refs/remotes/origin/feature/login'
branch 'feature/login' set up to track 'origin/feature/login'.

フェッチ

同僚がプッシュした後にフェッチすると、origin/main だけが進み、自分の main は「1つ遅れ(behind 1)」になりました。Sourcetree の画面にも、遅れているコミットの数が表示されます。

$ git fetch origin
From http://127.0.0.1:31000/app
   a099ea9..b3fe78e  main       -> origin/main

$ git status -sb
## main...origin/main [behind 1]

プル

プルすると、フェッチした分が自分の main に取り込まれました。自分にコミットが無いので fast-forward(目印を進めるだけ)です。

$ git pull origin main
From http://127.0.0.1:31000/app
 * branch            main       -> FETCH_HEAD
Updating a099ea9..b3fe78e
Fast-forward
 README.md | 1 +
 1 file changed, 1 insertion(+)

Sourcetree のプルの画面には、取り込み方を選ぶオプションがあります。報告されたコマンドの --no-commit(マージしてもコミットせずに止める)と --rebase(自分のコミットを相手のコミットの後ろに付け直す)が、そのオプションに当たります。--rebase で取り込んだ結果は、履歴が1本の線になりました。

$ git pull --rebase origin main
From http://127.0.0.1:31000/app
 * branch            main       -> FETCH_HEAD
   7f2bcda..05d9252  main       -> origin/main
Successfully rebased and updated refs/heads/main.

$ git log --oneline --graph -2
* 68c27b8 自分のコミット2
* 05d9252 同僚のコミット2

両方が進んでいるとき(プッシュが拒否される)

自分と同僚の両方がコミットしていると、プッシュは拒否されました。先にプルして取り込みます。

$ git push -v origin refs/heads/main:refs/heads/main
Pushing to http://127.0.0.1:31000/app.git
To http://127.0.0.1:31000/app.git
 ! [rejected]        main -> main (fetch first)
error: failed to push some refs to 'http://127.0.0.1:31000/app.git'
hint: Updates were rejected because the remote contains work that you do not
hint: have locally. This is usually caused by another repository pushing to
hint: the same ref. If you want to integrate the remote changes, use
hint: 'git pull' before pushing again.

Git 2.43.0 では、両方が進んでいるときに取り込み方(マージかリベースか)を決めていないと、プルが次のエラーで止まりました。Sourcetree のプルの画面でリベースを選ぶか、pull.rebase を設定すると止まりません。

$ git pull origin main
hint: You have divergent branches and need to specify how to reconcile them.
hint: You can do so by running one of the following commands sometime before
hint: your next pull:
hint: 
hint:   git config pull.rebase false  # merge
hint:   git config pull.rebase true   # rebase
hint:   git config pull.ff only       # fast-forward only
(略)
fatal: Need to specify how to reconcile divergent branches.

$ git pull --no-rebase origin main
Merge made by the 'ort' strategy.
 other.txt | 1 +
 1 file changed, 1 insertion(+)
 create mode 100644 other.txt

$ git log --oneline --graph -4
*   2056777 Merge branch 'main' of http://127.0.0.1:31000/app
|\  
| * 531465e 同僚のコミット
* | 3ed0c78 自分のコミット
|/  
* b3fe78e README に追記(同僚)

このエラーの詳しい直し方は、関連記事「divergent branchesの直し方|git pullのエラー」で扱っています。プッシュの前に確かめることをまとめました。

  • 1先にフェッチしたか遅れているコミットがあれば、プルしてから送る
  • 2送るブランチは合っているかプッシュの画面でチェックしたブランチだけが送られる
  • 3ステージし忘れたファイルは無いかファイルステータスの「ステージ化されていないファイル」が空か
  • 4パスワードや鍵を入れていないか.env や秘密鍵は .gitignore に書いてからコミットする

ブランチの作成・切り替え・マージ

この節では、Sourcetree でブランチを作って取り込む操作と、その裏のコマンドが分かります。

ブランチを作る・切り替える

上の「ブランチ」ボタンを押し、「新しいブランチ」に名前を入れて「ブランチを作成」(Create Branch)を押します。ブランチの切り替えは、ブランチ リストのブランチ名をダブルクリックします。

$ git checkout -b feature/login
Switched to a new branch 'feature/login'

$ git checkout main
Switched to branch 'main'
Your branch is up to date with 'origin/main'.

ブランチが何で、作るとリポジトリの中で何が増えるのかは、関連記事「ブランチとは|Gitの作成・切り替え・マージと正体を実例で解説」で扱っています。

マージ

取り込む側(例:main)に切り替えてから「マージ」を押し、取り込むブランチやコミットを選んで「OK」を押します。Atlassian の日本語ドキュメントにある「fast-forward でマージが解決された場合もコミットを作成する」にチェックを入れると、--no-ff が付き、必ずマージコミットが作られます。

$ git merge --no-ff --no-edit feature/login
Merge made by the 'ort' strategy.
 login.txt | 1 +
 1 file changed, 1 insertion(+)
 create mode 100644 login.txt

$ git log --oneline --graph -3
*   d7a80e3 Merge branch 'feature/login'
|\  
| * 45e7cc7 ログイン画面を追加
|/  

Sourcetree の履歴の図も、この --graph と同じ形で描かれます。チェックを入れたとき・入れないときの履歴の形は次のとおりです。

gitGraph
    commit id: "2056777"
    branch feature/login
    commit id: "45e7cc7"
    checkout main
    merge feature/login id: "d7a80e3"
マージの設定 結果 向いている場面
チェックなし(main が進んでいない) fast-forward。マージコミットは作られない 履歴を1本の線にしたい
チェックなし(両方が進んでいる) マージコミットが作られる ―
fast-forward でもコミットを作成する 必ずマージコミット(--no-ff) 取り込んだ単位を履歴に残したい

コンフリクトの解消(自分・相手を使って解決)

この節では、マージやプルで同じ場所がぶつかったときの直し方が分かります。

main と feature/title の両方で README.md の1行目を変えてマージすると、コンフリクトになりました。Sourcetree では、競合したファイルがファイルステータスの一覧に出ます。

$ git merge feature/title
Auto-merging README.md
CONFLICT (content): Merge conflict in README.md
Automatic merge failed; fix conflicts and then commit the result.

$ git status --short
UU README.md

$ cat README.md
<<<<<<< HEAD
Hello from main
=======
Hello from feature
>>>>>>> feature/title
from other

<<<<<<< HEAD から ======= までが今いるブランチ(自分)、======= から >>>>>>> までが取り込むブランチ(相手)の内容です。直し方は3つあります。

直し方 Sourcetree の操作 対応する git コマンド
自分の内容を使う 右クリック → Resolve Conflicts → Resolve Using 'Mine' git checkout --ours ファイル → git add
相手の内容を使う 右クリック → Resolve Conflicts → Resolve Using 'Theirs' git checkout --theirs ファイル → git add
両方を見て手で直す エディタで直す、または外部マージツールを起動 印を消して保存 → git add

メニュー名は Atlassian の Jira に記録された英語の画面の表記です。相手の内容を使って解決し、コミットしました。

$ git checkout --theirs README.md
Updated 1 path from the index

$ cat README.md
Hello from feature
from other

$ git add README.md

$ git commit --no-edit
[main 1b81164] Merge branch 'feature/title'

リベースの途中では「自分」と「相手」が逆になります。 Git 公式マニュアル(git-checkout)にも、リベース中の --ours は付け直す先のブランチ、--theirs は自分のコミットを指すとあります。リベース中に「自分を使用」を押すと、自分の変更が消えたように見えるのはこのためです。

外部マージツール(WinMerge・Meld・KDiff3 など)は、Windows は「ツール → オプション」の「Diff」タブで指定し、競合したファイルの右クリックから起動します。コマンドでは git mergetool に当たります。Git 2.43.0 で指定できるツールの一部は次のとおりでした。

$ git mergetool --tool-help
'git mergetool --tool=<tool>' may be set to one of the following:
        vimdiff          Use Vim with a custom layout (see `git help mergetool`'s `BACKEND SPECIFIC HINTS` section)

The following tools are valid, but not currently available:
        bc               Use Beyond Compare (requires a graphical session)
        kdiff3           Use KDiff3 (requires a graphical session)
        meld             Use Meld (requires a graphical session) with optional `auto merge` (see `git help mergetool`'s `CONFIGURATION` section)
        opendiff         Use FileMerge (requires a graphical session)
(略)

マーカーの読み方と、コンフリクトを減らす方法は、関連記事「Gitのコンフリクトの解消方法|マーカーの読み方から防ぎ方まで」で扱っています。

スタッシュ(作業中の変更を一時退避)

この節では、作業を途中のまま別のブランチに移るときの「スタッシュ」の使い方が分かります。

上の「スタッシュ」を押してメッセージを入れると、コミットしていない変更がしまわれ、作業フォルダが最後のコミットの状態に戻ります。「ステージされた変更を残す」にチェックを入れると、ステージ済みの変更は作業フォルダにも残ります(--keep-index)。

$ git status --short
 M src/app.py
?? draft.txt

$ git stash push --include-untracked -m "ログイン作業の途中"
Saved working directory and index state On main: ログイン作業の途中

$ git status --short

$ git stash list
stash@{0}: On main: ログイン作業の途中

しまった変更は、左の「スタッシュ」の一覧に出ます。右クリックの「退避した変更を適用」で戻し、「適用後に削除」にチェックを入れると一覧から消えます(git stash pop と同じ)。

$ git stash apply stash@{0}
On branch main
Your branch is up to date with 'origin/main'.

Changes not staged for commit:
    modified:   src/app.py

Untracked files:
    draft.txt

$ git stash drop stash@{0}
Dropped stash@{0} (9bd1f98dac9a8c62412e3971f69f0e0b22379086)

(stash apply の出力は、括弧の案内行を省いています。)新しく作ったファイル(未追跡ファイル)は、--include-untracked を付けないとしまわれません。

タグを付ける・プッシュする

この節では、リリースの版にタグを付ける方法が分かります。

上の「タグ」(または履歴のコミットを右クリック →「タグを追加」)で、「タグ名」「コミット」「メッセージ」を入れます。メッセージ付きのタグは git tag -a です。タグはコミットと別に送る必要があり、プッシュの画面の「すべてのタグをプッシュ」か、タグを右クリックしてプッシュします。

$ git tag -a v1.0.0 -m "最初のリリース"

$ git push -v origin refs/tags/v1.0.0
Pushing to http://127.0.0.1:31000/app.git
POST git-receive-pack (355 bytes)
To http://127.0.0.1:31000/app.git
 * [new tag]         v1.0.0 -> v1.0.0

$ git tag -n
v1.0.0          最初のリリース

タグの削除は、手元(git tag -d)とサーバー(git push origin :refs/tags/名前)の両方で行います。

$ git tag -d v1.0.0
Deleted tag 'v1.0.0' (was 21a6629)

$ git push origin :refs/tags/v1.0.0
To http://127.0.0.1:31000/app.git
 - [deleted]         v1.0.0

コミットを取り消す(打ち消し・リセット・チェリーピック)

この節では、コミットを取り消す3つの方法と、どれを選ぶかが分かります。

履歴のコミットを右クリックすると、次のメニューがあります。

メニュー git コマンド 履歴 プッシュ済みでも使えるか
コミット適用前に戻す… git revert ID 打ち消すコミットが増える 使える
(ブランチ名)をこのコミットまで戻す git reset --soft/--mixed/--hard ID 後のコミットが外れる プッシュ前に使う
チェリーピック git cherry-pick ID 同じ変更のコミットが増える 使える

コミット適用前に戻す(revert)

打ち消すコミットが新しく作られます。履歴を書き換えないので、プッシュ済みのコミットにも使えます。

$ git revert --no-edit HEAD
[main e63b148] Revert "間違えたコミット"
 1 file changed, 1 deletion(-)
 delete mode 100644 bug.txt

$ git log --oneline -3
e63b148 Revert "間違えたコミット"
f6367b6 間違えたコミット
1b81164 Merge branch 'feature/title'

このコミットまで戻す(reset)の soft・mixed・hard

リセットの画面では soft・mixed・hard の3つから選びます。1つのコミットをそれぞれで戻したときの、変更の行き先を確かめました。

$ git reset --soft HEAD~1
$ git status --short
A  r.txt

$ git reset --mixed HEAD~1
$ git status --short
?? r.txt

$ git reset --hard HEAD~1
HEAD is now at 7f2bcda Merge branch 'main' of http://127.0.0.1:31000/app
$ git status --short
$ ls r.txt
ls: cannot access 'r.txt': No such file or directory
モード コミット ステージ 作業フォルダのファイル
soft 外れる 変更はステージに残る(A) 残る
mixed 外れる 外れる(??) 残る
hard 外れる 外れる 消える

hard で消えたコミットは、git reflog に残っている間は戻せます。

$ git reflog -3
7f2bcda HEAD@{0}: reset: moving to HEAD~1
73c12cd HEAD@{1}: commit: r.txt を追加
7f2bcda HEAD@{2}: reset: moving to HEAD~1

git branch 戻したい名前 73c12cd でブランチを作ると、消えたコミットを取り戻せます。ただし、コミットしていなかった変更は reflog に残りません。

チェリーピック

別のブランチの1つのコミットだけを、今のブランチに持ってきます。元のコミットは残り、同じ変更の新しいコミットが作られます。

$ git cherry-pick fd3ce3f
[main 170e93c] 修正だけ欲しい
 1 file changed, 1 insertion(+)
 create mode 100644 fix.txt

Sourcetreeのよくあるエラーと直し方

この節では、Sourcetree の画面に出るエラーの原文と、原因・直し方を引けます。Sourcetree は git の出力をそのまま表示するので、文面はコマンドと同じです(最後に「Completed with errors, see above」と出ます)。下の出力は、手元のサーバーに対して実際に出たものです。

エラー(原文) 原因 直し方
fatal: Authentication failed for 'https://…' 認証情報が違う・期限切れ アカウントを削除して足し直す(OAuth)
Permission denied (publickey). SSH の鍵が使われていない・未登録 鍵の読み込みと公開鍵の登録を確かめる
Host key verification failed. 接続先のホスト鍵を確かめられない 一度ターミナルで接続して登録する
WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! 記録したホスト鍵と違う 公式の指紋と照らしてから前の記録を消す
warning: in the working copy of '…', CRLF will be replaced by LF … 改行コードの変換の予告 .gitattributes で決める
fatal: Unable to create '…/.git/index.lock': File exists. 別の Git が動いている・落ちた Git が動いていなければ index.lock を消す
! [rejected] main -> main (fetch first) サーバーが先に進んでいる プルしてからプッシュ
fatal: Need to specify how to reconcile divergent branches. プルの取り込み方が決まっていない プルの画面でリベースを選ぶ・pull.rebase を設定
error: Your local changes to the following files would be overwritten by merge: 手元の変更とぶつかる コミットかスタッシュしてからプル
CONFLICT (content): Merge conflict in … 同じ場所を両方で変えた 自分・相手を使用、または手で直す
Author identity unknown 名前・メールが無い 名前とメールを設定する
error: gpg failed to sign the data コミットの署名に失敗(gpg が見つからない等) gpg を入れるか commit.gpgsign を false

認証失敗(Authentication failed)

HTTPS で、違うトークンを入れたときの出力です。認証の入力ができない状態では、2つ目のエラーになりました。

$ git clone http://127.0.0.1:31000/app.git bad
Cloning into 'bad'...
fatal: Authentication failed for 'http://127.0.0.1:31000/app.git/'

$ GIT_TERMINAL_PROMPT=0 git clone http://127.0.0.1:31000/app.git bad2
Cloning into 'bad2'...
fatal: could not read Username for 'http://127.0.0.1:31000': terminal prompts disabled

GitHub に HTTPS でアカウントのパスワードを送ると、2021年8月13日以降は remote: Support for password authentication was removed on August 13, 2021. と返されて失敗します。Sourcetree での直し方は次の順です。

1

アカウントを削除して足し直す

アカウント設定で該当のアカウントを削除し、Auth Type の既定(ブラウザでの OAuth)で追加し直します。Atlassian コミュニティでも、OAuth で足し直して直った例が報告されています。

まずこれ

2

既定のアカウントを選ぶ

同じサービスのアカウントが複数あるときは、Options の Authentication で既定のアカウントを選びます。

複数アカウントのとき

3

保存された認証情報を消す

Windows は資格情報マネージャー、Mac はキーチェーンアクセスに、以前の認証情報が残っていることがあります。該当のサービスのものを消してから接続し直します。

何度も聞かれるとき

4

トークンで入れる

パスワード欄には GitHub は personal access token、Bitbucket Cloud は API トークンを入れます。

パスワードは使えない

SSH 鍵のエラー(Permission denied・Host key verification failed)

登録していない鍵で SSH の Git サーバーに接続したときの出力です。

$ git clone s310:app.git sshclone
Cloning into 'sshclone'...
root@127.0.0.1: Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

(s310 は ~/.ssh/config に書いた接続先の別名です。)GitHub Docs は、このエラーのときに ssh -vT git@github.com で使われている鍵を確かめ、ssh-add -l -E sha256 の指紋と GitHub の「SSH and GPG keys」の一覧を照らすよう案内しています。よくある原因は、鍵が ssh-agent(Windows の Sourcetree では Pageant)に読み込まれていない、公開鍵を登録していない、URL のユーザー名が git ではない、のどれかです。

初めての接続先で、ホスト鍵(サーバーの身元を示す鍵)を確かめられないときは次の出力でした。

$ git clone s310:app.git sshclone
Cloning into 'sshclone'...
No ED25519 host key is known for [127.0.0.1]:31022 and you have requested strict checking.
Host key verification failed.
fatal: Could not read from remote repository.

Sourcetree では、ホスト鍵の確認に答えられずに処理が終わらなくなった例が Atlassian コミュニティに報告されています(Windows で PuTTY を使う設定では「The server's host key is not cached in the registry.」)。一度ターミナルで ssh -T git@github.com を実行し、表示された指紋が GitHub Docs の公開している指紋(Ed25519 は SHA256:+DiY3wvvV6TuJJhbpZisF/zLDA0zPMSvHdkr4UvCOqU)と同じことを確かめてから yes で登録すると、Sourcetree からも接続できます。

記録したホスト鍵と、サーバーが出したホスト鍵が違うときは、次の警告で止まりました。

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
(略)
Offending ED25519 key in ~/.ssh/known_hosts:1
  remove with:
  ssh-keygen -f '~/.ssh/known_hosts' -R '[127.0.0.1]:31022'
Host key for [127.0.0.1]:31022 has changed and you have requested strict checking.
Host key verification failed.

サービスがホスト鍵を変えたと公式に発表している場合だけ、表示された ssh-keygen -R で前の記録を消して、接続し直します。鍵の作り方と GitHub への登録は、関連記事「SSH鍵の作成とGitHub接続|Permission deniedの対処法」で扱っています。

認証のエラーは、URL の形とエラーの文で直し方が分かれます。

flowchart TD
    A{URL の形} -->|HTTPS| B[OAuth で<br>足し直す]
    A -->|SSH| C{エラーの文}
    C -->|Permission| D[鍵の登録を<br>確かめる]
    C -->|Host key| E[指紋を確かめ<br>登録する]

改行コード(CRLF will be replaced by LF)

Windows(改行が CRLF)と Mac・Linux(改行が LF)で同じリポジトリを使うと、改行コードの警告や、全行が変わったように見える差分が出ます。core.autocrlf の設定ごとに、実際に出た警告です。

$ git -c core.autocrlf=input add win.txt
warning: in the working copy of 'win.txt', CRLF will be replaced by LF the next time Git touches it

$ git -c core.autocrlf=true add unix.txt
warning: in the working copy of 'unix.txt', LF will be replaced by CRLF the next time Git touches it

$ git -c core.autocrlf=input -c core.safecrlf=true add win.txt
fatal: CRLF would be replaced by LF in win.txt

警告は「次に Git がこのファイルを書き出すときに改行を変える」という予告で、エラーではありません。core.safecrlf=true にすると、警告の代わりに追加が止まります。

LF でコミットしたファイルを、エディタが CRLF で保存し直すと、中身を変えていなくても全行が変わった差分になりました。行末の ^M が CR です。

$ git diff --stat
 f.txt | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

$ git diff | cat -A
-a$
-b$
-c$
+a^M$
+b^M$
+c^M$

チームで揃えるには、リポジトリに .gitattributes を置きます。個人の core.autocrlf の設定より優先されるので、Sourcetree の人とコマンドの人で結果が揃います。

$ cat .gitattributes
* text=auto
*.bat text eol=crlf
*.sh text eol=lf
*.png binary

$ git add --renormalize .

$ git ls-files --eol
i/lf    w/lf    attr/text=auto          unix.txt
i/lf    w/crlf  attr/text=auto          win.txt

i/lf はリポジトリの中が LF、w/crlf は作業フォルダが CRLF という意味です。Windows 版 Sourcetree は 3.4.27 で autocrlf の値を管理する画面が改善されています(リリースノートより)。設定の違いと選び方は、関連記事「Git改行コード設定|autocrlfと.gitattributesの違い」で扱っています。

index.lock が残っている

Sourcetree とターミナルで同時に操作したときや、操作中に Sourcetree が落ちたときに出ます。

$ git add README.md
fatal: Unable to create '(リポジトリのフォルダ)/.git/index.lock': File exists.

Another git process seems to be running in this repository, e.g.
an editor opened by 'git commit'. Please make sure all processes
are terminated then try again. If it still fails, a git process
may have crashed in this repository earlier:
remove the file manually to continue.

(実際の表示ではフォルダのパスが出ます。)Git の処理が動いていないことを確かめてから、.git/index.lock を消すと操作できるようになりました。

手元の変更があってプルできない

手元で変えたファイルを、サーバー側でも変えていると、プルが止まりました。スタッシュしてからプルし、スタッシュを戻すと、同じ場所を変えていればコンフリクトになります。

$ git pull --no-rebase origin main
error: Your local changes to the following files would be overwritten by merge:
    src/app.py
Please commit your changes or stash them before you merge.
Aborting
Merge with strategy ort failed.

$ git stash
Saved working directory and index state WIP on main: 170e93c 修正だけ欲しい

$ git pull --no-rebase origin main
Merge made by the 'ort' strategy.
 src/app.py | 1 +
 1 file changed, 1 insertion(+)

$ git stash pop
Auto-merging src/app.py
CONFLICT (content): Merge conflict in src/app.py
(略)
The stash entry is kept in case you need it again.

コンフリクトしたとき、スタッシュは消えずに残ります。直した後に、スタッシュの一覧から削除します。

Sourcetree・GitHub Desktop・VS Code・コマンドの違い

この節では、Git を操作するほかの手段との違いを、事実で比べます(2026年10月22日時点、各公式ドキュメントによる)。

項目 Sourcetree GitHub Desktop VS Code の Git git コマンド
提供元 Atlassian GitHub Microsoft Git プロジェクト
対応 OS Windows・Mac Windows 10 64bit 以降・macOS 12 以降(Linux は公式には無し) Windows・Mac・Linux Windows・Mac・Linux
料金・ライセンス 無料 無料・MIT ライセンス 無料 無料・GPLv2
アカウント Atlassian アカウントが要る GitHub アカウントでサインイン 不要(Git の名前・メールは要る) 不要
主な特徴 行単位のステージ、Git-flow、LFS、インタラクティブリベース、Mercurial GitHub のプルリクエストとの連携 エディタの中で完結、3-way マージエディター、Source Control Graph すべての機能・スクリプトで使える

Sourcetree は同梱の Git でも動き、VS Code は PC に入れた Git を使います(VS Code の公式ドキュメント)。GitHub Desktop の対応 OS とライセンスは GitHub Docs と GitHub の desktop リポジトリで確かめました。どれも中で動いているのは同じ Git なので、1つのリポジトリを Sourcetree とターミナルの両方で操作できます。よく使う git コマンドの一覧は、関連記事「Gitコマンド一覧|やりたいこと別の早見表と実行結果・エラー対処」で扱っています。

迷ったときの判断表

この節では、よくある状況ごとに、Sourcetree でどの操作を選ぶかを引けます。

状況 Sourcetree の操作 裏のコマンド
朝、作業を始める フェッチ → ↓ があればプル git fetch → git pull
1つのファイルの一部だけコミットしたい 差分で「ハンクをステージ」 git add -p
急ぎの修正が入った スタッシュ → ブランチを作成 git stash → git checkout -b
プッシュ前のコミットのメッセージを直したい コミット オプション →「直前のコミットを上書き」 git commit --amend
プッシュ済みのコミットを取り消したい コミット適用前に戻す… git revert ID
プッシュ前のコミットを外して作り直したい このコミットまで戻す(soft か mixed) git reset --soft/--mixed
別ブランチの1コミットだけ欲しい チェリーピック git cherry-pick ID
プッシュが rejected プル → プッシュ git pull → git push
何度もパスワードを聞かれる アカウントを OAuth で足し直す 認証情報の更新

よくある質問

Q. Sourcetreeとは何ですか? A. Atlassian が出している、Git をボタンで操作できる Windows・Mac 用の無料アプリです。ボタンを押すと裏で git コマンドが動きます。対応表は「Sourcetreeのボタンと裏で動くgitコマンドの対応表」の節にあります。

Q. Sourcetree は無料ですか? A. 無料です(2026年10月22日時点)。公式サイトの見出しも「A free Git client for Windows and Mac」です。使うには Atlassian アカウントが要ります。

Q. Sourcetree のダウンロードとインストールの方法は? A. sourcetreeapp.com から Windows は exe、Mac は zip を落として開き、利用規約に同意して Atlassian アカウントでサインインします。手順は「Sourcetreeのインストール」の節にあります。

Q. Atlassian アカウントなしで使えますか? A. 公式のインストール手順では、Sourcetree を使うには Atlassian アカウントが要るとされています。アカウントは無料で作れます。

Q. Sourcetree を日本語にするには? A. Mac 版は macOS の言語設定に従います。Windows 版は「Tools → Options → General」の Language で日本語を選びます。

Q. Sourcetree は Linux で使えますか? A. 公式の提供は Windows と Mac だけです。Linux では git コマンドや、Linux に対応した VS Code の Git などを使います。

Q. Sourcetree で GitHub と連携するには? A. アカウント設定で Add → Host に GitHub を選び、Connect Account でブラウザからサインインします。HTTPS でパスワードを聞かれたら、パスワードではなく personal access token を入れます。

Q. Sourcetree で認証に失敗する・パスワードを何度も聞かれるときは? A. アカウントを削除して OAuth で足し直し、Windows の資格情報マネージャーや Mac のキーチェーンに残った以前の認証情報を消します。手順は「認証失敗」の節にあります。

Q. フェッチとプルの違いは? A. フェッチはサーバーの新しいコミットを取ってくるだけで、自分のファイルは変わりません。プルはフェッチしてから今のブランチに取り込みます。

Q. コンフリクトはどう解消しますか? A. 競合したファイルを右クリックし、「競合を解決」から「自分」か「相手」を使うか、エディタや外部マージツールで印(<<<<<<< など)を消して保存し、コミットします。リベース中は自分と相手が逆になります。

Q. コミットを取り消すには? A. プッシュ済みなら「コミット適用前に戻す…」(git revert)、プッシュ前なら「このコミットまで戻す」(git reset)を使います。hard はコミットしていない変更も消えます。

Q. Sourcetree が重いときは? A. Sourcetree は画面の更新のたびに git コマンドを実行するので、ファイルの多いリポジトリでは時間がかかります。履歴の表示を今のブランチだけに絞る、使わないリポジトリのタブを閉じる、Windows 版を最新版(3.4.32)にする、といった方法があります。3.4.32 では大きなリポジトリで「Jump to Commit」が初回に動かない不具合が直っています。

まとめ

  • Sourcetree は Atlassian の無料の Git GUI クライアント。Windows 版 3.4.32・Mac 版 4.2.19(2026年10月22日時点)。使うには Atlassian アカウントが要る。
  • ボタンを押すと、-c core.quotepath=false -c diff.mnemonicprefix=false --no-optional-locks を付けた git コマンドが動く。日本語のファイル名を表示し、index のロックを避けるための設定。
  • ステージ=git add、コミット=git commit、プッシュ=git push、フェッチ=git fetch、プル=git pull、スタッシュ=git stash、コミット適用前に戻す=git revert。
  • プッシュが rejected のときはプルしてから。両方が進んでいるときは、プルの画面でマージかリベースかを決める。
  • 認証失敗はアカウントを OAuth で足し直す。SSH は鍵の読み込みと公開鍵の登録、初回はターミナルでホスト鍵を登録。改行コードは .gitattributes で揃える。

参考・出典

確認日はいずれも 2026年10月22日です。

  • Sourcetree 公式サイト:https://www.sourcetreeapp.com/
  • Sourcetree ダウンロードアーカイブ(版と公開日):https://www.sourcetreeapp.com/download-archives
  • Sourcetree for Windows リリースノート:https://product-downloads.atlassian.com/software/sourcetree/windows/ga/ReleaseNotes_3.4.32.html
  • Sourcetree for Mac リリースノート:https://product-downloads.atlassian.com/software/sourcetree/ReleaseNotes/Sourcetree_4.2.19.html
  • Atlassian「Sourcetree(日本語)」:https://www.atlassian.com/ja/software/sourcetree
  • Atlassian「Install Sourcetree」:https://confluence.atlassian.com/get-started-with-sourcetree/install-sourcetree-847359094.html
  • Atlassian「Connect your Bitbucket or GitHub account」:https://confluence.atlassian.com/get-started-with-sourcetree/connect-your-bitbucket-or-github-account-847359096.html
  • Atlassian「Commit and push a change (Git)」:https://confluence.atlassian.com/get-started-with-sourcetree/commit-and-push-a-change-git-847359114.html
  • Atlassian「Merge changes from one branch to another (Git)」:https://confluence.atlassian.com/get-started-with-sourcetree/merge-changes-from-one-branch-to-another-git-847359121.html
  • Atlassian「Using Embedded Git or System Git in Sourcetree」:https://support.atlassian.com/sourcetree/kb/using-embedded-git-or-system-git-in-sourcetree/
  • Atlassian「Reset Branch to a Commit」:https://support.atlassian.com/sourcetree/kb/reset-branch-to-a-commit/
  • Bitbucket Cloud ドキュメント「Git リポジトリをクローンする」:https://support.atlassian.com/ja/bitbucket-cloud/docs/clone-a-git-repository/
  • Bitbucket Cloud ドキュメント「新しいブランチでクローンして変更を加える」:https://support.atlassian.com/ja/bitbucket-cloud/docs/clone-and-make-a-change-on-a-new-branch/
  • Bitbucket Cloud ドキュメント「Sourcetree ブランチを使用して更新をマージする」:https://support.atlassian.com/ja/bitbucket-cloud/docs/use-sourcetree-brances-to-merge-an-update/
  • Bitbucket Cloud ドキュメント「Sourcetree を使用して SSH を設定する」:https://support.atlassian.com/ja/bitbucket-cloud/docs/set-up-ssh-with-sourcetree/
  • Bitbucket Cloud ドキュメント「Windows で個人用 SSH キーを設定する」:https://support.atlassian.com/ja/bitbucket-cloud/docs/set-up-personal-ssh-keys-on-windows/
  • Bitbucket Cloud ドキュメント「API tokens」:https://support.atlassian.com/bitbucket-cloud/docs/app-passwords/
  • Atlassian Community(Sourcetree が実行した push のコマンド):https://community.atlassian.com/forums/Sourcetree-questions/What-does-these-command-line-means-when-pushing-code-to-remote/qaq-p/1275613
  • Atlassian Community(fetch・pull のコマンド):https://community.atlassian.com/forums/Sourcetree-questions/Getting-error-while-pull-in-SourceTree/qaq-p/2243040
  • Atlassian Community(ホスト鍵が登録されていないときの症状):https://community.atlassian.com/forums/Sourcetree-questions/Cannot-fetch-push-or-pull-on-Sourcetree-for-Windows/qaq-p/1012716
  • Atlassian Community(パスワードを何度も聞かれるときの直し方):https://community.atlassian.com/forums/Sourcetree-questions/How-to-fix-the-issue-where-SourceTree-keeps-asking-for-my-GitHub/qaq-p/1631342
  • Atlassian Jira「SRCTREEWIN-10744」(submodule sync のコマンド):https://jira.atlassian.com/browse/SRCTREEWIN-10744
  • pre-commit Issue #1557(Mac 版のコミットのコマンド):https://github.com/pre-commit/pre-commit/issues/1557
  • ICS MEDIA「Sourcetreeでコミットを取り消す・修正する方法」(日本語の画面名):https://ics.media/entry/3184/
  • ICS MEDIA「SourceTreeの使い方」(スタッシュ・タグの画面名):https://ics.media/entry/1365/
  • 窓の杜「SourceTree for Windows v1.4.0.0」(日本語対応):https://forest.watch.impress.co.jp/docs/news/20140130_633112.html
  • Git 公式マニュアル「git」(-c・--no-optional-locks):https://git-scm.com/docs/git
  • Git 公式マニュアル「git-config」:https://git-scm.com/docs/git-config
  • Git 公式マニュアル「git-checkout」(--ours・--theirs):https://git-scm.com/docs/git-checkout
  • Git 公式マニュアル「gitattributes」:https://git-scm.com/docs/gitattributes
  • GitHub Docs「リモートリポジトリについて」:https://docs.github.com/ja/get-started/git-basics/about-remote-repositories
  • GitHub Docs「GitHub の SSH キーフィンガープリント」:https://docs.github.com/ja/authentication/keeping-your-account-and-data-secure/githubs-ssh-key-fingerprints
  • GitHub Docs「エラー: Permission denied (publickey)」:https://docs.github.com/ja/authentication/troubleshooting-ssh/error-permission-denied-publickey
  • GitHub Blog「Token authentication requirements for Git operations」:https://github.blog/security/application-security/token-authentication-requirements-for-git-operations/
  • GitHub Docs「GitHub Desktop のインストール」:https://docs.github.com/ja/desktop/installing-and-authenticating-to-github-desktop/installing-github-desktop
  • GitHub「desktop/desktop」:https://github.com/desktop/desktop
  • Visual Studio Code「Source Control」:https://code.visualstudio.com/docs/sourcecontrol/overview
  • Apple サポート「開発元が不明な Mac アプリを開く」:https://support.apple.com/ja-jp/guide/mac-help/mh40616/mac

本記事の内容は、ご自由にお使いください。
ご利用の際は、出典として本ページへのリンクを記載いただけますようお願いします。

(記載例)出典:株式会社RJC「Sourcetreeの使い方|インストールからボタンの裏のgitコマンドまで」

株式会社RJC ― SI事業・SES事業・AI駆動開発。RJCは一緒に成長を楽しめる会社です。

WE ARE HIRING

RJCで一緒に開発しながら、
成長を楽しみませんか?

RJCは、Web・モバイル・AIを活用した開発プロジェクトで、テックリードやPM・PMOも活躍するシステム開発会社です。会社を知る、待遇を確かめる、話を聞いてみる。気になるところ見てみてください!

  • 127日年間休日
  • 12時間平均残業時間
  • 毎日ガチャ遊びココロも大切にする福利厚生。アマギフなどの賞品ラインナップ!

ほかにも、チケットレストラン、書籍読み放題、2年ごとの慰労報奨(休暇 or 金一封)、11期連続の黒字決算。

ABOUT RJC RJCがどんな会社か知る 考え方、研修、働き方、福利厚生、社員の前職まで。RJCのことが丸わかり! RJC丸わかりページへ JOB DESCRIPTION 仕事内容・待遇を見てみる 仕事内容、給与・待遇、選考の流れ。経験者も未経験も!応募前に知りたいこと、まとめました! 募集要項を見る ENTRY エントリーする エントリーは1〜2分・履歴書不要です。まずは話を聞いてみたい、という方でも歓迎です! エントリーフォームへ

RJCで一緒に開発しながら、 成長を楽しみませんか?