ソフトウェア - SmartGit

提供:MochiuWiki - SUSE, Electronic Circuit, PCB
2020年7月25日 (土) 10:11時点におけるWiki (トーク | 投稿記録)による版
ナビゲーションに移動 検索に移動

概要

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
    作成中