Sourcetreeを入れてみたものの、ボタンが多くてどこから押せばいいか分からない。そんな人に向けて、サンプル料理教室の代表が料金表を直してGitHubへ送るまでを順に書きます。どの道具を選ぶかの話は「GitHub Desktop・Sourcetree・VS Codeの使い方と選び方」に書いたので、ここではSourcetreeを使うと決めた人の手順に絞ります。読み終わると、画面のどこを見ればいいかが分かり、コミットから枝の合流、取り消しまで自分で判断できます。
画面の文言はAtlassianの公式の案内に載っているものだけを書き、同じことをするGitのコマンドは実際に動かした表示を載せています。メニューの位置は版によって違うことがあります。見つからないときは、コマンドで同じことができます。
この記事の内容
先に答えると
SourcetreeはAtlassianが無料で出しているGitの操作アプリで、MacとWindowsで動きます。基本の流れは、「File Status」で変更を見る、「Stage file」でコミットに入れるものを選ぶ、「Commit」で手元に記録する、「Push」でGitHubへ送る、の4つです。
- 使い始めるにはAtlassianのアカウントが要ります
- GitHubとは「Connect Account」で繋ぎます。パスワードを入れる方式は廃止されています
- 履歴の画面の呼び名は、Macが「History」、Windowsが「Log/History」です
- 取り消しで一番危ないのは、「Reset current branch to this commit」のHardです。コミットしていない変更が消えます
- プルリクエストはブラウザで作るのが確実です
Sourcetreeとは
Sourcetreeは、Gitの操作をボタンでできるアプリです。Gitは変更の履歴を残す仕組みそのもので、GitHubはその履歴を預けておくサービスです。Sourcetreeはどちらでもなく、Gitに命令を出す窓口にあたります。なので途中でコマンドや別のアプリに変えても、履歴はそのまま使えます。
2026年11月時点の版は、Macが4.2.20、Windowsが3.4.33です。Mac版はmacOS 10.15以降が必要です。Windows版は.NET Framework 4.8を使います。
Gitは別に入れなくても、Sourcetreeの中に組み込みのGitが入っています。公式の更新履歴に組み込みのGitの更新が繰り返し載っています。ただしターミナル(文字で命令するための画面)でもGitを使うなら、「Gitのインストールと初期設定:MacとWindows、名前とメールと認証」の手順で別に入れておきます。この記事の衝突の手順でもコマンドを使います。
入れて、GitHubと繋ぐ
インストールする
sourcetreeapp.comを開きます。- ダウンロードのボタンを押します。
- ダウンロードしたファイルを開きます。Macはdmg、Windowsはexeです。
- Atlassian Customer Agreementに同意して「Continue」を押します。
- Atlassianのアカウントがあれば「Use an existing account」を押します。無ければ「Go to My Atlassian」から作り、戻って同じボタンを押します。
- クローンをまだしないなら「Skip Setup」を押します。
BitbucketやGitHubの情報を聞かれたら、既定のまま進めます。SSH鍵の作成を求められて先へ進めないときは、「HTTPS」を選びます。
GitHubのアカウントを繋ぐ
- 「•••」のメニューから「Accounts」を選びます。
- 「Accounts」のタブで「Add」を押します。
- 「Host」でGitHubを選びます。
- 「Auth Type」は既定のままにします。
- 「Connect Account」を押します。
- 開いたブラウザでGitHubにサインインして、許可します。
- 接続の方式で「HTTPS」を選びます。
既定の方式はOAuthです。OAuthは、パスワードをアプリに渡さず、GitHubの画面で許可だけを出す方式です。Mac版の更新履歴には、既定のブラウザでサインインする形に変えたと書かれています。
Basicというパスワードの方式は、Mac版は4.2.2、Windows版は3.4.12で外れました。代わりに個人用アクセストークン(パスワードの代わりに使う長い文字列)も使えるようになりました。トークンはGitHubの右上のアイコンから「Settings」、「Developer settings」と進んで作れます。「Auth Type」の一覧での呼び名は、公式の案内に載っていません。ブラウザの方式で繋げるなら、トークンは要りません。

