ソフトウェア - SmartGit

提供:MochiuWiki - SUSE, Electronic Circuit, PCB
ナビゲーションに移動 検索に移動

概要

SmartGitは、非商用の場合は無償で使用できるが、商用で使用する場合は有償(最初の30日間は無料)となる。


SmartGitのUI

SmartGitのUIを下図に示す。

SmartGit 1.jpg


リポジトリをSmartGitに登録

リポジトリが既にローカルに存在する場合、メニューバーの[Repository] - [Add or Create...]を選択して、リポジトリがあるディレクトリを選択する。

リモートリポジトリのクローン

登録するリポジトリがローカルに存在しない場合、リモート先のリポジトリからクローンする。

メニューバー[Repository] - [Clone]を選択する。
[Remote repository]チェックボックスまたは[Local repository]チェックボックスにチェックを入力する。
次に、[Repository URL:]または[Local Directory:]を以下のようにして選択する。

# Remote repository
https://github.com/xxxxx/yyyyy
または
ssh://<ユーザ名>@<ホスト名またはIPアドレス>:<ポート番号>/path/to/repository
など

# Local repository
/home/ユーザ名/xxxxx/yyyyy
~/xxxxx/yyyyy
または
C:\xxxxx\yyyyy
など


コミット

コミットするファイルを上図の[Files]項目から選択して、タスクメニューの[Commit]ボタンを押下する。
[Commit]画面が表示されるのでコミットメッセージを入力して、[Commit]ボタンを押下する。
即座にリモート先に反映する場合は、[Commit & Push]ボタンを押下する。

プル

リモートリポジトリに変更がある場合、その変更をローカルリポジトリに反映する場合は、タスクメニューの[Pull]ボタンを押下する。
または、メニューバー[Remote] - [Pull...]を選択する。
[Pull]画面が表示されるので、[Fetch from:]項目にプルするブランチを入力して、[Pull]ボタンを押下する。

ブランチの追加

新たなブランチをHEADに追加する場合は、メニューバーにある[Branch] - [Add Branch...]を選択する。
[Add Branch]画面が表示されるので、[Branch:]項目にブランチ名を入力して、[Add Branch]ボタンを押下する。

ブランチの切り替え

ブランチをチェックアウト(切り替え)する場合は、メイン画面左下にある[Branches]で、チェックアウトするブランチを選択してダブルクリックする。
[Checkout Branch]メッセージが表示されるので、[Checkout]ボタンを押下する。

マージ

developブランチの内容をmasterにマージする場合、masterをチェックアウトして以下の操作を行う。

  1. SmartGitのタスクメニュー[Merge]ボタンを押下する。
    developブランチのコミットが表示されていない場合は、メニューバー[Branches]ボタンを押下して、ローカルにあるブランチを全て表示させるようにチェックを入力する。
  2. 次に、masterブランチよりもコミットが進んでいるdevelopブランチをmasterにマージする。
    対象のコミットを選択して、[Create Merge-Commit]ボタンを押下する。


コミットログの確認

以前のコミットやマージを確認、または、プログラムが正常に動作しなくなった場合は以前のコミットを参照してどこを変更したか等を参照することができる。
コミットログの確認は、メイン画面右上にある[Log]ボタンを押下する。

ここでは、過去のコミットに戻すこともできるが、頻繁に戻すことはないので省略する。


SmartGitの設定

SmartGitのメニューバー[Edit] - [Preferences] - [Tools]にて、Diffツールを設定することができる。(Kdiff3等を設定するとよい)
また、ファイラ、ターミナルにおいても、詳細な設定ができる。


SmartGitの使用方法

SmartGitの全メニューを記載する。

Repository
  • Add or Create
    新規または既存リポジトリを追加する。


  • Clone
    リモートリポジトリまたはローカルリポジトリを複製する。


  • Close
    開いているリポジトリを閉じる。


  • Add Group
    リポジトリグループを作成する。(Visual Studioのソリューションのようなもの)


  • Settings
    リポジトリを設定する。


  • Exit
    SmartGitを終了する。


Edit
  • Filter Files
    Filesに表示するファイルのフィルタリングができる。(*によるワイルドカード指定が可能)


  • Select Commitable Files
    選択中フォルダ内で、コミット可能なファイルをすべて選択する。
    編集中のファイルが無ければ、何もしない。


  • Select Directory
    ファイルを選択しているとき、その親ディレクトリを選択する。


  • Copy Name
    作成中


  • Copy Path
    作成中


  • Copy Relative Path
    作成中


  • Copy Message
    作成中


  • Copy ID
    作成中


  • Clear Output
    Outputビューの内容をクリアする。


  • Customize
    ショートカットキーおよびツールバーのアイコンをカスタマイズする。


  • Preferences
    SmartGitの設定を行う。


