ソフトウェア - SmartGit
概要
SmartGitは、非商用の場合は無償で使用できるが、商用で使用する場合は有償(最初の30日間は無料)となる。
SmartGitのUI
SmartGitのUIを下図に示す。
リポジトリを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をチェックアウトして以下の操作を行う。
- SmartGitのタスクメニュー[Merge]ボタンを押下する。
developブランチのコミットが表示されていない場合は、メニューバー[Branches]ボタンを押下して、ローカルにあるブランチを全て表示させるようにチェックを入力する。 - 次に、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で管理されているが一時的にそのファイルを無視したい時に使用する。(初期設定では無効化されている)