画面の読み方
Sourcetreeの画面は2種類あります。リポジトリ(ファイルと変更履歴を入れておく場所)の一覧を出す窓と、1つのリポジトリを開いたときの窓です。
最初の一覧の窓には「Local」と「Remote」のボタンがあります。「Local」は手元にあるリポジトリ、「Remote」はGitHubなどにあってクローンできるリポジトリです。クローンは、リポジトリを手元に持ってくる操作です。「New」は新しく作ったり、繋いだりするためのボタンです。
リポジトリを開いた窓は、上にボタンの列、左に一覧(サイドバー)、中央に中身が出ます。
| 見たいもの | Mac | Windows | 見えるもの |
|---|---|---|---|
| コミットしていない変更 | 「File Status」 | 「File Status」 | 直したファイルの一覧と差分 |
| 今までの履歴 | 「History」 | 「Log/History」 | コミットの一覧と枝の線 |
| 枝の一覧 | 「Branches」 | 「Branches」 | 手元の枝。ダブルクリックで切り替え |
| GitHub側の枝 | サイドバー | サイドバー | リモートの枝 |
| タグ | サイドバー | サイドバー | 版に付けた名前 |
| 一時退避した変更 | サイドバー | サイドバー | 「Stash」でしまった変更 |
サイドバーの見出しで公式の案内に名前が出てくるのは「Branches」だけです。リモートの枝とタグも、サイドバーの項目として説明されています。Mac版では「Branches」の右側にカーソルを置いて「Show」を押すと、枝の一覧が開きます。
差分は、変わった行だけの表示です。履歴の画面でコミットを複数選ぶと、その間に変わった内容が見られます。
枝の線を読む
ブランチ(枝)は、本筋とは別に作業する線です。Sourcetreeの履歴では色の付いた線で出ます。同じ形をコマンドで出すと、次のようになります。
$ git log --oneline --graph --all
* f01b238 夏の教室を合流
|\
| * 769ea09 夏の教室を追加
* | 1d59116 問い合わせの電話番号を修正
|/
* 5b1017d 料金表を修正
* c205efa 料金表を追加
下が古く、上が新しい順です。読み方は次のとおりです。
| 線の形 | 意味 | この例 |
|---|---|---|
| 1本の線 | 枝が分かれていない | 料金表を追加 から 料金表を修正 まで |
| 2本に分かれる | 枝を作って別々にコミットした | 料金表を修正 の次から |
| 片方の線の上の点 | その枝でのコミット | 夏の教室を追加 は枝、電話番号は本筋 |
| 2本が1つになる点 | 合流(マージ) | 夏の教室を合流 |
外注エンジニアBがいつ枝を切り、いつ合流したかは、この線で追えます。

