初心者向け

【初心者向け】SourceTreeのインストール方法と簡単なGitの使い方

【※ 当記事は2020年7月2日時点の情報です】

ペイヴメント(@pavement1234)です

エンジニア
エンジニア

GitをGUIで操作するためのSourceTreeというツールのインストール方法とGitの基礎的な操作方法を知りたい

こんな悩みを解決します

Gitとはプログラムのソースコードの履歴などを記録・追跡するための分散型バージョン管理システムです。Gitはリーナス・トーバルズがLinuxカーネルのソースコードを管理するために開発したそうです。Gitってちょっと難しい気がして、ついつい慣れてるSubversionでソースコードを管理したくなりますが、そこをぐっと堪えてGitに触れていきたいと思います。

まず分散型という仕組みがGitを難しく感じさせている気がします。サーバと全く同じ環境が自分の手元にクローンされますが、クローンがどんどん増えていったときにどうやって整合性を保つのか、なんてことが気になります。例えば複数人のエンジニアがそれぞれのクローンにコミットすると、同じリビジョンが重複できちゃう気がしてて、一体どうやって整合性を保つのか

【答え】

Gitでコミットするとグローバルでユニークであることを保証するために57228b29d976075bdf47eb9ea7ead44c8b867631というような40桁のハッシュ値が識別番号として付けられるので、同じリビジョンのコミットは原理的に存在しないのです。その前提の元、整合性を保つことが可能になります

詳しい仕組みについては、本文でご説明します

SourceTreeのインストール方法

①ダウンロードページに行く

ここに行きます

≫SourceTree Free Git GUI for Mac and Windows

②インストーラーをダウンロードする

「Download for Windows」をクリック

「I agree …」のチェックをONにして「Download」をクリック

「ファイルを保存」をクリック

③インストールする

インストーラをダブルクリック

Bitbucketのアカウントを持ってる人は「Bitbucket Server」か「Bitbucket」のアイコンをクリック。持っていない方は「Create one for free」をクリック。今回はアカウントを持っていない状態から始める想定で進めます

メールアドレスを入れて「続行」をクリック

「フルネーム」と「パスワード」を入れて「私はロボットではありません」にチェックを入れ「続行」をクリック

認証メールが送られます

認証メールが届くので「Verify your email」をクリック

「ユーザ名」を入れて「続行」をクリック。このユーザ名 がアカウント名になるので慎重に決めてください

アンケートに回答して「続行」をクリック。これでアカウントが作成されました

アカウントが出来たので「Bitbucket」をクリック

「Login to Bitbucket」というメッセージと共にブラウザにBitbucketのログイン画面が開きます

ブラウザ側のログイン画面にログインすると

ブラウザ画面が切り替わり「Authentication Successful」というメッセージが表示される

するとインストーラ側に「登録が完了しました!」というメッセージが出るので「次へ」をクリック

「次へ」をクリック ※Gitだけを試せればよいなら「Mercurial」はOFFにしても良い

ダウンロード中

ダウンロードが終わると「ツールのインストールが完了しました」と表示されるので「次へ」をクリック

Gitのconfigで使われる「ユーザ名」「メールアドレス」が自動入力されます。もし自動入力されなかったら入力し「次へ」をクリック。※後で入力できます

「SSHキーを読み込みますか?」と聞かれるので今回は「NO」を選択 ※ダイアログのキャプチャーに失敗しました SSHキーは後で設定可能です

以上でインストールは完了です

プログラムがどこにインストールされているか

さて、SourceTreeをインストールした後、ショートカットの類が一切生成されていないことに気づきました。スタートメニューにもないし、Program Files、Program Files(x86)にexeもありません。ではどこか?

ここにありました。非常にわかりにくいですね。またAppDataが隠しフォルダになっているのでご注意ください

C:\Users\(ログインユーザ名)\AppData\Local\SourceTree\SourceTree.exe

ローカルリポジトリの作成

①プログラム起動

初期画面はこんな感じです

②ローカルリポジトリを作成

