Sourcetreeの使い方:画面の読み方とコミット・プッシュ・枝の操作

公開 書いた人 大林 諒

Sourcetreeを入れてみたものの、ボタンが多くてどこから押せばいいか分からない。そんな人に向けて、サンプル料理教室の代表が料金表を直してGitHubへ送るまでを順に書きます。どの道具を選ぶかの話は「GitHub Desktop・Sourcetree・VS Codeの使い方と選び方」に書いたので、ここではSourcetreeを使うと決めた人の手順に絞ります。読み終わると、画面のどこを見ればいいかが分かり、コミットから枝の合流、取り消しまで自分で判断できます。

画面の文言はAtlassianの公式の案内に載っているものだけを書き、同じことをするGitのコマンドは実際に動かした表示を載せています。メニューの位置は版によって違うことがあります。見つからないときは、コマンドで同じことができます。

この記事の内容
  1. 先に答えると
  2. Sourcetreeとは
  3. 入れて、GitHubと繋ぐ
  4. 画面の読み方
  5. ボタンとGitのコマンドの対応
  6. 料金表を直して、GitHubへ送る
  7. 枝を作ってプルリクエストへ
  8. 衝突が出たとき
  9. 取り消しの3つ。どれが戻せないか
  10. できないことと、その代わり
  11. よく詰まるところ
  12. 次に読む

先に答えると

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と繋ぐ

インストールする

  1. sourcetreeapp.com を開きます。
  2. ダウンロードのボタンを押します。
  3. ダウンロードしたファイルを開きます。Macはdmg、Windowsはexeです。
  4. Atlassian Customer Agreementに同意して「Continue」を押します。
  5. Atlassianのアカウントがあれば「Use an existing account」を押します。無ければ「Go to My Atlassian」から作り、戻って同じボタンを押します。
  6. クローンをまだしないなら「Skip Setup」を押します。

BitbucketやGitHubの情報を聞かれたら、既定のまま進めます。SSH鍵の作成を求められて先へ進めないときは、「HTTPS」を選びます。

GitHubのアカウントを繋ぐ

  1. 「•••」のメニューから「Accounts」を選びます。
  2. 「Accounts」のタブで「Add」を押します。
  3. 「Host」でGitHubを選びます。
  4. 「Auth Type」は既定のままにします。
  5. 「Connect Account」を押します。
  6. 開いたブラウザでGitHubにサインインして、許可します。
  7. 接続の方式で「HTTPS」を選びます。

既定の方式はOAuthです。OAuthは、パスワードをアプリに渡さず、GitHubの画面で許可だけを出す方式です。Mac版の更新履歴には、既定のブラウザでサインインする形に変えたと書かれています。

Basicというパスワードの方式は、Mac版は4.2.2、Windows版は3.4.12で外れました。代わりに個人用アクセストークン(パスワードの代わりに使う長い文字列)も使えるようになりました。トークンはGitHubの右上のアイコンから「Settings」、「Developer settings」と進んで作れます。「Auth Type」の一覧での呼び名は、公式の案内に載っていません。ブラウザの方式で繋げるなら、トークンは要りません。

GitHubを繋ぐには、Accounts を開いて Host を選び、Connect Account を押す
GitHubを繋ぐには、Accounts を開いて Host を選び、Connect Account を押す

画面の読み方

Sourcetreeの画面は2種類あります。リポジトリ(ファイルと変更履歴を入れておく場所)の一覧を出す窓と、1つのリポジトリを開いたときの窓です。

最初の一覧の窓には「Local」と「Remote」のボタンがあります。「Local」は手元にあるリポジトリ、「Remote」はGitHubなどにあってクローンできるリポジトリです。クローンは、リポジトリを手元に持ってくる操作です。「New」は新しく作ったり、繋いだりするためのボタンです。

リポジトリを開いた窓は、上にボタンの列、左に一覧(サイドバー)、中央に中身が出ます。

見たいものMacWindows見えるもの
コミットしていない変更「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がいつ枝を切り、いつ合流したかは、この線で追えます。

履歴の線が料金表の修正のあとで2本に分かれ、夏の教室の合流で1本に戻る
履歴の線が料金表の修正のあとで2本に分かれ、夏の教室の合流で1本に戻る

ボタンとGitのコマンドの対応

外注エンジニアBの説明やAIの作業報告はコマンドで来ます。どのボタンにあたるかが分かれば、話についていけます。

Sourcetreeの操作Gitのコマンド何をしているか
「Clone」git cloneGitHubから手元に持ってくる
「Stage file」git add次のコミットに入れるものを選ぶ
「Commit」git commit手元の履歴に記録する
「Push」git push手元のコミットをGitHubへ送る
「Fetch」git fetchGitHubの状況だけを受け取る。ファイルは変わらない
「Pull」git pullGitHubの変更を手元に取り込む
「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円に直す例です。