Remote
  • Pull
    リポジトリからPullまたはFetchする。
    Pullはfetch + mergeだが、普通にマージするかrebaseするか選択できる。


  • Synchronize
    ローカルファイルのPushおよびリモートリポジトリからのPullを一括して行う。


  • Push
    現在のブランチをリモートリポジトリにPushする。


  • Push To
    特定のブランチ/ポイントのPushや、Force Pushを行う。


  • Add
    リモートリポジトリを追加する。


  • Fetch More
    リモートリポジトリからFetchを行う。


  • Rename
    作成中


  • Delete
    作成中


  • Submodule
    作成中


  • Properties
    リモートリポジトリのURLを変更する。


Local
  • Stage
    選択したフォルダ内で、未ステージ状態のファイルをステージに上げる。


  • Unstage
    Stageの逆。


  • Index Editor
    ファイル選択時、Index Editorを表示する。


  • Ignore
    作成中


  • Rename
    作成中


  • Toggle 'Assume Changed'
    ファイルの'assume-unchaned'フラグを反転(トグル)する。このフラグは、そのファイルを無視したい時に使用する。
    もし、ローカルでファイルが変更されていても、それは無視される。
    例えば、リモートリポジトリからPullした時、ローカルファイルの変更内容が上書きされることを意味する。


  • Toggle 'Skip Worktree'
    ファイルの'skip-worktree'フラグを反転(トグル)する。このフラグは、そのファイルを無視したい時に使用する。
    もし、ローカルでファイルが変更されていれば、それは無視されない。


  • Resolve
    Conflictが発生した時、それを解消する。


  • Commit
    リポジトリにCommitを行う。
    直前のコミットを取り消して、今回のコミットで上書きすることもできる。


  • Undo Last Commit
    作成中


  • Edit Last Commit Message
    作成中


  • Discard
    ローカルで変更した内容を破棄して、HEADまたはIndexの状態まで戻す。


  • HEAD
    リポジトリの内容まで全て戻す。


  • Index
    ローカルでaddしたファイルはそのままで、リポジトリにあるファイルの変更分のみ戻す。


  • Remove
    対象のファイルをトラック対象から外す。


  • Delete
    対象のファイルをローカルシステムから削除する。


  • Reset
    git resetを行う。
    通常、ローカルで変更した内容を戻す時はresetを使用するが、
    SmartGitでは前述したようにDiscardコマンドがあるので、こちらのResetはもっと特殊な用途で使用する。


  • Squash Commits
    ローカルリポジトリ上での複数のコミットを1つにまとめる。

    まず、Outgoingビュー上で複数のコミットを選択する。(Outgoingビューは、まだリモートにPushしていないコミットの一覧を表示する)
    ここで、メニューからSquash Commitsを選択すると、コミットメッセージを入力するダイアログが表示されるので、メッセージを入力してSquash Commitsする。
    すると、その複数のコミットが1つにまとめられる。

    条件として、選択する複数のコミットは連続したコミットである必要がある。
    つまり、A -> B -> Cというコミットが存在する場合、AとCを選択してSquashすることはできない。

    Squash Commitsを使えば、ローカルでこまめにコミットしていても、リモートにPushする前にそのコミットを1つにまとめれば、
    最終的に残るコミットが1つになるので、見やすいコミット履歴を保つことができる。


  • Save Stash
    現在の状態をStashとして保存した後、HEADの状態までrevertする。
    Stashした内容は、BranchesビューのStashesから確認できる。
    • Stashメッセージ
    • untracked fileを含めるか
    • Stash後、revertをしないでそのままにするか


  • Apply Stash
    保存されたStashの状態まで戻す。
    その後、Stashを破棄するかそのまま残すか選択できる。


  • Drop Stash
    Stashを破棄する。


  • Clean Up
    作成中