「Create」をクリックし、リポジトリを作成するフォルダを入力後「作成」をクリックします

リポジトリが作成されるとこんな画面になります。「エクスプローラで開く」をクリックします

すると「C:\Git\original」フォルダが開きます。隠しフォルダ「.git」が生成されています

「.git」の中はこんな感じになってます。※直接弄ってはダメ

ファイルを新規作成しコミット(登録)する

①「TEST.txt」を作成

「TEST.txt」を作成します

中身はこんな感じ。※なんでもいいです

/jin-img-shadow]

②ファイルが自動認識されるので、インデックスに追加する

「作業ツリーのファイル」という領域に「TEST.txt」が出現しました。「全てインデックスに追加」をクリック

③コミット(登録)する

「Indexにステージしたファイル」という領域に「TEST.txt」が出現します。一番下の領域に「新規作成」というコミットに関するメッセージを記入し「コミット」をクリック

左側の領域にある「master」をクリックすると、「TEST.txt」のコミット結果がみれます

ファイルを修正してコミットする

①「TEST.txt」に追記する

もともと「TEST」と書いてあったテキストに「1234」を追記して保存しました

アプリに戻り「ファイルステータス」をクリックすると「作業ツリーのファイル」という領域に「TEST.txt」が出現します

先程と同じように「全てインデックスに追加」をクリックすると「Indexにステージしたファイル」という領域に「TEST.txt」が出現します。一番下の領域に「1234を追記」というコミットに関するメッセージを記入し「コミット」をクリック

左側の領域にある「master」をクリックすると、「TEST.txt」のコミット結果がみれます

ファイルを移動したらどうなるか

①「backup」というフォルダを作成し、そのフォルダの中に「TEST.txt」を移動する

アプリに戻り「ファイルステータス」をクリックすると「作業ツリーのファイル」に変化が起きています。「TEST.txt」が削除(-)され「backup/TEST.txt」というファイルが生成(?)されていますので「全てインデックスに追加」をクリックします

「Indexにステージしたファイル」という領域に「backupf/TEST.txt」が出現します。一番下の領域に「backupにTEST.txtを移動」というコミットに関するメッセージを記入し「コミット」をクリック

左側の領域にある「master」をクリックすると、「backup/TEST.txt」のコミット結果がみれます

ファイルを削除した後に変更をキャンセルするとどうなるか

①「backup」フォルダを消す

backupフォルダを消してしまいました

アプリに戻り「ファイルステータス」をクリック。「作業ツリーのファイル」に「backup/TEST.txt」の削除(-)が出現するので、右クリックして「破棄」をクリックします

破棄してよいか聞かれるので「OK」をクリック

削除したハズの「backup」フォルダが 復元されました

アプリに戻ると「backup/TEST.txt」の削除(-)が無かったことになってます

ブランチを作成する

①「ブランチ」をクリックする

masterが選択されている状態で「ブランチ」をクリックします

「新規ブランチ」に「sub」と入力し「ブランチを作成」をクリックします

ブランチのところに「sub」というブランチが作成されました。「sub」に〇が付いていますので現在は「sub」がアクティブになってます

「sub」ブランチにファイルを足して「master」ブランチに切り替える

①「SUB.txt」というファイルを作成しコミットする

「SUB.txt」というファイルを作成します

「SUB」という文字列を入力して保存します

「全てインデックスに追加」をクリックし「Indexにステージしたファイル」に「SUB.txt」を登録し、コミットに関するコメントに「subブランチにSUB.txtを追加」と入力し「コミット」をクリックします

②「master」ブランチに切り替える

「master」ブランチを右クリックして「masterをチェックアウト」をクリックします

「master」ブランチに〇が付きアクティブになりました

「SUB.txt」が消えています。「master」ブランチの世界線では「SUB.txt」が存在しないんですね。ブランチを切り替えるとフォルダ、ファイルが一気に切り替わるのですごく便利です

③「sub」ブランチを「master」ブランチにマージする

「sub」ブランチを右クリックして「現在のブランチにsubをマージ」をクリックします