ボタンとGitのコマンドの対応
外注エンジニアBの説明やAIの作業報告はコマンドで来ます。どのボタンにあたるかが分かれば、話についていけます。
| Sourcetreeの操作 | Gitのコマンド | 何をしているか |
|---|---|---|
| 「Clone」 | git clone | GitHubから手元に持ってくる |
| 「Stage file」 | git add | 次のコミットに入れるものを選ぶ |
| 「Commit」 | git commit | 手元の履歴に記録する |
| 「Push」 | git push | 手元のコミットをGitHubへ送る |
| 「Fetch」 | git fetch | GitHubの状況だけを受け取る。ファイルは変わらない |
| 「Pull」 | git pull | GitHubの変更を手元に取り込む |
| 「Branch」 | git switch -c 枝の名前 | 枝を作って移る |
| 「Checkout」または枝のダブルクリック | git switch 枝の名前 | 枝を切り替える |
| 「Merge」 | git merge 枝の名前 | 別の枝を今の枝に合流させる |
| 「Stash」 | git stash | コミットしていない変更を一時的にしまう |
Stashは、料金表を直している途中で、急ぎの別の修正が入ったときに使います。変更がしまわれ、ファイルが直前のコミットの状態に戻ります。
$ git status --short
M menu.html
$ git stash
Saved working directory and index state WIP on main: f01b238 夏の教室を合流
$ git status --short
$ git stash pop
M は変更ありの印です。git stash のあとの git status --short は何も出していません。git stash pop で、しまった変更が戻ります。
料金表を直して、GitHubへ送る
sample-cooking/website を手元に持ってきて、menu.html の基本コースを5,000円から5,500円に直す例です。
クローンする
- 最初の窓の「Remote」を押します。
- 一覧の
sample-cooking/websiteの横の「Clone」を押します。 - 開いた「Clone a repository」の窓で「Clone」を押します。
- 「Local」を押します。一覧に
websiteが出ていれば完了です。
直して、ステージして、コミットする
ステージは、次のコミットに入れるものを選ぶ操作です。コミットは、変更を1回分の記録として手元の履歴に残す操作です。
websiteをダブルクリックして開きます。menu.htmlをエディタで開いて金額を直し、保存します。- Sourcetreeに戻ります。
menu.htmlが一覧に出ます。 menu.htmlを選びます。- 差分で、金額の行だけが変わっているか見ます。
menu.htmlの横のメニューを開いて「Stage file」を選びます。- 上の「Commit」を押します。
- メッセージの欄に「料金表を修正」と書きます。
- 欄の下の「Commit」を押します。ここではまだ手元に記録しただけです。
.env のようにパスワードが入るファイルが一覧に出ても、ステージしません。入れてはいけないものの扱いは「.gitignoreの書き方と、リポジトリに入れてはいけないファイル」に書きました。

