Git の利用について

NyanFi

Git の利用について

git.exe (Git for Windows) がインストールされてると、後述の Git 関連機能を利用できます。
標準的な場所(%PROGRAMFILES%\Git\cmd など)にインストールされている場合は自動的に検出されますが、そうでない場合は オプション設定 - 一般2 - その他 で設定してください。

ファイル情報の表示

直下に .git があるディレクトリ、またはその中の [..] 位置では、ファイル情報に以下の項目が表示されます。

Remote URL
リモートリポジトリのURL(https://〜)です。
.git/config 内の [remote "origin"] の内容から想定されるURLを表示しています。
GitHub、GitLab、BitBucket では多分大丈夫だと思います。
OpenGitURL コマンドを実行すると、カーソル位置項目に対応するページをブラウザで開けます(ファイル情報の右クリックメニューからも可能)。
Git-Commit
直前のコミット情報です。括弧内はローカル参照、▶ は "HEAD ->" を表しています。
Git-Status
"git status --porcelain" の取得結果から、フラグごとのファイル数(インデックス/ワーキングツリー)を表示します。
例えば、ワーキングツリーに2個の変更されたファイルがある場合、"M:_/2" と表示されます。
SelGitChanged コマンドを実行すると、カレントで変更されているファイル(フラグが "?" 以外)が選択されます。

なおリポジトリの作業ディレクトリ下で、トップの [..] 以外の項目については、Remote URL のみが表示されます。

ファイル情報の右クリックメニュー「この項目を隠す」で非表示になっている項目は取得を試みません。
Git-Commit/Status の内容はキャッシュして再利用しますが(.git/index のタイムスタンプ変化やファイルリスト更新で再取得)、操作が滞るような場合には非表示にしてみてください。
なおキャッシュ情報は、INIファイルに保存され、次回起動時にも引き継がれます。また、RepositoryList コマンドによる「リポジトリ一覧」の表示にも用いられます。

表示例
     Remote URL: https://github.com/Nekomimi1958/NyanFi_x64
     Git-Commit: (▶master) v13.08 Add Git command
     Git-STATUS: M:_/2

Gitビュアー

Gitの作業ディレクトリ内で GitViewer コマンドを実行すると、Gitビュアーが表示されます。
※Gitビュアーから git.exe やその他のツールを実行する際の作業ディレクトリは、Git作業ディレクトリのトップ(直下に .git があるディレクトリ)になります。
ブランチ一覧
画面の左側にはブランチ一覧があります、右クリックメニューから、チェックアウト(ダブルクリックやENTERキーでも可能)、ブランチの作成/削除/改名、マージ、タグ付け、リセットを行えます。
ブランチ一覧の下には、リモートブランチやタグ一覧を表示できます(右クリックメニューで表示/非表示を切り替え可能)。
コミット履歴
画面右側の上部にはコミット履歴が表示されます。
デフォルトでは、表示されるコミット履歴数が100に制限されています。これを変更したい場合は、GitViewer コマンドの N〜 パラメータで指定してください。
コミット履歴の下部には検索バーがあり、検索語を入力することでコミットを上下方向に検索できます。入力欄の幅はボタンとの境界をドラッグすることで変えられます。
検索バーには以下のようなツールボタンもあります。
更新(F5でも可)
一覧の表示を最新の状態に更新します。
待避
現在の作業内容をメッセージ付きで待避します(git stash save)。
待避した内容はコミット履歴の先頭に表示され、右クリックメニューから復帰や削除を行えます(git stash pop/apply/drop)。
Console
標準的な場所にある git-bash.exe が起動します。見つからない場合、または別のものを指定したい場合は、バーの右クリックメニューから選択してください。
GUI
デフォルトでは標準的な場所にある git-gui.exe が起動します。バーの右クリックメニューから変更可能です。
右クリックメニューからは、タグ付け、チェリーピック、ブランチ名/コミットIDのコピー、ZIPアーカイブの作成(Pack コマンドのキーでも可)、コミット情報の表示(ENTERまたは ShowFileInfo コマンドのキーでも可)などを行えます。
また「一時アーカイブとして開く」では、コミットを一時アーカイブとして出力し、ファイラーに戻って反対側リストで開きます。リビジョンのファイルツリーを閲覧したい場合などに利用してください。
このコミットまでの履歴を表示」では、制限数以降のコミットを表示することができます。更新ボタンを押すと最初の状態に戻ります。
差分概略
履歴でコミットを選択すると、下部にその差分の概略が表示されます。
下部バーのツールボタンで、カーソル位置のファイルに対して以下の操作を行えます。
追加(作業ツリーのみ)
ファイルをインデックスに追加します。
取消(インデックスのみ)
ステージングを取り消します。通常は "git reset HEAD 〜" を、HEAD がない場合は "git rm --cached 〜" を実行します。
コミット
ステージングされているファイルをコミットします。メッセージを入力するためのダイアログが表示されます。
なお、入力欄からキーで確定したい場合はCtrl+ENTERを押してください。
差分詳細(ENTERまたは ShowFileInfo コマンドのキーでも可)
親コミットからの差分詳細を一覧ダイアログで表示します。
編集(FileEdit コマンドのキーでも可)
ファイルをテキストエディタで開きます。リポジトリ内のファイルは NyanFi の一時ディレクトリに出力して開きます("core.autocrlf=true" なら改行をCR/LFに変換)。
なお右クリックメニューの「このファイルの内容を表示」(TextViewer コマンドのキーでも可)によって、内容を一覧ダイアログで表示することも可能。
Diff Tool
親コミットからの差分を、git に設定されている外部Diffツールで表示します。
Blame
親コミットに対する blame を Git Gui で表示します。
右クリックメニューからは、「すべての新規作成・変更・削除を追加 (git add -A)」/「すべての変更・削除を追加 (git add -u)」(作業ツリーのみ)<、「すべてのステージングを取り消し」(インデックスのみ)などを行えます(コミット履歴の右クリックメニューでも可)。
また「このファイルのコミット履歴を表示」では、カーソル位置ファイルのみについてのコミット履歴を表示できます。更新ボタンまたはF5キーを押すと絞り込みが解除されます。
カーソル移動などは、ファイラーやテキストビュアーで割り当てられているのと同じキー操作でできます。
ブランチ一覧/コミット履歴間のフォーカス移動は、ToLeft / ToRightToParentOnLeft / ToParentOnRight コマンドが割り当てられているキーや、 / キーで行えます。
コミット履歴/差分概略間は、ToRight / ToParentOnRight コマンドのキーやキーで移動できます。
なお右クリックメニューは、アプリケーションキーやShift+F10キーの他に、ファイラーで ContextMenu コマンドが割り当てられているキーでも表示できます。
ブランチ一覧、コミット履歴、差分概略にはリストのフォント・配色が用いられます。なお Git 固有の配色については オプション設定 - フォント・配色 で指定してください。

Git 補助コマンドの利用

ExeCommands コマンドの Git 補助コマンド を実行すると、カレントを作業ディレクトリとして、指定したコマンド/パラメータで git.exe が実行されます。
これによって、コンソールを開かなくても NyanFi から直接 Git コマンドを利用できます。
結果は、ログおよび定義済み変数 Buffer に出力されます。

なお Git 補助コマンドの結果(1行目が "$ git 〜")を一覧ダイアログで表示した場合、行頭部の "*"、"|"、"/"、"\"、"_" からなる部分はグラフィック表示になります(* は「Git: コミットマーク」の●印に、線は「罫線の色」で描画)。また "$ git 〜" で始まる行は「見出しの文字色」で、"+" で始まる行は「Git: + 行」、"-" で始まる行は「Git: - 行」の色で表示されます。
使用例
入力したURLのリポジトリをカレントにクローン化
Input_":クローン:URL:URL"
Test_URL!=""
IfTrue
  Git_"clone %URL%"
EndIf
ステータスをヒント表示
Git_status
Hint_!%Buffer%
WaitForKey
Hint
カーソル位置ファイルに対する変更履歴を一覧ダイアログで表示
Git_"log --follow -p -- %NamePart%"
ListBuffer_"Git Log - %NamePart%"
ステータスとコミット履歴をまとめて一覧ダイアログで表示
IfNotGit
  Warn_"Gitの作業ディレクトリではありません。"
  Exit
Endif

Git_status --porcelain --branch
Set_RES=%Buffer%
Add_RES<<""

Git_log --graph --decorate --oneline
Add_RES<<%Buffer%

Set_Buffer=%RES%
ListBuffer_"Git Status/Log - %CurPath%"
すべての変更内容をインデックスに追加し、入力したメッセージでコミット
Input_":%CurPath%:コミットメッセージ:MSG"
Test_MSG==""
IfTrue_Exit

Git_add -A
Set_RES=%Buffer%
Add_RES<<""

Git_commit -m "%MSG%"
Add_RES<<%Buffer%

Set_Buffer=%RES%
ListBuffer_"Git Add/Commit - %CurPath%"
ポップアップメニューでブランチを選んでチェックアウト
Git_branch
ReplaceBuffer_/^\$ git .*\r\n/=""
PopupMenu_Buffer
Test_MenuIndex!=0
IfTrue
  Set_Buffer=%MenuStr%
  MatchBuffer_/^\*/
  IfFalse
    Hint_"checkout %MenuStr%"
    Git_"checkout %MenuStr%"
  EndIf
EndIf
Exit