LoginSignup
30
44

More than 3 years have passed since last update.

【Git】【SourceTree】SourceTree操作⇔コマンド操作 自分用チートシート

Last updated at Posted at 2019-07-06

はじめに

本記事はGit操作を行う際に、SourceTreeではどういった操作になってコマンド操作ではどういった操作になるかまとめたものです。
とりあえず必要になったものをまとめているので全操作ではありません

本記事の対象者

・Gitを普段コマンド操作で使っているけれど、SourceTreeは分からない方

・Gitを普段SourceTreeで使っているけれど、コマンド操作は分からない方

背景

現在の現場で、Gitを運用しているのですがコマンドライン派と、SourceTree派が混在していました。

その際にSourceTreeを使うメンバーから、「これってどうやればいいの?」って聞かれた時に「あれ?これってSourceTreeでどうやるの?」と分からずその場は結局コマンド操作で解決してしまい、SourceTreeでの対処法が伝えられませんでした。

というのが契機で、両方の操作を覚えなければならぬと思い立ち、調べたのでまとめます。

環境

本記事用に利用した環境です。

  • OS : MacOSX HighSierra
  • SourceTree : 3.2.1
  • Git : 2.22.0

アウトライン

各種操作

リモートリポジトリの取得(git clone)

何をするにもまずはリポジトリを落としてこないと作業が始まりませぬ。

SourceTree

1. SourceTreeを起動して、メニューバー > 新規
スクリーンショット 2019-06-21 20.45.20.png

2. URLからクローン
スクリーンショット 2019-06-21 20.40.33.png

3. 情報を入力
スクリーンショット 2019-06-21 20.41.46.png
ソースURL ... クローンするリモートリポジトリのURL
保存先のパス ... クローンするリモートリポジトリの保存先ディレクトリ
名前 ... クローンしたリポジトリのSourceTree上で論理名

4. クローン完了
スクリーンショット 2019-06-21 20.42.24.png

コマンド

リモートリポジトリの取得
git clone 【リモートリポジトリのURL】

# 例:テスト用のリモートリポジトリを取得
git clone https://github.com/hassoubeat/test_repo.git

ファイルをステージングに移動(git add)

編集が完了したらコミットするファイルをステージングに移動するのだ!(ハム太郎)

SourceTree

方法はいくつかあります。

方法1. ステージングに未登録のファイルから、チェックを入れる
スクリーンショット 2019-06-21 21.38.42.png
ステージングに未登録のファイル横のチェックを入れると、全変更ファイルがステージングに移動するゾ

方法2. ファイルをステージングに移動 or Hunkをステージングに移動
スクリーンショット 2019-06-21 21.43.25.png
※ Hunk ... 変更した範囲という意味

コマンド

コミット対象の選択
git add 【コミット対象のファイル】

# 例:変更したtest.txtをadd
git add test.txt

コミット(git commit)

SourceTree

1. 左上のコミットボタン
スクリーンショット 2019-06-21 22.04.08.png

2. コミット対象の確認 > コミットメッセージ記述 > コミット
スクリーンショット 2019-06-21 22.05.32.png

コマンド

コミット
git commit

コマンド実行後、デフォルトのエディタが起動してコミットメッセージを記述できる。
スクリーンショット 2019-06-21 22.25.13.png
vimエディタが起動しているので、:wqで保存するとそこまで書いていたコミットメッセージでコミットされる

※コマンドラインでGitの現在の状況確認(git status)

Gitの状況確認
git status

SourceTreeを使っているとGitの現在の状況が常に見えていますが、コマンドライン上ではコマンドを打たないと確認できません。

スクリーンショット 2019-06-22 8.18.51.png
コマンドラインからコミットを行う前はgit statusを実行して、誤ったブランチにコミットしないか、想定したファイル以外ステージングに取り込まれていないか...といった確認をしよう
(私はぶっちゃけ見づらいと思うので、状況確認はSourceTreeやVScodeのGitから確認しています)

リモートリポジトリに反映(git push)

SourceTree

1. 左上のプッシュボタン
スクリーンショット 2019-06-21 22.39.27.png

2. pushするブランチの選択
スクリーンショット 2019-06-21 22.39.43.png

リモートリポジトリが最新に追いつく
スクリーンショット 2019-06-21 22.40.19.png

コマンド

リモートリポジトリに反映
git push origin 【反映するリモートリポジトリ】

# 例:masterリポジトリに変更をpush
git push origin master

リモートリポジトリの情報を取得(git fetch)

自分以外の誰かがリモートリポジトリにpushしているかもしれない...。
でもすぐpullで取得はしたくなくて、最新のコミットがあるかだけ確認したい...。
という時は

SourceTree

最新情報を取得したい場合は、左上のフェッチ
スクリーンショット 2019-06-22 8.57.08.png
SourceTreeはデフォルトの設定だと、裏で定期的にリモートリポジトリから最新情報の取得(git fetch)を行っています。
(上記画像も自動で最新情報を取得しており、origin/master(リモート)に最新のコミットがあったため、一つコミットが先に進んでいる)

コマンド

リモートリポジトリの情報を取得
git fetch

リモートリポジトリの修正取り込み(git pull)