プッシュする
プッシュは、手元のコミットをGitHubへ送る操作です。
- 上の「Push」を押します。
- 開いた窓の「Push?」の列で
mainを選びます。 - 「OK」を押します。
- 履歴の画面に切り替えて、「料金表を修正」が出ているか見ます。
同じことをコマンドでやると、次のように出ます。To の行の場所は練習用のフォルダなので縮めてあります。本物ならGitHubのURLです。
$ git status --short
M menu.html
$ git add menu.html
$ git commit -m "料金表を修正"
[main 5b1017d] 料金表を修正
1 file changed, 1 insertion(+), 1 deletion(-)
$ git push origin main
To …/remote/website.git
c205efa..5b1017d main -> main
3つのコマンドの違いは「git add・commit・pushの違い:保存して送るまでの流れ」に書きました。
受け取る
外注エンジニアBが先に送ったものは、次の順で手元に取り込みます。
- 上の「Fetch」を押します。
- 上の「Pull」を押します。
- 開いた窓で「OK」を押します。
枝を作ってプルリクエストへ
プルリクエスト(Pull Request、PR)は、枝の変更を本筋に入れていいかを確認する依頼です。夏の教室を add-summer-class という枝で作る例です。
- 上の「Branch」を押します。
- 「New Branch」の欄に
add-summer-classと書きます。 - 「Create Branch」を押します。これで新しい枝に移っています。
menu.htmlを直して保存します。menu.htmlの横のメニューから「Stage file」を選びます。- 上の「Commit」を押します。
- メッセージの欄に「夏の教室を追加」と書きます。
- 欄の下の「Commit」を押します。
- 上の「Push」を押します。
- 「Push?」の列で
add-summer-classを選びます。 - 「OK」を押します。
- もう一度「OK」を押して完了します。
- ブラウザで
sample-cooking/websiteを開きます。 - 「Compare & pull request」を押します。
- 題名と説明を書きます。
- 「Create pull request」を押します。
Sourcetreeからプルリクエストを作る機能はありますが、GitHub相手の今の手順は公式の案内に載っていません。ブラウザなら確実です。レビューからマージまでは「プルリクエストとは:作り方・レビュー・マージの流れ」に続きます。
手元で枝を合流させる
プルリクエストを使わずに手元で合流させるときの手順です。add-summer-class を main に入れる例です。
- 枝の一覧で
mainをダブルクリックします。 - 上の「Merge」を押します。
- 開いた窓で
add-summer-classのコミットを選びます。 - 「Create a commit even if merge resolved via fast-forward」にチェックを入れます。
- 「OK」を押します。
手順4は、合流した記録をコミットとして必ず残す指定です。あとから枝の線を見たときに、どこで合流したかが分かります。
衝突が出たとき
衝突(コンフリクト)は、同じファイルの同じ行を2人が変えて、どちらを残すかをGitが決められない状態です。壊れたわけではありません。
公式の入門の案内には、衝突を直す手順がありません。更新履歴には、Mac版の「Resolve Using Mine」「Resolve Using Theirs」「Resolve In Merge Tool」、Windows版の「Ctrl+D」で外部の合流ツールを開く操作が載っています。Mineは自分の側、Theirsは相手の側を丸ごと採用する操作です。Mac版の4.2.6ではこの2つが入れ替わる不具合が直されています。Mine・Theirsを使ったら、結果の差分を必ず見ます。
画面の項目の位置は版で変わるので、ここでは確実なコマンドの手順を書きます。
- Sourcetreeで「Merge」を実行して、衝突で止まったことを確かめます。
menu.htmlをエディタで開きます。<<<<<<<、=======、>>>>>>>の3つの記号を消して、残す内容だけにします。- 保存します。
- ターミナルで
git add menu.htmlを打ちます。 - ターミナルで
git commit --no-editを打ちます。 - Sourcetreeに戻って、履歴の線が合流しているか見ます。
実際に動かすと、次のように出ます。
$ git merge fix-menu-price
Auto-merging menu.html
CONFLICT (content): Merge conflict in menu.html
Automatic merge failed; fix conflicts and then commit the result.
$ cat menu.html
<<<<<<< HEAD
<p>基本コース 5,600円</p>
=======
<p>基本コース 5,800円</p>
>>>>>>> fix-menu-price
<p>夏の教室 7,000円</p>
$ git status --short
UU menu.html
UU が、両方が変えて止まっているファイルの印です。5,800円が正しいと分かったので、記号と5,600円の行を消して続けます。
$ git add menu.html
$ git commit --no-edit
[main ab25101] Merge branch 'fix-menu-price'
$ git log --oneline --graph -4
* ab25101 Merge branch 'fix-menu-price'
|\
| * 20385d7 基本コースを5,800円に修正
* | 3263873 基本コースを5,600円に修正
|/
* e30541c 住所を追加
どちらが正しいかを決めるのは料金を決めた人です。やめ方やGitHubの画面での直し方は「コンフリクトの直し方:起きる理由と、解消の手順」に書きました。
取り消しの3つ。どれが戻せないか
Sourcetreeの取り消しは、名前が似ていて消える範囲が違います。
| 操作 | Gitのコマンド | 何が起きるか | 戻せるか |
|---|---|---|---|
| Discard(Windowsの右クリックは「Discard File Changes」。Macの表記は版による) | git restore | コミットしていない変更を捨てる | 戻せない |
| Reverse commit | git revert | 変更を打ち消す新しいコミットを足す | 戻せる。元のコミットも残る |
| Reset current branch to this commit | git reset | 枝の先頭を過去のコミットへ動かす | 種類によって違う |
Discardは、ファイル単位だけでなく行単位でも捨てられます。Gitはコミットされていない内容を記録していないので、捨てたら履歴からは取り戻せません。
Reverse commitは、送ったあとの取り消しに使います。Gitの公式の説明どおり、元のコミットを消さず、打ち消す記録を増やします。
$ git revert --no-edit HEAD
[main 6e1ba79] Revert "料金を6,000円に変更"
Date: Sun Nov 8 01:03:02 2026 +0900
1 file changed, 1 insertion(+), 1 deletion(-)
$ git log --oneline -3
6e1ba79 Revert "料金を6,000円に変更"
3768f06 料金を6,000円に変更
f01b238 夏の教室を合流
「Reverse commit」という名前の操作がMac版にあります。画面のどこから選ぶかは版で違います。見つからなければ、上のコマンドで同じことができます。
Resetの手順と、Hardの危険
- 履歴の画面で、戻したい先のコミットを右クリックします。
- 「Reset current branch to this commit」を選びます。
- 開いた窓でリセットの種類を選びます。選択肢の名前は版で違うことがあります。次の表はGit本体の
--soft、--mixed、--hardの違いです。 - 「OK」を押します。
| 種類 | コミット | ステージ | 作業中のファイル |
|---|---|---|---|
| Soft | 履歴から外れる | そのまま | そのまま |
| Mixed | 履歴から外れる | 空になる | そのまま |
| Hard | 履歴から外れる | 空になる | 消えて、そのコミットの状態になる |
Hardを押す前に、作業中の変更が無いか「File Status」で必ず見ます。次の例では、まだコミットしていない index.html の変更が、Hardで消えています。
$ git status --short
M index.html
$ git reset --hard HEAD~2
HEAD is now at f01b238 夏の教室を合流
$ git status --short
$ git reflog -3
f01b238 HEAD@{0}: reset: moving to HEAD~2
6e1ba79 HEAD@{1}: revert: Revert "料金を6,000円に変更"
3768f06 HEAD@{2}: commit: 料金を6,000円に変更
git reflog は枝の先頭が動いた記録です。コミット済みのものはここから番号を探して戻せる場合があります。コミットしていなかった index.html の変更は、この記録にもありません。
GitHubへ送ったコミットにResetを使うと、手元と食い違って普通のプッシュが通らなくなります。外注エンジニアBの手元の履歴ともずれます。送ったあとはReverse commitにします。