クローンする

  1. 最初の窓の「Remote」を押します。
  2. 一覧の sample-cooking/website の横の「Clone」を押します。
  3. 開いた「Clone a repository」の窓で「Clone」を押します。
  4. 「Local」を押します。一覧に website が出ていれば完了です。

直して、ステージして、コミットする

ステージは、次のコミットに入れるものを選ぶ操作です。コミットは、変更を1回分の記録として手元の履歴に残す操作です。

  1. website をダブルクリックして開きます。
  2. menu.html をエディタで開いて金額を直し、保存します。
  3. Sourcetreeに戻ります。menu.html が一覧に出ます。
  4. menu.html を選びます。
  5. 差分で、金額の行だけが変わっているか見ます。
  6. menu.html の横のメニューを開いて「Stage file」を選びます。
  7. 上の「Commit」を押します。
  8. メッセージの欄に「料金表を修正」と書きます。
  9. 欄の下の「Commit」を押します。ここではまだ手元に記録しただけです。

.env のようにパスワードが入るファイルが一覧に出ても、ステージしません。入れてはいけないものの扱いは「.gitignoreの書き方と、リポジトリに入れてはいけないファイル」に書きました。

File Status で変更を選び、差分を見て Stage file を押し、Commit に進む
File Status で変更を選び、差分を見て Stage file を押し、Commit に進む

プッシュする

プッシュは、手元のコミットをGitHubへ送る操作です。

  1. 上の「Push」を押します。
  2. 開いた窓の「Push?」の列で main を選びます。
  3. 「OK」を押します。
  4. 履歴の画面に切り替えて、「料金表を修正」が出ているか見ます。

同じことをコマンドでやると、次のように出ます。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が先に送ったものは、次の順で手元に取り込みます。

  1. 上の「Fetch」を押します。
  2. 上の「Pull」を押します。
  3. 開いた窓で「OK」を押します。

枝を作ってプルリクエストへ

プルリクエスト(Pull Request、PR)は、枝の変更を本筋に入れていいかを確認する依頼です。夏の教室を add-summer-class という枝で作る例です。

  1. 上の「Branch」を押します。
  2. 「New Branch」の欄に add-summer-class と書きます。
  3. 「Create Branch」を押します。これで新しい枝に移っています。
  4. menu.html を直して保存します。
  5. menu.html の横のメニューから「Stage file」を選びます。
  6. 上の「Commit」を押します。
  7. メッセージの欄に「夏の教室を追加」と書きます。
  8. 欄の下の「Commit」を押します。
  9. 上の「Push」を押します。
  10. 「Push?」の列で add-summer-class を選びます。
  11. 「OK」を押します。
  12. もう一度「OK」を押して完了します。
  13. ブラウザで sample-cooking/website を開きます。
  14. 「Compare & pull request」を押します。
  15. 題名と説明を書きます。
  16. 「Create pull request」を押します。

Sourcetreeからプルリクエストを作る機能はありますが、GitHub相手の今の手順は公式の案内に載っていません。ブラウザなら確実です。レビューからマージまでは「プルリクエストとは:作り方・レビュー・マージの流れ」に続きます。

手元で枝を合流させる

プルリクエストを使わずに手元で合流させるときの手順です。add-summer-class を main に入れる例です。

  1. 枝の一覧で main をダブルクリックします。
  2. 上の「Merge」を押します。
  3. 開いた窓で add-summer-class のコミットを選びます。
  4. 「Create a commit even if merge resolved via fast-forward」にチェックを入れます。
  5. 「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を使ったら、結果の差分を必ず見ます。

画面の項目の位置は版で変わるので、ここでは確実なコマンドの手順を書きます。

  1. Sourcetreeで「Merge」を実行して、衝突で止まったことを確かめます。
  2. menu.html をエディタで開きます。
  3. <<<<<<<、=======、>>>>>>> の3つの記号を消して、残す内容だけにします。
  4. 保存します。
  5. ターミナルで git add menu.html を打ちます。
  6. ターミナルで git commit --no-edit を打ちます。
  7. 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 commitgit revert変更を打ち消す新しいコミットを足す戻せる。元のコミットも残る
Reset current branch to this commitgit 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の危険

  1. 履歴の画面で、戻したい先のコミットを右クリックします。
  2. 「Reset current branch to this commit」を選びます。
  3. 開いた窓でリセットの種類を選びます。選択肢の名前は版で違うことがあります。次の表はGit本体の --soft、--mixed、--hard の違いです。
  4. 「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にします。

コミットを右クリックして Reset を選ぶ流れと、Hard で変更が消える危険
コミットを右クリックして Reset を選ぶ流れと、Hard で変更が消える危険

できないことと、その代わり

できないことその代わり
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 なら衝突の途中です。

次に読む

あわせて読む