ソフトウェア - SmartGit
概要
SmartGitは、非商用の場合は無償で使用できるが、商用で使用する場合は有償(最初の30日間は無料)となる。
SmartGitのUI
SmartGitのUIを下図に示す。
リポジトリをSmartGitに登録
リポジトリが既にローカルに存在する場合、メニューバーの[Repository] - [Add or Create...]を選択して、リポジトリがあるディレクトリを選択する。
リモートリポジトリのクローン
登録するリポジトリがローカルに存在しない場合、リモート先のリポジトリからクローンする。
コミット
コミットするファイルを[Files]項目から選択して、タスクメニューの[Commit]ボタンを押下する。
[Commit]画面が表示されるのでコミットメッセージを入力して、[Commit]ボタンを押下する。
即座にリモート先に反映する場合は、[Commit & Push]ボタンを押下する。
プル
リモートリポジトリに変更がある場合、その変更をローカルリポジトリに反映する場合は、タスクメニューの[Pull]ボタンを押下する。
[Pull]画面が表示されるので、[Fetch from:]項目にプルするブランチを入力して、[Pull]ボタンを押下する。
ブランチの追加
新たなブランチをHEADに追加する場合は、メニューバーにある[Branch] - [Add Branch...]を選択する。
[Add Branch]画面が表示されるので、[Branch:]項目にブランチ名を入力して、[Add Branch]ボタンを押下する。
ブランチの切り替え
ブランチをチェックアウト(切り替え)する場合は、メイン画面左下にある[Branches]で、チェックアウトするブランチを選択する。
[Checkout Branch]メッセージが表示されるので、[Checkout]ボタンを押下する。
マージ
先ほど作成したbranchをmasterにマージしたい場合、以下の手順にしたがってマージしていきます。 今回は、マージをしたよという情報が残るマージ方法でいきます。 mergeの種類もいくつかあります。これについては以下のサイトが分かりやすかったです。
図で分かるgit-mergeの–ff, –no-ff, –squashの違い
アジャイルSEを目指すブログ http://d.hatena.ne.jp/sinsoku/20111025/1319497900 SmartGitにもどって、マージ作業をします。 このときマージして結合する先のbranchで作業してください。 例えば、developというbranchの内容をmasterにマージしたい場合、masterのbranchで以下の操作を行います。
SmartGitの上部のボタン群にある「Merge」ボタンを押します。
この場合、developbranchのコミットが表示されていないので右上の「Branches」ボタンを押します。
そしてローカルにあるbranchをすべて表示させるようにチェックを入れました。
するとmasterbranchよりも1コミットすすんでいるdevelopbranchのコミットがあります。 これをmasterにマージします。 対象のコミットを選択して、「Create Merge-Commit」を選択。 そして「Create Merge-Commit」を押します。
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
- 作成中