できないことと、その代わり
| できないこと | その代わり |
|---|---|
| Linuxで使う | 公式の配布はMacとWindows。VS Codeなどの別の道具を使う |
| Atlassianのアカウントなしで使い始める | 公式の手順ではアカウントが要る。作りたくなければGitHub Desktopにする |
| GitHub特有の設定(枝の保護、権限)を変える | GitHubのブラウザの画面で行う |
| 入れてはいけないファイルを判定して止める | 差分を人が見る。.gitignore で最初から除く |
| 公開中のホームページに反映する | GitHubへ送っただけでは変わらないことがある。反映の仕組みを外注エンジニアBに聞く |
よく詰まるところ
| 症状 | 原因 | 直し方 |
|---|---|---|
| 認証が通らない | 古い版でBasicの方式を使っている。パスワードの方式は外れた | 最新版に上げて、「Auth Type」を既定のままにしてやり直す |
| 繋いであるのに非公開リポジトリが扱えない | Mac版の4.2.1から、非公開・組織のリポジトリを使うにはGitHubアカウントの設定し直しが必要になった。古い設定のままになっている | GitHubの「Settings」から「Applications」の「Authorized OAuth Apps」でSourcetreeを「Revoke」し、繋ぎ直す |
「Remote」に sample-cooking/website が出ない | Organizationが外部アプリのアクセスを制限している(新しいOrganizationでは既定で有効)。または招待を承諾していない | オーナーにSourcetreeを承認してもらう。招待のメールを承諾する |
| SSH鍵を求められて進まない | 接続の方式がSSHになっている | 接続の方式で「HTTPS」を選ぶ |
| Pushが断られる | Bが先に送っている | 「Pull」で取り込んでから「Push」を押す |
Pushしたのに main が変わらない | 「Push?」の列で別の枝を選んだ、または別の枝にいる | 枝の一覧で今の枝を確かめ、選び直す |
| ボタンが灰色で押せない | 公式の案内に条件の説明がない | ターミナルで git status を打ち、Gitの状態を見る。衝突や合流の途中なら先に片付ける |
| 履歴にコミットが出ない | 枝の絞り込みで別の枝だけを出している | 履歴の画面の枝の絞り込みを見直す |
ボタンが灰色の件は、Gitの表示で状況が読めます。nothing to commit, working tree clean なら記録するものがありません。Unmerged paths なら衝突の途中です。
次に読む
- GitHub Desktop・Sourcetree・VS Codeの使い方と選び方
- GitHub Desktopの使い方:インストールからコミット、プルリクエストまで
- git add・commit・pushの違い:保存して送るまでの流れ
- コンフリクトの直し方:起きる理由と、解消の手順