マージして良いか聞かれるので「OK」をクリックします

「master」ブランチに「sub」ブランチで足した「SUB.txt」の追加が反映されているのでマージ成功です

「master」ブランチにも「SUB.txt」が追加されました

クローンを作成して、プッシュ、プルを行う

いよいよ本題です。「master」ブランチをクローンします。ドキドキ

①「ターミナル」をクリック

「ターミナル」をクリックします

②bareリポジトリを生成する

MINGW32のターミナルが表示されます。「cd ..」で1つ上のディレクトリに移動して「git clone –bare original original.git」というコマンドでbareリポジトリを作成します

クローンするときはまずbareリポジトリを作成してクローン元としなければなりません。通常のリポジトリは作業用のファイルが沢山含まれておりクローンしようとすると失敗します。慣例的にbareリポジトリはフォルダ名の末尾に「.git」をつけます

WinMergeで通常のリポジトリの管理フォルダ「C:\Git\original\.git」とbareリポジトリ「C:\Git\original.git」を比較しました

比較結果が同一となっているフォルダがbareリポジトリに必要なフォルダです 他のフォルダは作業用になります configというファイルをダブルクリックすると…

bareリポジトリ側はbare = trueになっていて、logallrefupdates = trueの行がなく、[ remote “origin”] url = C:\Git\original」が追加されています

③クローン1を作成する

メニューから「新規/クローンを作成する」をクリックします

1番目に先ほど作成したbareリポジトリを指定し、2番目にクローン先フォルダを指定し「クローン」をクリックします

「clone」リポジトリが作成されました

④「clone」リポジトリにファイルを追加して、クローン元のoriginal.git(bareリポジトリ)にプッシュする

「clone」リポジトリに「CLONE.txt」を作成します

「CLONE」という文字列を入力して保存します

「CLONE.txt」をコミットします

「プッシュ」に1というマークが付きました。クローン元のoriginal.git(bareリポジトリ)と比較してcloneリポジトリのコミットが1つ多いことを意味します。クローン元にコミットを反映したいので「プッシュ」をクリックします

「プッシュ」をクリックします。これでクローン元のoriginal.git(bareリポジトリ)に変更が反映されました

⑤クローン2を作成する

メニューから「ファイル」→「新規/クローンを作成する」をクリックします。1番目にbareリポジトリを指定し、2番目にクローン先フォルダを指定し「クローン」をクリックします

「clone2」リポジトリが作成されました

⑥「clone2」リポジトリにファイルを追加して、クローン元のoriginal.git(bareリポジトリ)にプッシュする

「clone2」リポジトリに「CLONE2.txt」というファイルを作成します

「CLONE2」という文字列を入力して保存します

 

「CLONE2.txt」をコミットします

「プッシュ」に1というマークが付きましたので「プッシュ」をクリックします

「プッシュ」をクリックします。これでクローン元のoriginal.git(bareリポジトリ)に変更が反映されました

「clone」リポジトリに戻り「プル」をクリックします

「プル」をクリックします。これでクローン元のoriginal.git(bareリポジトリ)から変更が取り込まれたハズです

「clone」リポジトリに「clone2」リポジトリで追加した「CLONE2.txt」が取り込まれました

このようにクローンを複数作成して開発した場合でも、クローン元リポジトリをベースに、各自がプッシュとプルを行うことで同期がとれるのです

まとめ

SourceTreeをインストールして、ローカルのgitリポジトリを作成しました。gitのコミット、マージ、クローン、プッシュ、プルを一通り試してみました。次回応用編ではGitHubの活用と、より高度なgitの使い方をご紹介します

ABOUT ME
ペイヴメント
ペイヴメントのエンジニア塾(当ブログ)では20年以上の経験から得られたプログラミング系ノウハウについてベテランにも満足して頂けるような内容の濃いコンテンツを初心者にも分かりやすい形で日々発信しています。【経歴】ベンチャーのソフトハウスで4年勤務後、精密機器メーカーのソフト開発部門に勤務し今に至ります。
error: Content is protected !!