上述の最新状況の取得(git fetch)で最新の状況を取得・確認して、問題がなければ変更を取り込む。

SourceTree

1. 左上のプル
スクリーンショット 2019-06-22 9.14.53.png
git fetchをしてリモートリポジトリに最新のコミットがあった場合は、プルボタンに更新があるコミットの数バッチが表示される

2. 取り込みのアレコレ確認
スクリーンショット 2019-06-22 9.15.19.png
プルする元のリポジトリ:最新を取ってくる対象のリポジトリ
プルするリモートのブランチ:最新を取ってくる対象のブランチ
プルするローカルのブランチ:上記のリポジトリ・ブランチから取得した最新を取り込むローカルブランチ

ここではorigin/masterブランチから取得した最新を、ローカルのmasterブランチに取り込むという内容になっている。

オプションの詳細は後述するが、特に意図がなければすべてチェックを外した状態でのプルを推奨する。

コマンド

リモートリポジトリの変更の取り込み
git pull

引数なしで、現在のブランチに対応するリモートブランチから最新を取得する。

実はgit pullは以下のコマンドをまとめただけのコマンド

pullコマンドの内容
git fetch
git merge origin/master

内容的には最新状況を取得した後、リモートブランチからmergeをしているだけ。

pullのオプションについて

【Git】SourceTreeのプルのオプションってなんなの?

ブランチの作成(git checkout -b)

SourceTree

1. 左上のブランチ
スクリーンショット 2019-06-22 13.28.14.png

2. 作成するブランチの情報入力
スクリーンショット 2019-06-22 13.28.32.png
・新規ブランチ...新しく作成するブランチの名前
・コミット...新しく作成するブランチを枝分かれ元となるコミットの選択
  作業コピーの親 ... 現在チェックアウトしているブランチの最新
  指定したコミット ... 好きなコミットから選択
・新規ブランチをチェックアウト ... 作成したブランチに移動(チェックアウト)する

入力後、「ブランチを作成」

スクリーンショット 2019-06-22 13.29.00.png
左のメニューのブランチでfeatureブランチが追加されており、太字になっていることからチェックアウトされている。

コマンド

ブランチの作成
git checkout -b 【作成したいブランチ名】

#例:featureブランチを作成
git checkout -b feature

現在のチェックアウトしているブランチを親としてブランチを作成する

ブランチの切り替え(git checkout)

SourceTree

masterブランチからfeatureブランチに切り替える。

1. 切り替え対象のブランチをダブルクリック
スクリーンショット 2019-06-22 17.34.29.png

2. お わ り
スクリーンショット 2019-06-22 17.34.42.png

コマンド

ブランチの切り替え
git checkout 【切り替えたいブランチ名】

#例:featureブランチに切り替え
git checkout feature

ローカルブランチの変更をリモートリポジトリに送信(git push)

SourceTree

1.左上の「プッシュ」
スクリーンショット 2019-06-26 21.32.03.png
新たに作成したfeatureブランチをリモートリポジトリに送信

2.featureブランチにチェックを入れてOK
スクリーンショット 2019-06-26 21.32.35.png

3.リモートリポジトリにfeatureブランチが登録されている
スクリーンショット 2019-06-26 21.32.55.png

次回以降も同様の手順で変更をリモートリポジトリに反映可能

コマンド

# 初回のみ
git push -u origin【ブランチ名】

# 次回移行
git push origin【ブランチ名】

# 例:featureブランチをリモートリポジトリに登録(初回のみ)
git push -u origin feature

# 例:featureブランチの変更をリモートリポジトリに登録(初回以降)
git push origin feature

リモートブランチをローカルブランチに取得(git checkout -b)

SourceTree

1.リモートのfeatureブランチをローカルブランチに取得
スクリーンショット 2019-06-26 22.06.10.png

2.新規ブランチの情報を設定してチェックアウト
スクリーンショット 2019-06-26 22.06.26.png
基本そのまま
次のリモートブランチをチェックアウト:取得したいリモートブランチを指定
新規ローカルブランチ名:ローカルブランチの名前を指定
ローカルブランチでリモートブランチを追跡:リモートブランチとローカルブランチの紐付け
(チェックを外すと、独立したローカルブランチとなるためリモートブランチに変更を反映するなどが行えない)

3.ローカルブランチチェックアウト完了
スクリーンショット 2019-06-26 22.06.39.png

コマンド

git checkout -b 【ローカルブランチ名】 【リモートリポジトリ名】

# 例:
git checkout -b feature origin/feature

ブランチのマージ(git merge)

マージを取り込みたいブランチに移動して、merge

SourceTree

1. masterブランチにfeatureブランチの変更をマージする下準備
スクリーンショット 2019-06-26 22.41.27.png

2. masterブランチに移動
スクリーンショット 2019-06-26 22.44.15.png

3. マージの各種設定
スクリーンショット 2019-06-26 22.45.50.png

4. マージ完了
スクリーンショット 2019-06-26 22.46.07.png

コマンド

git merge 【マージ対象のブランチ】

# 例:masterブランチにfeatureブランチをマージ
git checkout master
git merge feature




また必要なものがでたら追加していきます。

記載内容に誤りがあったら、ご指摘いただけると助かります。

30
44
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
30
44