Branch
  • Git-Flow
    作成中
  • Check Out
    作成中
  • Merge
    作成中
  • Cherry-Pick
    作成中
  • Revert
    Revert処理を行う。
    Revertとは、特定のコミットで行われた全ての変更を元に戻す新しいコミットを生成して、それを現在のブランチに適用するコマンドである。
    A -> B -> C -> D
    上記のようなコミットの履歴がある場合、Dコミットで行った変更を取り消したい場合があるとする。
    この時、取り消す対象となるコミットを選択して、Revertコマンドを実行すると、以下のコミット履歴となる。
    D'コミットは、Dコミットの内容を完全に打ち消しているので、D'コミットの内容はCコミットと同じ内容となる。
    A -> B -> C -> D -> D'
  • Rebase
    Rebase処理を行う。
    • Rebase HEAD to
      現在のブランチの最新コミット(関連コミットも含む)を、選択したコミットに適用する。
    • Rebase to HEAD
      選択したコミット(関連コミットも含む)の内容を、現在のブランチの先端に適用する。
  • Add Branch
    新たなブランチを作成する。
  • Add Tag
    現在のブランチにタグを作成する。
  • Rename
    作成中
  • Delete
    作成中
  • Set Tracked Branch
    現在のブランチに、追跡ブランチを設定する。
    通常は、リモートブランチをローカルにチェックアウトする時に、自動的に追跡ブランチが作成されるが、ここでは手動で追跡ブランチを設定できる。
  • Stop Tracking
    追跡ブランチを解除する。


Query
  • Open
    選択しているディレクトリやファイルを開く。
  • Show Changes
    選択したファイルのHEADからの変更内容を表示する。
  • Conflict Solver
    ファイルの衝突を解消するウィンドウを開く。
  • Log
    選択したファイルのGitログを表示する。
    ブランチを選択している場合、ルートディレクトリのGitログを表示する。
  • Blame
    選択したファイルのBlameを表示する。
    Blameとは、ファイルの各行がどのコミットで変更されたのかを一覧で表示するものである。
    これは、バグ混入の時期や犯人を探すのが主な目的である。


Changes
  • Reload
    作成中
  • Undo
    作成中
  • HEAD vs. Index
    HEADとIndexの内容を比較する。
  • Index vs. Working Tree
    Indexとワーキングツリーの内容を比較する。
  • Previous Change
    前の変更を表示する。
  • Next Change
    次の変更を表示する。
  • Ignore Whitespace for Line Comparison
    空白を無視して比較する。
  • Ignore Case Change for Line Comparison
    大小文字の違いを無視して比較する。
  • Settings
    比較モードの詳細を設定する。


Tools
  • Open File
    作成中
  • Open in Explorer
    作成中
  • Open in Terminal
    作成中
  • Reveal in Explorer
    作成中
  • Open Git-Shell
    作成中
  • Set Excutable Tag
    作成中
  • Unset Excutable Tag
    作成中
  • Apply Patch
    作成中


Window
  • Repositories
    Gitリポジトリを管理するウィンドウである。
    複数のリポジトリを管理できるが、カレントリポジトリは常に1つだけ選択される。
    また、EclipseのWorking Setsのように、複数のリポジトリをグルーピングして管理できる。
  • Branches
    カレントリポジトリの全ブランチを表示する。その他にも、以下のものが表示される。
    ウィンドウ内では、ブランチ名のインクリメンタルサーチが可能である。大量のブランチを扱う時、この機能が大変便利である。
    • ローカルブランチ一覧
    • リモートブランチ一覧
    • タグ一覧
    • Stash一覧
  • Files
    Repositoriesで選択したディレクトリ内にあるファイルから、フィルタリングした結果をリストアップするビューである。
  • nnn files hidden
    フィルタリングされて非表示になっているファイル数を表示する。
  • File Filter
    フィルタリングする文字列を指定する。
    通常は、*等でワイルドカードが指定可能であるが、正規表現での指定もできる。
    また、指定した文字列はパターンとして保存することができる。
  • Files from Subdirectories
    Repositoriesで選択したフォルダのサブフォルダまで全て表示対象とする。(初期設定では無効化されている)
  • Show Unchanged Files
    変更が無いファイルも表示対象とする。(初期設定では無効化されている)
  • Show Unversioned Files
    バージョン管理されていないファイル(例えば、新規作成ファイル等)も表示対象とする。(初期設定では有効化されている)
  • Show Staged Files
    ステージに上がっているファイルを表示対象とする。(初期設定では有効化されている)
  • Show Ignored/Skipped Files
    .gitignoreファイルによって無視されたファイルも表示対象とする。(初期設定では無効化されている)
  • Show Assume Unchanged Files
    'assume-unchaned'フラグが付与されたファイルも表示対象とする。
    このフラグは、Gitで管理されているが一時的にそのファイルを無視したい時に使用する。(初期設定では無効化されている)