Merge branch 'release/v2025.12'

This commit is contained in:
leo 2025-04-07 12:00:59 +08:00
commit f3d99d64bf
No known key found for this signature in database
22 changed files with 983 additions and 160 deletions

View file

@ -11,7 +11,7 @@
* Supports Windows/macOS/Linux
* Opensource/Free
* Fast
* Deutsch/English/Español/Français/Italiano/Português/Русский/简体中文/繁體中文
* Deutsch/English/Español/Français/Italiano/Português/Русский/简体中文/繁體中文/日本語
* Built-in light/dark themes
* Customize theme
* Visual commit graph

View file

@ -24,23 +24,9 @@ This document shows the translation status of each locale file in the repository
</details>
### ![es__ES](https://img.shields.io/badge/es__ES-99.87%25-yellow)
### ![es__ES](https://img.shields.io/badge/es__ES-%E2%88%9A-brightgreen)
<details>
<summary>Missing keys in es_ES.axaml</summary>
- Text.CopyFullPath
</details>
### ![fr__FR](https://img.shields.io/badge/fr__FR-99.87%25-yellow)
<details>
<summary>Missing keys in fr_FR.axaml</summary>
- Text.CopyFullPath
</details>
### ![fr__FR](https://img.shields.io/badge/fr__FR-%E2%88%9A-brightgreen)
### ![it__IT](https://img.shields.io/badge/it__IT-99.73%25-yellow)
@ -52,6 +38,16 @@ This document shows the translation status of each locale file in the repository
</details>
### ![ja__JP](https://img.shields.io/badge/ja__JP-99.73%25-yellow)
<details>
<summary>Missing keys in ja_JP.axaml</summary>
- Text.Repository.FilterCommits
- Text.Repository.Tags.OrderByNameDes
</details>
### ![pt__BR](https://img.shields.io/badge/pt__BR-90.98%25-yellow)
<details>

View file

@ -1 +1 @@
2025.11
2025.12

View file

@ -20,6 +20,7 @@
<ResourceInclude x:Key="zh_CN" Source="/Resources/Locales/zh_CN.axaml"/>
<ResourceInclude x:Key="zh_TW" Source="/Resources/Locales/zh_TW.axaml"/>
<ResourceInclude x:Key="es_ES" Source="/Resources/Locales/es_ES.axaml"/>
<ResourceInclude x:Key="ja_JP" Source="/Resources/Locales/ja_JP.axaml"/>
</ResourceDictionary>
</Application.Resources>

View file

@ -6,8 +6,10 @@ namespace SourceGit.Commands
{
public partial class CompareRevisions : Command
{
[GeneratedRegex(@"^([MADRC])\s+(.+)$")]
[GeneratedRegex(@"^([MADC])\s+(.+)$")]
private static partial Regex REG_FORMAT();
[GeneratedRegex(@"^R[0-9]{0,4}\s+(.+)$")]
private static partial Regex REG_RENAME_FORMAT();
public CompareRevisions(string repo, string start, string end)
{
@ -38,7 +40,17 @@ namespace SourceGit.Commands
{
var match = REG_FORMAT().Match(line);
if (!match.Success)
{
match = REG_RENAME_FORMAT().Match(line);
if (match.Success)
{
var renamed = new Models.Change() { Path = match.Groups[1].Value };
renamed.Set(Models.ChangeState.Renamed);
_changes.Add(renamed);
}
return;
}
var change = new Models.Change() { Path = match.Groups[2].Value };
var status = match.Groups[1].Value;
@ -57,10 +69,6 @@ namespace SourceGit.Commands
change.Set(Models.ChangeState.Deleted);
_changes.Add(change);
break;
case 'R':
change.Set(Models.ChangeState.Renamed);
_changes.Add(change);
break;
case 'C':
change.Set(Models.ChangeState.Copied);
_changes.Add(change);

View file

@ -9,8 +9,10 @@ namespace SourceGit.Commands
/// </summary>
public partial class QueryStashChanges : Command
{
[GeneratedRegex(@"^([MADRC])\s+(.+)$")]
[GeneratedRegex(@"^([MADC])\s+(.+)$")]
private static partial Regex REG_FORMAT();
[GeneratedRegex(@"^R[0-9]{0,4}\s+(.+)$")]
private static partial Regex REG_RENAME_FORMAT();
public QueryStashChanges(string repo, string stash)
{
@ -31,7 +33,17 @@ namespace SourceGit.Commands
{
var match = REG_FORMAT().Match(line);
if (!match.Success)
{
match = REG_RENAME_FORMAT().Match(line);
if (match.Success)
{
var renamed = new Models.Change() { Path = match.Groups[1].Value };
renamed.Set(Models.ChangeState.Renamed);
outs.Add(renamed);
}
continue;
}
var change = new Models.Change() { Path = match.Groups[2].Value };
var status = match.Groups[1].Value;
@ -50,10 +62,6 @@ namespace SourceGit.Commands
change.Set(Models.ChangeState.Deleted);
outs.Add(change);
break;
case 'R':
change.Set(Models.ChangeState.Renamed);
outs.Add(change);
break;
case 'C':
change.Set(Models.ChangeState.Copied);
outs.Add(change);

View file

@ -32,17 +32,17 @@ namespace SourceGit.Models
public static readonly List<DateTimeFormat> Supported = new List<DateTimeFormat>
{
new DateTimeFormat("yyyy/MM/dd", "yyyy/MM/dd HH:mm:ss"),
new DateTimeFormat("yyyy.MM.dd", "yyyy.MM.dd HH:mm:ss"),
new DateTimeFormat("yyyy-MM-dd", "yyyy-MM-dd HH:mm:ss"),
new DateTimeFormat("MM/dd/yyyy", "MM/dd/yyyy HH:mm:ss"),
new DateTimeFormat("MM.dd.yyyy", "MM.dd.yyyy HH:mm:ss"),
new DateTimeFormat("MM-dd-yyyy", "MM-dd-yyyy HH:mm:ss"),
new DateTimeFormat("dd/MM/yyyy", "dd/MM/yyyy HH:mm:ss"),
new DateTimeFormat("dd.MM.yyyy", "dd.MM.yyyy HH:mm:ss"),
new DateTimeFormat("dd-MM-yyyy", "dd-MM-yyyy HH:mm:ss"),
new DateTimeFormat("MMM d yyyy", "MMM d yyyy HH:mm:ss"),
new DateTimeFormat("d MMM yyyy", "d MMM yyyy HH:mm:ss"),
new DateTimeFormat("yyyy/MM/dd", "yyyy/MM/dd, HH:mm:ss"),
new DateTimeFormat("yyyy.MM.dd", "yyyy.MM.dd, HH:mm:ss"),
new DateTimeFormat("yyyy-MM-dd", "yyyy-MM-dd, HH:mm:ss"),
new DateTimeFormat("MM/dd/yyyy", "MM/dd/yyyy, HH:mm:ss"),
new DateTimeFormat("MM.dd.yyyy", "MM.dd.yyyy, HH:mm:ss"),
new DateTimeFormat("MM-dd-yyyy", "MM-dd-yyyy, HH:mm:ss"),
new DateTimeFormat("dd/MM/yyyy", "dd/MM/yyyy, HH:mm:ss"),
new DateTimeFormat("dd.MM.yyyy", "dd.MM.yyyy, HH:mm:ss"),
new DateTimeFormat("dd-MM-yyyy", "dd-MM-yyyy, HH:mm:ss"),
new DateTimeFormat("MMM d yyyy", "MMM d yyyy, HH:mm:ss"),
new DateTimeFormat("d MMM yyyy", "d MMM yyyy, HH:mm:ss"),
};
private static readonly DateTime _example = new DateTime(2025, 1, 31, 8, 0, 0, DateTimeKind.Local);

View file

@ -17,6 +17,7 @@ namespace SourceGit.Models
new Locale("Русский", "ru_RU"),
new Locale("简体中文", "zh_CN"),
new Locale("繁體中文", "zh_TW"),
new Locale("日本語", "ja_JP"),
};
public Locale(string name, string key)

View file

@ -719,6 +719,7 @@
<x:String x:Key="Text.WorkingCopy.CommitTip" xml:space="preserve">Trigger click event</x:String>
<x:String x:Key="Text.WorkingCopy.CommitToEdit" xml:space="preserve">Commit (Edit)</x:String>
<x:String x:Key="Text.WorkingCopy.CommitWithAutoStage" xml:space="preserve">Stage all changes and commit</x:String>
<x:String x:Key="Text.WorkingCopy.ConfirmCommitWithFilter">You have staged {0} file(s) but only {1} file(s) displayed ({2} files are filtered out). Do you want to continue?</x:String>
<x:String x:Key="Text.WorkingCopy.ConfirmCommitWithoutFiles" xml:space="preserve">Empty commit detected! Do you want to continue (--allow-empty)?</x:String>
<x:String x:Key="Text.WorkingCopy.Conflicts" xml:space="preserve">CONFLICTS DETECTED</x:String>
<x:String x:Key="Text.WorkingCopy.Conflicts.Resolved" xml:space="preserve">FILE CONFLICTS ARE RESOLVED</x:String>

View file

@ -189,6 +189,7 @@
<x:String x:Key="Text.Copy" xml:space="preserve">Copiar</x:String>
<x:String x:Key="Text.CopyAllText" xml:space="preserve">Copiar Todo el Texto</x:String>
<x:String x:Key="Text.CopyPath" xml:space="preserve">Copiar Ruta</x:String>
<x:String x:Key="Text.CopyFullPath" xml:space="preserve">Copiar Ruta Completa</x:String>
<x:String x:Key="Text.CreateBranch" xml:space="preserve">Crear Rama...</x:String>
<x:String x:Key="Text.CreateBranch.BasedOn" xml:space="preserve">Basado En:</x:String>
<x:String x:Key="Text.CreateBranch.Checkout" xml:space="preserve">Checkout de la rama creada</x:String>

View file

@ -16,13 +16,19 @@
<x:String x:Key="Text.AddWorktree.Tracking" xml:space="preserve">Suivre la branche :</x:String>
<x:String x:Key="Text.AddWorktree.Tracking.Toggle" xml:space="preserve">Suivi de la branche distante</x:String>
<x:String x:Key="Text.AIAssistant" xml:space="preserve">Assistant IA</x:String>
<x:String x:Key="Text.AIAssistant.Regen" xml:space="preserve">RE-GÉNERER</x:String>
<x:String x:Key="Text.AIAssistant.Tip" xml:space="preserve">Utiliser l'IA pour générer un message de commit</x:String>
<x:String x:Key="Text.AIAssistant.Use" xml:space="preserve">APPLIQUER COMME MESSAGE DE COMMIT</x:String>
<x:String x:Key="Text.Apply" xml:space="preserve">Appliquer</x:String>
<x:String x:Key="Text.Apply.File" xml:space="preserve">Fichier de patch :</x:String>
<x:String x:Key="Text.Apply.File.Placeholder" xml:space="preserve">Selectionner le fichier .patch à appliquer</x:String>
<x:String x:Key="Text.Apply.IgnoreWS" xml:space="preserve">Ignorer les changements d'espaces blancs</x:String>
<x:String x:Key="Text.Apply.Title" xml:space="preserve">Appliquer le patch</x:String>
<x:String x:Key="Text.Apply.WS" xml:space="preserve">Espaces blancs :</x:String>
<x:String x:Key="Text.ApplyStash" xml:space="preserve">Appliquer le Stash</x:String>
<x:String x:Key="Text.ApplyStash.DropAfterApply" xml:space="preserve">Supprimer après application</x:String>
<x:String x:Key="Text.ApplyStash.RestoreIndex" xml:space="preserve">Rétablir les changements de l'index</x:String>
<x:String x:Key="Text.ApplyStash.Stash" xml:space="preserve">Stash:</x:String>
<x:String x:Key="Text.Archive" xml:space="preserve">Archiver...</x:String>
<x:String x:Key="Text.Archive.File" xml:space="preserve">Enregistrer l'archive sous :</x:String>
<x:String x:Key="Text.Archive.File.Placeholder" xml:space="preserve">Sélectionnez le chemin du fichier d'archive</x:String>
@ -39,6 +45,7 @@
<x:String x:Key="Text.BranchCM.CompareWithHead" xml:space="preserve">Comparer avec HEAD</x:String>
<x:String x:Key="Text.BranchCM.CompareWithWorktree" xml:space="preserve">Comparer avec le worktree</x:String>
<x:String x:Key="Text.BranchCM.CopyName" xml:space="preserve">Copier le nom de la branche</x:String>
<x:String x:Key="Text.BranchCM.CustomAction" xml:space="preserve">Action personnalisée</x:String>
<x:String x:Key="Text.BranchCM.Delete" xml:space="preserve">Supprimer ${0}$...</x:String>
<x:String x:Key="Text.BranchCM.DeleteMultiBranches" xml:space="preserve">Supprimer {0} branches sélectionnées</x:String>
<x:String x:Key="Text.BranchCM.DiscardAll" xml:space="preserve">Rejeter tous les changements</x:String>
@ -54,6 +61,7 @@
<x:String x:Key="Text.BranchCM.Rename" xml:space="preserve">Renommer ${0}$...</x:String>
<x:String x:Key="Text.BranchCM.Tracking" xml:space="preserve">Définir la branche de suivi...</x:String>
<x:String x:Key="Text.BranchCompare" xml:space="preserve">Comparer les branches</x:String>
<x:String x:Key="Text.BranchUpstreamInvalid" xml:space="preserve">Branche amont invalide !</x:String>
<x:String x:Key="Text.Bytes" xml:space="preserve">Octets</x:String>
<x:String x:Key="Text.Cancel" xml:space="preserve">ANNULER</x:String>
<x:String x:Key="Text.ChangeCM.CheckoutFirstParentRevision" xml:space="preserve">Réinitialiser à la révision parente</x:String>
@ -92,6 +100,7 @@
<x:String x:Key="Text.CommitCM.Checkout" xml:space="preserve">Récupérer ce commit</x:String>
<x:String x:Key="Text.CommitCM.CherryPick" xml:space="preserve">Cherry-Pick ce commit</x:String>
<x:String x:Key="Text.CommitCM.CherryPickMultiple" xml:space="preserve">Cherry-Pick ...</x:String>
<x:String x:Key="Text.CommitCM.Checkout" xml:space="preserve">Checkout Commit</x:String>
<x:String x:Key="Text.CommitCM.CompareWithHead" xml:space="preserve">Comparer avec HEAD</x:String>
<x:String x:Key="Text.CommitCM.CompareWithWorktree" xml:space="preserve">Comparer avec le worktree</x:String>
<x:String x:Key="Text.CommitCM.CopyInfo" xml:space="preserve">Copier les informations</x:String>
@ -150,10 +159,10 @@
<x:String x:Key="Text.Configure.IssueTracker.AddSampleGiteeIssue" xml:space="preserve">Ajouter une règle d'exemple Gitee</x:String>
<x:String x:Key="Text.Configure.IssueTracker.AddSampleGiteePullRequest" xml:space="preserve">Ajouter une règle d'exemple pour Pull Request Gitee</x:String>
<x:String x:Key="Text.Configure.IssueTracker.AddSampleGithub" xml:space="preserve">Ajouter une règle d'exemple Github</x:String>
<x:String x:Key="Text.Configure.IssueTracker.AddSampleJira" xml:space="preserve">Ajouter une règle d'exemple Jira</x:String>
<x:String x:Key="Text.Configure.IssueTracker.AddSampleAzure" xml:space="preserve">Ajouter une règle d'exemple Azure DevOps</x:String>
<x:String x:Key="Text.Configure.IssueTracker.AddSampleGitLabIssue" xml:space="preserve">Ajouter une règle d'exemple pour Incidents GitLab</x:String>
<x:String x:Key="Text.Configure.IssueTracker.AddSampleGitLabMergeRequest" xml:space="preserve">Ajouter une règle d'exemple pour Merge Request GitLab</x:String>
<x:String x:Key="Text.Configure.IssueTracker.AddSampleJira" xml:space="preserve">Ajouter une règle d'exemple Jira</x:String>
<x:String x:Key="Text.Configure.IssueTracker.AddSampleAzure" xml:space="preserve">Ajouter une règle d'exemple Azure DevOps</x:String>
<x:String x:Key="Text.Configure.IssueTracker.NewRule" xml:space="preserve">Nouvelle règle</x:String>
<x:String x:Key="Text.Configure.IssueTracker.Regex" xml:space="preserve">Issue Regex Expression:</x:String>
<x:String x:Key="Text.Configure.IssueTracker.RuleName" xml:space="preserve">Nom de règle :</x:String>
@ -179,6 +188,7 @@
<x:String x:Key="Text.Copy" xml:space="preserve">Copier</x:String>
<x:String x:Key="Text.CopyAllText" xml:space="preserve">Copier tout le texte</x:String>
<x:String x:Key="Text.CopyPath" xml:space="preserve">Copier le chemin</x:String>
<x:String x:Key="Text.CopyFullPath" xml:space="preserve">Copier le chemin complet</x:String>
<x:String x:Key="Text.CreateBranch" xml:space="preserve">Créer une branche...</x:String>
<x:String x:Key="Text.CreateBranch.BasedOn" xml:space="preserve">Basé sur :</x:String>
<x:String x:Key="Text.CreateBranch.Checkout" xml:space="preserve">Récupérer la branche créée</x:String>
@ -187,6 +197,7 @@
<x:String x:Key="Text.CreateBranch.LocalChanges.StashAndReply" xml:space="preserve">Stash &amp; Réappliquer</x:String>
<x:String x:Key="Text.CreateBranch.Name" xml:space="preserve">Nom de la nouvelle branche :</x:String>
<x:String x:Key="Text.CreateBranch.Name.Placeholder" xml:space="preserve">Entrez le nom de la branche.</x:String>
<x:String x:Key="Text.CreateBranch.Name.WarnSpace" xml:space="preserve">Les espaces seront remplacés par des tirets.</x:String>
<x:String x:Key="Text.CreateBranch.Title" xml:space="preserve">Créer une branche locale</x:String>
<x:String x:Key="Text.CreateTag" xml:space="preserve">Créer un tag...</x:String>
<x:String x:Key="Text.CreateTag.BasedOn" xml:space="preserve">Nouveau tag à :</x:String>
@ -583,13 +594,20 @@
<x:String x:Key="Text.SelfUpdate.IgnoreThisVersion" xml:space="preserve">Passer cette version</x:String>
<x:String x:Key="Text.SelfUpdate.Title" xml:space="preserve">Mise à jour du logiciel</x:String>
<x:String x:Key="Text.SelfUpdate.UpToDate" xml:space="preserve">Il n'y a pas de mise à jour pour le moment.</x:String>
<x:String x:Key="Text.SetUpstream" xml:space="preserve">Définir la branche de suivi</x:String>
<x:String x:Key="Text.SetUpstream.Local" xml:space="preserve">Branche :</x:String>
<x:String x:Key="Text.SetUpstream.Unset" xml:space="preserve">Escamoter la branche amont</x:String>
<x:String x:Key="Text.SetUpstream.Upstream" xml:space="preserve">Branche amont:</x:String>
<x:String x:Key="Text.SHALinkCM.CopySHA" xml:space="preserve">Copier le SHA</x:String>
<x:String x:Key="Text.Squash" xml:space="preserve">Squash Commits</x:String>
<x:String x:Key="Text.SHALinkCM.NavigateTo" xml:space="preserve">Aller à</x:String>
<x:String x:Key="Text.Squash" xml:space="preserve">Squash les commits</x:String>
<x:String x:Key="Text.Squash.Into" xml:space="preserve">Dans :</x:String>
<x:String x:Key="Text.SSHKey" xml:space="preserve">Clé privée SSH :</x:String>
<x:String x:Key="Text.SSHKey.Placeholder" xml:space="preserve">Chemin du magasin de clés privées SSH</x:String>
<x:String x:Key="Text.Start" xml:space="preserve">START</x:String>
<x:String x:Key="Text.Stash" xml:space="preserve">Stash</x:String>
<x:String x:Key="Text.Stash.AutoRestore" xml:space="preserve">Auto-restauration après le stash</x:String>
<x:String x:Key="Text.Stash.AutoRestore.Tip" xml:space="preserve">Vos fichiers de travail sont inchangés, mais un stash a été sauvegardé.</x:String>
<x:String x:Key="Text.Stash.IncludeUntracked" xml:space="preserve">Inclure les fichiers non-suivis</x:String>
<x:String x:Key="Text.Stash.KeepIndex" xml:space="preserve">Garder les fichiers indexés</x:String>
<x:String x:Key="Text.Stash.Message" xml:space="preserve">Message :</x:String>
@ -599,6 +617,7 @@
<x:String x:Key="Text.Stash.Title" xml:space="preserve">Stash les changements locaux</x:String>
<x:String x:Key="Text.StashCM.Apply" xml:space="preserve">Appliquer</x:String>
<x:String x:Key="Text.StashCM.Drop" xml:space="preserve">Effacer</x:String>
<x:String x:Key="Text.StashCM.SaveAsPatch" xml:space="preserve">Sauver comme Patch...</x:String>
<x:String x:Key="Text.StashDropConfirm" xml:space="preserve">Effacer le Stash</x:String>
<x:String x:Key="Text.StashDropConfirm.Label" xml:space="preserve">Effacer :</x:String>
<x:String x:Key="Text.Stashes" xml:space="preserve">Stashes</x:String>

View file

@ -0,0 +1,747 @@
<ResourceDictionary xmlns="https://github.com/avaloniaui" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<ResourceDictionary.MergedDictionaries>
<ResourceInclude Source="avares://SourceGit/Resources/Locales/en_US.axaml"/>
</ResourceDictionary.MergedDictionaries>
<x:String x:Key="Text.About" xml:space="preserve">概要</x:String>
<x:String x:Key="Text.About.Menu" xml:space="preserve">SourceGitについて</x:String>
<x:String x:Key="Text.About.SubTitle" xml:space="preserve">オープンソース &amp; フリーなGit GUIクライアント</x:String>
<x:String x:Key="Text.AddWorktree" xml:space="preserve">ワークツリーを追加</x:String>
<x:String x:Key="Text.AddWorktree.WhatToCheckout" xml:space="preserve">チェックアウトする内容:</x:String>
<x:String x:Key="Text.AddWorktree.WhatToCheckout.Existing" xml:space="preserve">既存のブランチ</x:String>
<x:String x:Key="Text.AddWorktree.WhatToCheckout.CreateNew" xml:space="preserve">新しいブランチを作成</x:String>
<x:String x:Key="Text.AddWorktree.Location" xml:space="preserve">場所:</x:String>
<x:String x:Key="Text.AddWorktree.Location.Placeholder" xml:space="preserve">ワークツリーのパスを入力してください。相対パスも使用することができます。</x:String>
<x:String x:Key="Text.AddWorktree.Name" xml:space="preserve">ブランチの名前:</x:String>
<x:String x:Key="Text.AddWorktree.Name.Placeholder" xml:space="preserve">任意。デフォルトでは宛先フォルダ名が使用されます。</x:String>
<x:String x:Key="Text.AddWorktree.Tracking" xml:space="preserve">追跡するブランチ:</x:String>
<x:String x:Key="Text.AddWorktree.Tracking.Toggle" xml:space="preserve">追跡中のリモートブランチ</x:String>
<x:String x:Key="Text.AIAssistant" xml:space="preserve">OpenAI アシスタント</x:String>
<x:String x:Key="Text.AIAssistant.Regen" xml:space="preserve">再生成</x:String>
<x:String x:Key="Text.AIAssistant.Tip" xml:space="preserve">OpenAIを使用してコミットメッセージを生成</x:String>
<x:String x:Key="Text.AIAssistant.Use" xml:space="preserve">コミットメッセージとして適用</x:String>
<x:String x:Key="Text.Apply" xml:space="preserve">適用</x:String>
<x:String x:Key="Text.Apply.File" xml:space="preserve">パッチファイル:</x:String>
<x:String x:Key="Text.Apply.File.Placeholder" xml:space="preserve">適用する .patchファイルを選択</x:String>
<x:String x:Key="Text.Apply.IgnoreWS" xml:space="preserve">空白文字の変更を無視</x:String>
<x:String x:Key="Text.Apply.Title" xml:space="preserve">パッチを適用</x:String>
<x:String x:Key="Text.Apply.WS" xml:space="preserve">空白文字:</x:String>
<x:String x:Key="Text.ApplyStash" xml:space="preserve">スタッシュを適用</x:String>
<x:String x:Key="Text.ApplyStash.DropAfterApply" xml:space="preserve">適用後に削除</x:String>
<x:String x:Key="Text.ApplyStash.RestoreIndex" xml:space="preserve">インデックスの変更を復元</x:String>
<x:String x:Key="Text.ApplyStash.Stash" xml:space="preserve">スタッシュ:</x:String>
<x:String x:Key="Text.Archive" xml:space="preserve">アーカイブ...</x:String>
<x:String x:Key="Text.Archive.File" xml:space="preserve">アーカイブの保存先:</x:String>
<x:String x:Key="Text.Archive.File.Placeholder" xml:space="preserve">アーカイブファイルのパスを選択</x:String>
<x:String x:Key="Text.Archive.Revision" xml:space="preserve">リビジョン:</x:String>
<x:String x:Key="Text.Archive.Title" xml:space="preserve">アーカイブ</x:String>
<x:String x:Key="Text.Askpass" xml:space="preserve">SourceGit Askpass</x:String>
<x:String x:Key="Text.AssumeUnchanged" xml:space="preserve">変更されていないとみなされるファイル</x:String>
<x:String x:Key="Text.AssumeUnchanged.Empty" xml:space="preserve">変更されていないとみなされるファイルはありません</x:String>
<x:String x:Key="Text.AssumeUnchanged.Remove" xml:space="preserve">削除</x:String>
<x:String x:Key="Text.BinaryNotSupported" xml:space="preserve">バイナリファイルはサポートされていません!!!</x:String>
<x:String x:Key="Text.Blame" xml:space="preserve">Blame</x:String>
<x:String x:Key="Text.BlameTypeNotSupported" xml:space="preserve">BLAMEではこのファイルはサポートされていません!!!</x:String>
<x:String x:Key="Text.BranchCM.Checkout" xml:space="preserve">${0}$ をチェックアウトする...</x:String>
<x:String x:Key="Text.BranchCM.CompareWithHead" xml:space="preserve">HEADと比較</x:String>
<x:String x:Key="Text.BranchCM.CompareWithWorktree" xml:space="preserve">ワークツリーと比較</x:String>
<x:String x:Key="Text.BranchCM.CopyName" xml:space="preserve">ブランチ名をコピー</x:String>
<x:String x:Key="Text.BranchCM.CustomAction" xml:space="preserve">カスタムアクション</x:String>
<x:String x:Key="Text.BranchCM.Delete" xml:space="preserve">${0}$を削除...</x:String>
<x:String x:Key="Text.BranchCM.DeleteMultiBranches" xml:space="preserve">選択中の{0}個のブランチを削除</x:String>
<x:String x:Key="Text.BranchCM.DiscardAll" xml:space="preserve">すべての変更を破棄</x:String>
<x:String x:Key="Text.BranchCM.FastForward" xml:space="preserve">${0}$ へ早送りする</x:String>
<x:String x:Key="Text.BranchCM.FetchInto" xml:space="preserve">${0}$ から ${1}$ へフェッチする</x:String>
<x:String x:Key="Text.BranchCM.Finish" xml:space="preserve">Git Flow - Finish ${0}$</x:String>
<x:String x:Key="Text.BranchCM.Merge" xml:space="preserve">${0}$ を ${1}$ にマージする...</x:String>
<x:String x:Key="Text.BranchCM.MergeMultiBranches" xml:space="preserve">選択中の{0}個のブランチを現在のブランチにマージする</x:String>
<x:String x:Key="Text.BranchCM.Pull" xml:space="preserve">${0}$ をプルする</x:String>
<x:String x:Key="Text.BranchCM.PullInto" xml:space="preserve">${0}$ を ${1}$ にプルする...</x:String>
<x:String x:Key="Text.BranchCM.Push" xml:space="preserve">${0}$ をプッシュする</x:String>
<x:String x:Key="Text.BranchCM.Rebase" xml:space="preserve">${0}$ を ${1}$ でリベースする...</x:String>
<x:String x:Key="Text.BranchCM.Rename" xml:space="preserve">${0}$ をリネームする...</x:String>
<x:String x:Key="Text.BranchCM.Tracking" xml:space="preserve">トラッキングブランチを設定...</x:String>
<x:String x:Key="Text.BranchCompare" xml:space="preserve">ブランチの比較</x:String>
<x:String x:Key="Text.BranchUpstreamInvalid" xml:space="preserve">無効な上流ブランチ!</x:String>
<x:String x:Key="Text.Bytes" xml:space="preserve">バイト</x:String>
<x:String x:Key="Text.Cancel" xml:space="preserve">キャンセル</x:String>
<x:String x:Key="Text.ChangeCM.CheckoutThisRevision" xml:space="preserve">このリビジョンにリセット</x:String>
<x:String x:Key="Text.ChangeCM.CheckoutFirstParentRevision" xml:space="preserve">親リビジョンにリセット</x:String>
<x:String x:Key="Text.ChangeCM.GenerateCommitMessage" xml:space="preserve">コミットメッセージを生成</x:String>
<x:String x:Key="Text.ChangeDisplayMode" xml:space="preserve">変更表示の切り替え</x:String>
<x:String x:Key="Text.ChangeDisplayMode.Grid" xml:space="preserve">ファイルとディレクトリのリストを表示</x:String>
<x:String x:Key="Text.ChangeDisplayMode.List" xml:space="preserve">パスのリストを表示</x:String>
<x:String x:Key="Text.ChangeDisplayMode.Tree" xml:space="preserve">ファイルシステムのツリーを表示</x:String>
<x:String x:Key="Text.Checkout" xml:space="preserve">ブランチをチェックアウト</x:String>
<x:String x:Key="Text.Checkout.Commit" xml:space="preserve">コミットをチェックアウト</x:String>
<x:String x:Key="Text.Checkout.Commit.Warning" xml:space="preserve">警告: コミットをチェックアウトするとHEADが切断されます</x:String>
<x:String x:Key="Text.Checkout.Commit.Target" xml:space="preserve">コミット:</x:String>
<x:String x:Key="Text.Checkout.Target" xml:space="preserve">ブランチ:</x:String>
<x:String x:Key="Text.Checkout.LocalChanges" xml:space="preserve">ローカルの変更:</x:String>
<x:String x:Key="Text.Checkout.LocalChanges.Discard" xml:space="preserve">破棄</x:String>
<x:String x:Key="Text.Checkout.LocalChanges.StashAndReply" xml:space="preserve">スタッシュして再適用</x:String>
<x:String x:Key="Text.CherryPick" xml:space="preserve">チェリーピック</x:String>
<x:String x:Key="Text.CherryPick.AppendSourceToMessage" xml:space="preserve">ソースをコミットメッセージに追加</x:String>
<x:String x:Key="Text.CherryPick.Commit" xml:space="preserve">コミット(複数可):</x:String>
<x:String x:Key="Text.CherryPick.CommitChanges" xml:space="preserve">すべての変更をコミット</x:String>
<x:String x:Key="Text.CherryPick.Mainline" xml:space="preserve">メインライン:</x:String>
<x:String x:Key="Text.CherryPick.Mainline.Tips" xml:space="preserve">通常、マージをチェリーピックすることはできません。どちらのマージ元をメインラインとして扱うべきかが分からないためです。このオプションを使用すると、指定した親に対して変更を再適用する形でチェリーピックを実行できます。</x:String>
<x:String x:Key="Text.ClearStashes" xml:space="preserve">スタッシュをクリア</x:String>
<x:String x:Key="Text.ClearStashes.Message" xml:space="preserve">すべてのスタッシュをクリアします。続行しますか?</x:String>
<x:String x:Key="Text.Clone" xml:space="preserve">リモートリポジトリをクローン</x:String>
<x:String x:Key="Text.Clone.AdditionalParam" xml:space="preserve">追加の引数:</x:String>
<x:String x:Key="Text.Clone.AdditionalParam.Placeholder" xml:space="preserve">リポジトリをクローンする際の追加パラメータ(任意)。</x:String>
<x:String x:Key="Text.Clone.LocalName" xml:space="preserve">ローカル名:</x:String>
<x:String x:Key="Text.Clone.LocalName.Placeholder" xml:space="preserve">リポジトリの名前(任意)。</x:String>
<x:String x:Key="Text.Clone.ParentFolder" xml:space="preserve">親フォルダ:</x:String>
<x:String x:Key="Text.Clone.RecurseSubmodules" xml:space="preserve">サブモジュールを初期化して更新</x:String>
<x:String x:Key="Text.Clone.RemoteURL" xml:space="preserve">リポジトリのURL:</x:String>
<x:String x:Key="Text.Close" xml:space="preserve">閉じる</x:String>
<x:String x:Key="Text.CodeEditor" xml:space="preserve">エディタ</x:String>
<x:String x:Key="Text.CommitCM.CherryPick" xml:space="preserve">このコミットをチェリーピック</x:String>
<x:String x:Key="Text.CommitCM.CherryPickMultiple" xml:space="preserve">チェリーピック...</x:String>
<x:String x:Key="Text.CommitCM.Checkout" xml:space="preserve">コミットをチェックアウト</x:String>
<x:String x:Key="Text.CommitCM.CompareWithHead" xml:space="preserve">HEADと比較</x:String>
<x:String x:Key="Text.CommitCM.CompareWithWorktree" xml:space="preserve">ワークツリーと比較</x:String>
<x:String x:Key="Text.CommitCM.CopyInfo" xml:space="preserve">情報をコピー</x:String>
<x:String x:Key="Text.CommitCM.CopySHA" xml:space="preserve">SHAをコピー</x:String>
<x:String x:Key="Text.CommitCM.CustomAction" xml:space="preserve">カスタムアクション</x:String>
<x:String x:Key="Text.CommitCM.InteractiveRebase" xml:space="preserve">${0}$ ブランチをここにインタラクティブリベース</x:String>
<x:String x:Key="Text.CommitCM.Merge" xml:space="preserve">${0}$ にマージ</x:String>
<x:String x:Key="Text.CommitCM.MergeMultiple" xml:space="preserve">マージ...</x:String>
<x:String x:Key="Text.CommitCM.Rebase" xml:space="preserve">${0}$ をここにリベース</x:String>
<x:String x:Key="Text.CommitCM.Reset" xml:space="preserve">${0}$ ブランチをここにリセット</x:String>
<x:String x:Key="Text.CommitCM.Revert" xml:space="preserve">コミットを戻す</x:String>
<x:String x:Key="Text.CommitCM.Reword" xml:space="preserve">書き直す</x:String>
<x:String x:Key="Text.CommitCM.SaveAsPatch" xml:space="preserve">パッチとして保存...</x:String>
<x:String x:Key="Text.CommitCM.Squash" xml:space="preserve">親にスカッシュ</x:String>
<x:String x:Key="Text.CommitCM.SquashCommitsSinceThis" xml:space="preserve">子コミットをここにスカッシュ</x:String>
<x:String x:Key="Text.CommitDetail.Changes" xml:space="preserve">変更</x:String>
<x:String x:Key="Text.CommitDetail.Changes.Search" xml:space="preserve">変更を検索...</x:String>
<x:String x:Key="Text.CommitDetail.Files" xml:space="preserve">ファイル</x:String>
<x:String x:Key="Text.CommitDetail.Files.LFS" xml:space="preserve">LFSファイル</x:String>
<x:String x:Key="Text.CommitDetail.Files.Search" xml:space="preserve">ファイルを検索...</x:String>
<x:String x:Key="Text.CommitDetail.Files.Submodule" xml:space="preserve">サブモジュール</x:String>
<x:String x:Key="Text.CommitDetail.Info" xml:space="preserve">コミットの情報</x:String>
<x:String x:Key="Text.CommitDetail.Info.Author" xml:space="preserve">著者</x:String>
<x:String x:Key="Text.CommitDetail.Info.Changed" xml:space="preserve">変更</x:String>
<x:String x:Key="Text.CommitDetail.Info.Children" xml:space="preserve">子</x:String>
<x:String x:Key="Text.CommitDetail.Info.Committer" xml:space="preserve">コミッター</x:String>
<x:String x:Key="Text.CommitDetail.Info.ContainsIn" xml:space="preserve">このコミットを含む参照を確認</x:String>
<x:String x:Key="Text.CommitDetail.Info.ContainsIn.Title" xml:space="preserve">コミットが含まれるか確認</x:String>
<x:String x:Key="Text.CommitDetail.Info.GotoChangesPage" xml:space="preserve">最初の100件の変更のみが表示されています。すべての変更は'変更'タブで確認できます。</x:String>
<x:String x:Key="Text.CommitDetail.Info.Message" xml:space="preserve">メッセージ</x:String>
<x:String x:Key="Text.CommitDetail.Info.Parents" xml:space="preserve">親</x:String>
<x:String x:Key="Text.CommitDetail.Info.Refs" xml:space="preserve">参照</x:String>
<x:String x:Key="Text.CommitDetail.Info.SHA" xml:space="preserve">SHA</x:String>
<x:String x:Key="Text.CommitDetail.Info.WebLinks" xml:space="preserve">ブラウザで開く</x:String>
<x:String x:Key="Text.CommitMessageTextBox.SubjectPlaceholder" xml:space="preserve">コミットのタイトルを入力</x:String>
<x:String x:Key="Text.CommitMessageTextBox.MessagePlaceholder" xml:space="preserve">説明</x:String>
<x:String x:Key="Text.Configure" xml:space="preserve">リポジトリの設定</x:String>
<x:String x:Key="Text.Configure.CommitMessageTemplate" xml:space="preserve">コミットテンプレート</x:String>
<x:String x:Key="Text.Configure.CommitMessageTemplate.Name" xml:space="preserve">テンプレート名:</x:String>
<x:String x:Key="Text.Configure.CommitMessageTemplate.Content" xml:space="preserve">テンプレート内容:</x:String>
<x:String x:Key="Text.Configure.CustomAction" xml:space="preserve">カスタムアクション</x:String>
<x:String x:Key="Text.Configure.CustomAction.Arguments" xml:space="preserve">引数:</x:String>
<x:String x:Key="Text.Configure.CustomAction.Arguments.Tip" xml:space="preserve">${REPO} - リポジトリのパス; ${BRANCH} - 選択中のブランチ; ${SHA} - 選択中のコミットのSHA</x:String>
<x:String x:Key="Text.Configure.CustomAction.Executable" xml:space="preserve">実行ファイル:</x:String>
<x:String x:Key="Text.Configure.CustomAction.Name" xml:space="preserve">名前:</x:String>
<x:String x:Key="Text.Configure.CustomAction.Scope" xml:space="preserve">スコープ:</x:String>
<x:String x:Key="Text.Configure.CustomAction.Scope.Branch" xml:space="preserve">ブランチ</x:String>
<x:String x:Key="Text.Configure.CustomAction.Scope.Commit" xml:space="preserve">コミット</x:String>
<x:String x:Key="Text.Configure.CustomAction.Scope.Repository" xml:space="preserve">リポジトリ</x:String>
<x:String x:Key="Text.Configure.CustomAction.WaitForExit" xml:space="preserve">アクションの終了を待機</x:String>
<x:String x:Key="Text.Configure.Email" xml:space="preserve">Eメールアドレス</x:String>
<x:String x:Key="Text.Configure.Email.Placeholder" xml:space="preserve">Eメールアドレス</x:String>
<x:String x:Key="Text.Configure.Git" xml:space="preserve">GIT</x:String>
<x:String x:Key="Text.Configure.Git.AutoFetch" xml:space="preserve">自動的にリモートからフェッチ 間隔:</x:String>
<x:String x:Key="Text.Configure.Git.AutoFetchIntervalSuffix" xml:space="preserve">分(s)</x:String>
<x:String x:Key="Text.Configure.Git.DefaultRemote" xml:space="preserve">リモートの初期値</x:String>
<x:String x:Key="Text.Configure.IssueTracker" xml:space="preserve">ISSUEトラッカー</x:String>
<x:String x:Key="Text.Configure.IssueTracker.AddSampleGiteeIssue" xml:space="preserve">サンプルのGitee Issueルールを追加</x:String>
<x:String x:Key="Text.Configure.IssueTracker.AddSampleGiteePullRequest" xml:space="preserve">サンプルのGiteeプルリクエストルールを追加</x:String>
<x:String x:Key="Text.Configure.IssueTracker.AddSampleGithub" xml:space="preserve">サンプルのGithubルールを追加</x:String>
<x:String x:Key="Text.Configure.IssueTracker.AddSampleGitLabIssue" xml:space="preserve">サンプルのGitLab Issueルールを追加</x:String>
<x:String x:Key="Text.Configure.IssueTracker.AddSampleGitLabMergeRequest" xml:space="preserve">サンプルのGitLabマージリクエストルールを追加</x:String>
<x:String x:Key="Text.Configure.IssueTracker.AddSampleJira" xml:space="preserve">サンプルのJiraルールを追加</x:String>
<x:String x:Key="Text.Configure.IssueTracker.AddSampleAzure" xml:space="preserve">サンプルのAzure DevOpsルールを追加</x:String>
<x:String x:Key="Text.Configure.IssueTracker.NewRule" xml:space="preserve">新しいルール</x:String>
<x:String x:Key="Text.Configure.IssueTracker.Regex" xml:space="preserve">Issueの正規表現:</x:String>
<x:String x:Key="Text.Configure.IssueTracker.RuleName" xml:space="preserve">ルール名:</x:String>
<x:String x:Key="Text.Configure.IssueTracker.URLTemplate" xml:space="preserve">リザルトURL:</x:String>
<x:String x:Key="Text.Configure.IssueTracker.URLTemplate.Tip" xml:space="preserve">正規表現のグループ値に$1, $2を使用してください。</x:String>
<x:String x:Key="Text.Configure.OpenAI" xml:space="preserve">AI</x:String>
<x:String x:Key="Text.Configure.OpenAI.Preferred" xml:space="preserve">優先するサービス:</x:String>
<x:String x:Key="Text.Configure.OpenAI.Preferred.Tip" xml:space="preserve">優先するサービスが設定されている場合、SourceGitはこのリポジトリでのみそれを使用します。そうでない場合で複数サービスが利用できる場合は、そのうちの1つを選択するためのコンテキストメニューが表示されます。</x:String>
<x:String x:Key="Text.Configure.Proxy" xml:space="preserve">HTTP プロキシ</x:String>
<x:String x:Key="Text.Configure.Proxy.Placeholder" xml:space="preserve">このリポジトリで使用するHTTPプロキシ</x:String>
<x:String x:Key="Text.Configure.User" xml:space="preserve">ユーザー名</x:String>
<x:String x:Key="Text.Configure.User.Placeholder" xml:space="preserve">このリポジトリにおけるユーザー名</x:String>
<x:String x:Key="Text.ConfigureWorkspace" xml:space="preserve">ワークスペース</x:String>
<x:String x:Key="Text.ConfigureWorkspace.Color" xml:space="preserve">色</x:String>
<x:String x:Key="Text.ConfigureWorkspace.Restore" xml:space="preserve">起動時にタブを復元</x:String>
<x:String x:Key="Text.ConventionalCommit" xml:space="preserve">Conventional Commitヘルパー</x:String>
<x:String x:Key="Text.ConventionalCommit.BreakingChanges" xml:space="preserve">破壊的変更:</x:String>
<x:String x:Key="Text.ConventionalCommit.ClosedIssue" xml:space="preserve">閉じたIssue:</x:String>
<x:String x:Key="Text.ConventionalCommit.Detail" xml:space="preserve">詳細な変更:</x:String>
<x:String x:Key="Text.ConventionalCommit.Scope" xml:space="preserve">スコープ:</x:String>
<x:String x:Key="Text.ConventionalCommit.ShortDescription" xml:space="preserve">短い説明:</x:String>
<x:String x:Key="Text.ConventionalCommit.Type" xml:space="preserve">変更の種類:</x:String>
<x:String x:Key="Text.Copy" xml:space="preserve">コピー</x:String>
<x:String x:Key="Text.CopyAllText" xml:space="preserve">すべてのテキストをコピー</x:String>
<x:String x:Key="Text.CopyPath" xml:space="preserve">パスをコピー</x:String>
<x:String x:Key="Text.CopyFullPath" xml:space="preserve">絶対パスをコピー</x:String>
<x:String x:Key="Text.CreateBranch" xml:space="preserve">ブランチを作成...</x:String>
<x:String x:Key="Text.CreateBranch.BasedOn" xml:space="preserve">派生元:</x:String>
<x:String x:Key="Text.CreateBranch.Checkout" xml:space="preserve">作成したブランチにチェックアウト</x:String>
<x:String x:Key="Text.CreateBranch.LocalChanges" xml:space="preserve">ローカルの変更:</x:String>
<x:String x:Key="Text.CreateBranch.LocalChanges.Discard" xml:space="preserve">破棄</x:String>
<x:String x:Key="Text.CreateBranch.LocalChanges.StashAndReply" xml:space="preserve">スタッシュして再適用</x:String>
<x:String x:Key="Text.CreateBranch.Name" xml:space="preserve">新しいブランチの名前:</x:String>
<x:String x:Key="Text.CreateBranch.Name.Placeholder" xml:space="preserve">ブランチの名前を入力</x:String>
<x:String x:Key="Text.CreateBranch.Name.WarnSpace" xml:space="preserve">スペースはダッシュに置き換えられます。</x:String>
<x:String x:Key="Text.CreateBranch.Title" xml:space="preserve">ローカルブランチを作成</x:String>
<x:String x:Key="Text.CreateTag" xml:space="preserve">タグを作成...</x:String>
<x:String x:Key="Text.CreateTag.BasedOn" xml:space="preserve">付与されるコミット:</x:String>
<x:String x:Key="Text.CreateTag.GPGSign" xml:space="preserve">GPG署名を使用</x:String>
<x:String x:Key="Text.CreateTag.Message" xml:space="preserve">タグメッセージ:</x:String>
<x:String x:Key="Text.CreateTag.Message.Placeholder" xml:space="preserve">任意。</x:String>
<x:String x:Key="Text.CreateTag.Name" xml:space="preserve">タグの名前:</x:String>
<x:String x:Key="Text.CreateTag.Name.Placeholder" xml:space="preserve">推奨フォーマット: v1.0.0-alpha</x:String>
<x:String x:Key="Text.CreateTag.PushToAllRemotes" xml:space="preserve">作成後にすべてのリモートにプッシュ</x:String>
<x:String x:Key="Text.CreateTag.Title" xml:space="preserve">新しいタグを作成</x:String>
<x:String x:Key="Text.CreateTag.Type" xml:space="preserve">種類:</x:String>
<x:String x:Key="Text.CreateTag.Type.Annotated" xml:space="preserve">注釈付き</x:String>
<x:String x:Key="Text.CreateTag.Type.Lightweight" xml:space="preserve">軽量</x:String>
<x:String x:Key="Text.CtrlClickTip" xml:space="preserve">Ctrlキーを押しながらクリックで実行</x:String>
<x:String x:Key="Text.Cut" xml:space="preserve">切り取り</x:String>
<x:String x:Key="Text.DeleteBranch" xml:space="preserve">ブランチを削除</x:String>
<x:String x:Key="Text.DeleteBranch.Branch" xml:space="preserve">ブランチ:</x:String>
<x:String x:Key="Text.DeleteBranch.IsRemoteTip" xml:space="preserve">リモートブランチを削除しようとしています!!!</x:String>
<x:String x:Key="Text.DeleteBranch.WithTrackingRemote" xml:space="preserve">もしリモートブランチを削除する場合、${0}$も削除します。</x:String>
<x:String x:Key="Text.DeleteMultiBranch" xml:space="preserve">複数のブランチを削除</x:String>
<x:String x:Key="Text.DeleteMultiBranch.Tip" xml:space="preserve">一度に複数のブランチを削除しようとしています! 操作を行う前に再度確認してください!</x:String>
<x:String x:Key="Text.DeleteRemote" xml:space="preserve">リモートを削除</x:String>
<x:String x:Key="Text.DeleteRemote.Remote" xml:space="preserve">リモート:</x:String>
<x:String x:Key="Text.DeleteRepositoryNode.Path" xml:space="preserve">パス:</x:String>
<x:String x:Key="Text.DeleteRepositoryNode.Target" xml:space="preserve">対象:</x:String>
<x:String x:Key="Text.DeleteRepositoryNode.TipForGroup" xml:space="preserve">すべての子ノードがリストから削除されます。</x:String>
<x:String x:Key="Text.DeleteRepositoryNode.TitleForGroup" xml:space="preserve">グループを削除</x:String>
<x:String x:Key="Text.DeleteRepositoryNode.TipForRepository" xml:space="preserve">これはリストからのみ削除され、ディスクには保存されません!</x:String>
<x:String x:Key="Text.DeleteRepositoryNode.TitleForRepository" xml:space="preserve">リポジトリを削除</x:String>
<x:String x:Key="Text.DeleteSubmodule" xml:space="preserve">サブモジュールを削除</x:String>
<x:String x:Key="Text.DeleteSubmodule.Path" xml:space="preserve">サブモジュールのパス:</x:String>
<x:String x:Key="Text.DeleteTag" xml:space="preserve">タグを削除</x:String>
<x:String x:Key="Text.DeleteTag.Tag" xml:space="preserve">タグ:</x:String>
<x:String x:Key="Text.DeleteTag.WithRemote" xml:space="preserve">リモートリポジトリから削除</x:String>
<x:String x:Key="Text.Diff.Binary" xml:space="preserve">バイナリの差分</x:String>
<x:String x:Key="Text.Diff.Binary.New" xml:space="preserve">NEW</x:String>
<x:String x:Key="Text.Diff.Binary.Old" xml:space="preserve">OLD</x:String>
<x:String x:Key="Text.Diff.Copy" xml:space="preserve">コピー</x:String>
<x:String x:Key="Text.Diff.FileModeChanged" xml:space="preserve">ファイルモードが変更されました</x:String>
<x:String x:Key="Text.Diff.First" xml:space="preserve">先頭の差分</x:String>
<x:String x:Key="Text.Diff.IgnoreWhitespace" xml:space="preserve">空白の変更を無視</x:String>
<x:String x:Key="Text.Diff.Last" xml:space="preserve">最後の差分</x:String>
<x:String x:Key="Text.Diff.LFS" xml:space="preserve">LFSオブジェクトの変更</x:String>
<x:String x:Key="Text.Diff.Next" xml:space="preserve">次の差分</x:String>
<x:String x:Key="Text.Diff.NoChange" xml:space="preserve">変更がない、もしくはEOLの変更のみ</x:String>
<x:String x:Key="Text.Diff.Prev" xml:space="preserve">前の差分</x:String>
<x:String x:Key="Text.Diff.SaveAsPatch" xml:space="preserve">パッチとして保存</x:String>
<x:String x:Key="Text.Diff.ShowHiddenSymbols" xml:space="preserve">隠されたシンボルを表示</x:String>
<x:String x:Key="Text.Diff.SideBySide" xml:space="preserve">差分の分割表示</x:String>
<x:String x:Key="Text.Diff.Submodule" xml:space="preserve">サブモジュール</x:String>
<x:String x:Key="Text.Diff.Submodule.New" xml:space="preserve">新規</x:String>
<x:String x:Key="Text.Diff.SwapCommits" xml:space="preserve">スワップ</x:String>
<x:String x:Key="Text.Diff.SyntaxHighlight" xml:space="preserve">シンタックスハイライト</x:String>
<x:String x:Key="Text.Diff.ToggleWordWrap" xml:space="preserve">行の折り返し</x:String>
<x:String x:Key="Text.Diff.UseBlockNavigation" xml:space="preserve">ブロックナビゲーションを有効化</x:String>
<x:String x:Key="Text.Diff.UseMerger" xml:space="preserve">マージツールで開く</x:String>
<x:String x:Key="Text.Diff.VisualLines.All" xml:space="preserve">すべての行を表示</x:String>
<x:String x:Key="Text.Diff.VisualLines.Decr" xml:space="preserve">表示する行数を減らす</x:String>
<x:String x:Key="Text.Diff.VisualLines.Incr" xml:space="preserve">表示する行数を増やす</x:String>
<x:String x:Key="Text.Diff.Welcome" xml:space="preserve">ファイルを選択すると、変更内容が表示されます</x:String>
<x:String x:Key="Text.DiffWithMerger" xml:space="preserve">マージツールで開く</x:String>
<x:String x:Key="Text.Discard" xml:space="preserve">変更を破棄</x:String>
<x:String x:Key="Text.Discard.All" xml:space="preserve">ワーキングディレクトリのすべての変更を破棄</x:String>
<x:String x:Key="Text.Discard.Changes" xml:space="preserve">変更:</x:String>
<x:String x:Key="Text.Discard.IncludeIgnored" xml:space="preserve">無視したファイルを含める</x:String>
<x:String x:Key="Text.Discard.Total" xml:space="preserve">{0}個の変更を破棄します。</x:String>
<x:String x:Key="Text.Discard.Warning" xml:space="preserve">この操作を元に戻すことはできません!!!</x:String>
<x:String x:Key="Text.EditRepositoryNode.Bookmark" xml:space="preserve">ブックマーク:</x:String>
<x:String x:Key="Text.EditRepositoryNode.Name" xml:space="preserve">新しい名前:</x:String>
<x:String x:Key="Text.EditRepositoryNode.Target" xml:space="preserve">対象:</x:String>
<x:String x:Key="Text.EditRepositoryNode.TitleForGroup" xml:space="preserve">選択中のグループを編集</x:String>
<x:String x:Key="Text.EditRepositoryNode.TitleForRepository" xml:space="preserve">選択中のリポジトリを編集</x:String>
<x:String x:Key="Text.ExecuteCustomAction" xml:space="preserve">カスタムアクションを実行</x:String>
<x:String x:Key="Text.ExecuteCustomAction.Name" xml:space="preserve">アクション名:</x:String>
<x:String x:Key="Text.FastForwardWithoutCheck" xml:space="preserve">(チェックアウトせずに)ブランチを早送りする</x:String>
<x:String x:Key="Text.Fetch" xml:space="preserve">フェッチ</x:String>
<x:String x:Key="Text.Fetch.AllRemotes" xml:space="preserve">すべてのリモートをフェッチ</x:String>
<x:String x:Key="Text.Fetch.Force" xml:space="preserve">ローカル参照を強制的に上書き</x:String>
<x:String x:Key="Text.Fetch.NoTags" xml:space="preserve">タグなしでフェッチ</x:String>
<x:String x:Key="Text.Fetch.Remote" xml:space="preserve">リモート:</x:String>
<x:String x:Key="Text.Fetch.Title" xml:space="preserve">リモートの変更をフェッチ</x:String>
<x:String x:Key="Text.FileCM.AssumeUnchanged" xml:space="preserve">変更されていないとみなされる</x:String>
<x:String x:Key="Text.FileCM.Discard" xml:space="preserve">破棄...</x:String>
<x:String x:Key="Text.FileCM.DiscardMulti" xml:space="preserve">{0}個のファイルを破棄...</x:String>
<x:String x:Key="Text.FileCM.DiscardSelectedLines" xml:space="preserve">選択された行の変更を破棄</x:String>
<x:String x:Key="Text.FileCM.OpenWithExternalMerger" xml:space="preserve">外部マージツールで開く</x:String>
<x:String x:Key="Text.FileCM.ResolveUsing" xml:space="preserve">${0}$ を使用して解決</x:String>
<x:String x:Key="Text.FileCM.SaveAsPatch" xml:space="preserve">パッチとして保存...</x:String>
<x:String x:Key="Text.FileCM.Stage" xml:space="preserve">ステージ</x:String>
<x:String x:Key="Text.FileCM.StageMulti" xml:space="preserve">{0}個のファイルをステージ...</x:String>
<x:String x:Key="Text.FileCM.StageSelectedLines" xml:space="preserve">選択された行の変更をステージ</x:String>
<x:String x:Key="Text.FileCM.Stash" xml:space="preserve">スタッシュ...</x:String>
<x:String x:Key="Text.FileCM.StashMulti" xml:space="preserve">{0}個のファイルをスタッシュ...</x:String>
<x:String x:Key="Text.FileCM.Unstage" xml:space="preserve">アンステージ</x:String>
<x:String x:Key="Text.FileCM.UnstageMulti" xml:space="preserve">{0}個のファイルをアンステージ...</x:String>
<x:String x:Key="Text.FileCM.UnstageSelectedLines" xml:space="preserve">選択された行の変更をアンステージ</x:String>
<x:String x:Key="Text.FileCM.UseTheirs" xml:space="preserve">相手の変更を使用 (checkout --theirs)</x:String>
<x:String x:Key="Text.FileCM.UseMine" xml:space="preserve">自分の変更を使用 (checkout --ours)</x:String>
<x:String x:Key="Text.FileHistory" xml:space="preserve">ファイルの履歴</x:String>
<x:String x:Key="Text.FileHistory.FileContent" xml:space="preserve">コンテンツ</x:String>
<x:String x:Key="Text.FileHistory.FileChange" xml:space="preserve">変更</x:String>
<x:String x:Key="Text.GitFlow" xml:space="preserve">Git-Flow</x:String>
<x:String x:Key="Text.GitFlow.DevelopBranch" xml:space="preserve">開発ブランチ:</x:String>
<x:String x:Key="Text.GitFlow.Feature" xml:space="preserve">Feature:</x:String>
<x:String x:Key="Text.GitFlow.FeaturePrefix" xml:space="preserve">Feature プレフィックス:</x:String>
<x:String x:Key="Text.GitFlow.FinishFeature" xml:space="preserve">FLOW - Finish Feature</x:String>
<x:String x:Key="Text.GitFlow.FinishHotfix" xml:space="preserve">FLOW - Finish Hotfix</x:String>
<x:String x:Key="Text.GitFlow.FinishRelease" xml:space="preserve">FLOW - Finish Release</x:String>
<x:String x:Key="Text.GitFlow.FinishTarget" xml:space="preserve">対象:</x:String>
<x:String x:Key="Text.GitFlow.Hotfix" xml:space="preserve">Hotfix:</x:String>
<x:String x:Key="Text.GitFlow.HotfixPrefix" xml:space="preserve">Hotfix プレフィックス:</x:String>
<x:String x:Key="Text.GitFlow.Init" xml:space="preserve">Git-Flowを初期化</x:String>
<x:String x:Key="Text.GitFlow.KeepBranchAfterFinish" xml:space="preserve">ブランチを保持</x:String>
<x:String x:Key="Text.GitFlow.ProductionBranch" xml:space="preserve">プロダクション ブランチ:</x:String>
<x:String x:Key="Text.GitFlow.Release" xml:space="preserve">Release:</x:String>
<x:String x:Key="Text.GitFlow.ReleasePrefix" xml:space="preserve">Release プレフィックス:</x:String>
<x:String x:Key="Text.GitFlow.StartFeature" xml:space="preserve">Start Feature...</x:String>
<x:String x:Key="Text.GitFlow.StartFeatureTitle" xml:space="preserve">FLOW - Start Feature</x:String>
<x:String x:Key="Text.GitFlow.StartHotfix" xml:space="preserve">Start Hotfix...</x:String>
<x:String x:Key="Text.GitFlow.StartHotfixTitle" xml:space="preserve">FLOW - Start Hotfix</x:String>
<x:String x:Key="Text.GitFlow.StartPlaceholder" xml:space="preserve">名前を入力</x:String>
<x:String x:Key="Text.GitFlow.StartRelease" xml:space="preserve">Start Release...</x:String>
<x:String x:Key="Text.GitFlow.StartReleaseTitle" xml:space="preserve">FLOW - Start Release</x:String>
<x:String x:Key="Text.GitFlow.TagPrefix" xml:space="preserve">Versionタグ プレフィックス:</x:String>
<x:String x:Key="Text.GitLFS" xml:space="preserve">Git LFS</x:String>
<x:String x:Key="Text.GitLFS.AddTrackPattern" xml:space="preserve">トラックパターンを追加...</x:String>
<x:String x:Key="Text.GitLFS.AddTrackPattern.IsFilename" xml:space="preserve">パターンをファイル名として扱う</x:String>
<x:String x:Key="Text.GitLFS.AddTrackPattern.Pattern" xml:space="preserve">カスタム パターン:</x:String>
<x:String x:Key="Text.GitLFS.AddTrackPattern.Title" xml:space="preserve">Git LFSにトラックパターンを追加</x:String>
<x:String x:Key="Text.GitLFS.Fetch" xml:space="preserve">フェッチ</x:String>
<x:String x:Key="Text.GitLFS.Fetch.Title" xml:space="preserve">LFSオブジェクトをフェッチ</x:String>
<x:String x:Key="Text.GitLFS.Fetch.Tips" xml:space="preserve">`git lfs fetch`を実行して、Git LFSオブジェクトをダウンロードします。ワーキングコピーは更新されません。</x:String>
<x:String x:Key="Text.GitLFS.Install" xml:space="preserve">Git LFSフックをインストール</x:String>
<x:String x:Key="Text.GitLFS.Locks" xml:space="preserve">ロックを表示</x:String>
<x:String x:Key="Text.GitLFS.Locks.Empty" xml:space="preserve">ロックされているファイルはありません</x:String>
<x:String x:Key="Text.GitLFS.Locks.Lock" xml:space="preserve">ロック</x:String>
<x:String x:Key="Text.GitLFS.Locks.OnlyMine" xml:space="preserve">私のロックのみ表示</x:String>
<x:String x:Key="Text.GitLFS.Locks.Title" xml:space="preserve">LFSロック</x:String>
<x:String x:Key="Text.GitLFS.Locks.Unlock" xml:space="preserve">ロック解除</x:String>
<x:String x:Key="Text.GitLFS.Locks.UnlockForce" xml:space="preserve">強制的にロック解除</x:String>
<x:String x:Key="Text.GitLFS.Prune" xml:space="preserve">削除</x:String>
<x:String x:Key="Text.GitLFS.Prune.Tips" xml:space="preserve">`git lfs prune`を実行して、ローカルの保存領域から古いLFSファイルを削除します。</x:String>
<x:String x:Key="Text.GitLFS.Pull" xml:space="preserve">プル</x:String>
<x:String x:Key="Text.GitLFS.Pull.Title" xml:space="preserve">LFSオブジェクトをプル</x:String>
<x:String x:Key="Text.GitLFS.Pull.Tips" xml:space="preserve">`git lfs pull`を実行して、現在の参照とチェックアウトのすべてのGit LFSファイルをダウンロードします。</x:String>
<x:String x:Key="Text.GitLFS.Push" xml:space="preserve">プッシュ</x:String>
<x:String x:Key="Text.GitLFS.Push.Title" xml:space="preserve">LFSオブジェクトをプッシュ</x:String>
<x:String x:Key="Text.GitLFS.Push.Tips" xml:space="preserve">キュー内の大容量ファイルをGit LFSエンドポイントにプッシュします。</x:String>
<x:String x:Key="Text.GitLFS.Remote" xml:space="preserve">リモート:</x:String>
<x:String x:Key="Text.GitLFS.Track" xml:space="preserve">{0}という名前のファイルをトラック</x:String>
<x:String x:Key="Text.GitLFS.TrackByExtension" xml:space="preserve">すべての*{0}ファイルをトラック</x:String>
<x:String x:Key="Text.Histories" xml:space="preserve">履歴</x:String>
<x:String x:Key="Text.Histories.Header.Author" xml:space="preserve">著者</x:String>
<x:String x:Key="Text.Histories.Header.AuthorTime" xml:space="preserve">著者時間</x:String>
<x:String x:Key="Text.Histories.Header.GraphAndSubject" xml:space="preserve">グラフ &amp; コミットのタイトル</x:String>
<x:String x:Key="Text.Histories.Header.SHA" xml:space="preserve">SHA</x:String>
<x:String x:Key="Text.Histories.Header.Time" xml:space="preserve">日時</x:String>
<x:String x:Key="Text.Histories.Selected" xml:space="preserve">{0} コミットを選択しました</x:String>
<x:String x:Key="Text.Histories.Tips" xml:space="preserve">'Ctrl'キーまたは'Shift'キーを押すと、複数のコミットを選択できます。</x:String>
<x:String x:Key="Text.Histories.Tips.MacOS" xml:space="preserve">⌘ または ⇧ キーを押して複数のコミットを選択します。</x:String>
<x:String x:Key="Text.Histories.Tips.Prefix" xml:space="preserve">TIPS:</x:String>
<x:String x:Key="Text.Hotkeys" xml:space="preserve">キーボードショートカットを確認</x:String>
<x:String x:Key="Text.Hotkeys.Global" xml:space="preserve">総合</x:String>
<x:String x:Key="Text.Hotkeys.Global.CancelPopup" xml:space="preserve">現在のポップアップをキャンセル</x:String>
<x:String x:Key="Text.Hotkeys.Global.Clone" xml:space="preserve">新しくリポジトリをクローン</x:String>
<x:String x:Key="Text.Hotkeys.Global.CloseTab" xml:space="preserve">現在のページを閉じる</x:String>
<x:String x:Key="Text.Hotkeys.Global.GotoPrevTab" xml:space="preserve">前のページに移動</x:String>
<x:String x:Key="Text.Hotkeys.Global.GotoNextTab" xml:space="preserve">次のページに移動</x:String>
<x:String x:Key="Text.Hotkeys.Global.NewTab" xml:space="preserve">新しいページを作成</x:String>
<x:String x:Key="Text.Hotkeys.Global.OpenPreferences" xml:space="preserve">設定ダイアログを開く</x:String>
<x:String x:Key="Text.Hotkeys.Repo" xml:space="preserve">リポジトリ</x:String>
<x:String x:Key="Text.Hotkeys.Repo.Commit" xml:space="preserve">ステージ済みの変更をコミット</x:String>
<x:String x:Key="Text.Hotkeys.Repo.CommitAndPush" xml:space="preserve">ステージ済みの変更をコミットしてプッシュ</x:String>
<x:String x:Key="Text.Hotkeys.Repo.CommitWithAutoStage" xml:space="preserve">全ての変更をステージしてコミット</x:String>
<x:String x:Key="Text.Hotkeys.Repo.CreateBranchOnCommit" xml:space="preserve">選択中のコミットから新たなブランチを作成</x:String>
<x:String x:Key="Text.Hotkeys.Repo.DiscardSelected" xml:space="preserve">選択した変更を破棄</x:String>
<x:String x:Key="Text.Hotkeys.Repo.Fetch" xml:space="preserve">直接フェッチを実行</x:String>
<x:String x:Key="Text.Hotkeys.Repo.GoHome" xml:space="preserve">ダッシュボードモード (初期値)</x:String>
<x:String x:Key="Text.Hotkeys.Repo.Pull" xml:space="preserve">直接プルを実行</x:String>
<x:String x:Key="Text.Hotkeys.Repo.Push" xml:space="preserve">直接プッシュを実行</x:String>
<x:String x:Key="Text.Hotkeys.Repo.Refresh" xml:space="preserve">現在のリポジトリを強制的に再読み込み</x:String>
<x:String x:Key="Text.Hotkeys.Repo.StageOrUnstageSelected" xml:space="preserve">選択中の変更をステージ/アンステージ</x:String>
<x:String x:Key="Text.Hotkeys.Repo.OpenSearchCommits" xml:space="preserve">コミット検索モード</x:String>
<x:String x:Key="Text.Hotkeys.Repo.ViewChanges" xml:space="preserve">'変更'に切り替える</x:String>
<x:String x:Key="Text.Hotkeys.Repo.ViewHistories" xml:space="preserve">'履歴'に切り替える</x:String>
<x:String x:Key="Text.Hotkeys.Repo.ViewStashes" xml:space="preserve">'スタッシュ'に切り替える</x:String>
<x:String x:Key="Text.Hotkeys.TextEditor" xml:space="preserve">テキストエディタ</x:String>
<x:String x:Key="Text.Hotkeys.TextEditor.CloseSearch" xml:space="preserve">検索パネルを閉じる</x:String>
<x:String x:Key="Text.Hotkeys.TextEditor.GotoNextMatch" xml:space="preserve">次のマッチを検索</x:String>
<x:String x:Key="Text.Hotkeys.TextEditor.GotoPrevMatch" xml:space="preserve">前のマッチを検索</x:String>
<x:String x:Key="Text.Hotkeys.TextEditor.Search" xml:space="preserve">検索パネルを開く</x:String>
<x:String x:Key="Text.Hunk.Stage" xml:space="preserve">ステージ</x:String>
<x:String x:Key="Text.Hunk.Unstage" xml:space="preserve">アンステージ</x:String>
<x:String x:Key="Text.Hunk.Discard" xml:space="preserve">破棄</x:String>
<x:String x:Key="Text.Init" xml:space="preserve">リポジトリの初期化</x:String>
<x:String x:Key="Text.Init.Path" xml:space="preserve">パス:</x:String>
<x:String x:Key="Text.InProgress.CherryPick" xml:space="preserve">チェリーピックが進行中です。'中止'を押すと元のHEADが復元されます。</x:String>
<x:String x:Key="Text.InProgress.CherryPick.Head" xml:space="preserve">コミットを処理中</x:String>
<x:String x:Key="Text.InProgress.Merge" xml:space="preserve">マージリクエストが進行中です。'中止'を押すと元のHEADが復元されます。</x:String>
<x:String x:Key="Text.InProgress.Merge.Operating" xml:space="preserve">マージ中</x:String>
<x:String x:Key="Text.InProgress.Rebase" xml:space="preserve">リベースが進行中です。'中止'を押すと元のHEADが復元されます。</x:String>
<x:String x:Key="Text.InProgress.Rebase.StoppedAt" xml:space="preserve">停止しました</x:String>
<x:String x:Key="Text.InProgress.Revert" xml:space="preserve">元に戻す処理が進行中です。'中止'を押すと元のHEADが復元されます。</x:String>
<x:String x:Key="Text.InProgress.Revert.Head" xml:space="preserve">コミットを元に戻しています</x:String>
<x:String x:Key="Text.InteractiveRebase" xml:space="preserve">インタラクティブ リベース</x:String>
<x:String x:Key="Text.InteractiveRebase.Target" xml:space="preserve">対象のブランチ:</x:String>
<x:String x:Key="Text.InteractiveRebase.On" xml:space="preserve">On:</x:String>
<x:String x:Key="Text.IssueLinkCM.OpenInBrowser" xml:space="preserve">ブラウザで開く</x:String>
<x:String x:Key="Text.IssueLinkCM.CopyLink" xml:space="preserve">リンクをコピー</x:String>
<x:String x:Key="Text.Launcher.Error" xml:space="preserve">エラー</x:String>
<x:String x:Key="Text.Launcher.Info" xml:space="preserve">通知</x:String>
<x:String x:Key="Text.Merge" xml:space="preserve">ブランチのマージ</x:String>
<x:String x:Key="Text.Merge.Into" xml:space="preserve">宛先:</x:String>
<x:String x:Key="Text.Merge.Mode" xml:space="preserve">マージオプション:</x:String>
<x:String x:Key="Text.Merge.Source" xml:space="preserve">ソースブランチ:</x:String>
<x:String x:Key="Text.MergeMultiple" xml:space="preserve">マージ (複数)</x:String>
<x:String x:Key="Text.MergeMultiple.CommitChanges" xml:space="preserve">すべての変更をコミット</x:String>
<x:String x:Key="Text.MergeMultiple.Strategy" xml:space="preserve">マージ戦略:</x:String>
<x:String x:Key="Text.MergeMultiple.Targets" xml:space="preserve">対象:</x:String>
<x:String x:Key="Text.MoveRepositoryNode" xml:space="preserve">リポジトリノードの移動</x:String>
<x:String x:Key="Text.MoveRepositoryNode.Target" xml:space="preserve">親ノードを選択:</x:String>
<x:String x:Key="Text.Name" xml:space="preserve">名前:</x:String>
<x:String x:Key="Text.NotConfigured" xml:space="preserve">Gitが設定されていません。まず[設定]に移動して設定を行ってください。</x:String>
<x:String x:Key="Text.OpenAppDataDir" xml:space="preserve">アプリケーションデータのディレクトリを開く</x:String>
<x:String x:Key="Text.OpenWith" xml:space="preserve">外部ツールで開く...</x:String>
<x:String x:Key="Text.Optional" xml:space="preserve">任意。</x:String>
<x:String x:Key="Text.PageTabBar.New" xml:space="preserve">新しいページを開く</x:String>
<x:String x:Key="Text.PageTabBar.Tab.Bookmark" xml:space="preserve">ブックマーク</x:String>
<x:String x:Key="Text.PageTabBar.Tab.Close" xml:space="preserve">タブを閉じる</x:String>
<x:String x:Key="Text.PageTabBar.Tab.CloseOther" xml:space="preserve">他のタブを閉じる</x:String>
<x:String x:Key="Text.PageTabBar.Tab.CloseRight" xml:space="preserve">右のタブを閉じる</x:String>
<x:String x:Key="Text.PageTabBar.Tab.CopyPath" xml:space="preserve">リポジトリパスをコピー</x:String>
<x:String x:Key="Text.PageTabBar.Welcome.Title" xml:space="preserve">リポジトリ</x:String>
<x:String x:Key="Text.Paste" xml:space="preserve">貼り付け</x:String>
<x:String x:Key="Text.Period.JustNow" xml:space="preserve">たった今</x:String>
<x:String x:Key="Text.Period.MinutesAgo" xml:space="preserve">{0} 分前</x:String>
<x:String x:Key="Text.Period.HourAgo" xml:space="preserve">1 時間前</x:String>
<x:String x:Key="Text.Period.HoursAgo" xml:space="preserve">{0} 時間前</x:String>
<x:String x:Key="Text.Period.Yesterday" xml:space="preserve">昨日</x:String>
<x:String x:Key="Text.Period.DaysAgo" xml:space="preserve">{0} 日前</x:String>
<x:String x:Key="Text.Period.LastMonth" xml:space="preserve">先月</x:String>
<x:String x:Key="Text.Period.MonthsAgo" xml:space="preserve">{0} ヶ月前</x:String>
<x:String x:Key="Text.Period.LastYear" xml:space="preserve">昨年</x:String>
<x:String x:Key="Text.Period.YearsAgo" xml:space="preserve">{0} 年前</x:String>
<x:String x:Key="Text.Preferences" xml:space="preserve">設定</x:String>
<x:String x:Key="Text.Preferences.AI" xml:space="preserve">AI</x:String>
<x:String x:Key="Text.Preferences.AI.AnalyzeDiffPrompt" xml:space="preserve">差分分析プロンプト</x:String>
<x:String x:Key="Text.Preferences.AI.ApiKey" xml:space="preserve">APIキー</x:String>
<x:String x:Key="Text.Preferences.AI.GenerateSubjectPrompt" xml:space="preserve">タイトル生成プロンプト</x:String>
<x:String x:Key="Text.Preferences.AI.Model" xml:space="preserve">モデル</x:String>
<x:String x:Key="Text.Preferences.AI.Name" xml:space="preserve">名前</x:String>
<x:String x:Key="Text.Preferences.AI.Server" xml:space="preserve">サーバー</x:String>
<x:String x:Key="Text.Preferences.AI.Streaming" xml:space="preserve">ストリーミングを有効化</x:String>
<x:String x:Key="Text.Preferences.Appearance" xml:space="preserve">外観</x:String>
<x:String x:Key="Text.Preferences.Appearance.DefaultFont" xml:space="preserve">デフォルトのフォント</x:String>
<x:String x:Key="Text.Preferences.Appearance.EditorTabWidth" xml:space="preserve">エディタのタブ幅</x:String>
<x:String x:Key="Text.Preferences.Appearance.FontSize" xml:space="preserve">フォントサイズ</x:String>
<x:String x:Key="Text.Preferences.Appearance.FontSize.Default" xml:space="preserve">デフォルト</x:String>
<x:String x:Key="Text.Preferences.Appearance.FontSize.Editor" xml:space="preserve">エディタ</x:String>
<x:String x:Key="Text.Preferences.Appearance.MonospaceFont" xml:space="preserve">等幅フォント</x:String>
<x:String x:Key="Text.Preferences.Appearance.OnlyUseMonoFontInEditor" xml:space="preserve">テキストエディタでは等幅フォントのみを使用する</x:String>
<x:String x:Key="Text.Preferences.Appearance.Theme" xml:space="preserve">テーマ</x:String>
<x:String x:Key="Text.Preferences.Appearance.ThemeOverrides" xml:space="preserve">テーマの上書き</x:String>
<x:String x:Key="Text.Preferences.Appearance.UseFixedTabWidth" xml:space="preserve">タイトルバーの固定タブ幅を使用</x:String>
<x:String x:Key="Text.Preferences.Appearance.UseNativeWindowFrame" xml:space="preserve">ネイティブウィンドウフレームを使用</x:String>
<x:String x:Key="Text.Preferences.DiffMerge" xml:space="preserve">差分/マージ ツール</x:String>
<x:String x:Key="Text.Preferences.DiffMerge.Path" xml:space="preserve">インストール パス</x:String>
<x:String x:Key="Text.Preferences.DiffMerge.Path.Placeholder" xml:space="preserve">差分/マージ ツールのパスを入力</x:String>
<x:String x:Key="Text.Preferences.DiffMerge.Type" xml:space="preserve">ツール</x:String>
<x:String x:Key="Text.Preferences.General" xml:space="preserve">総合</x:String>
<x:String x:Key="Text.Preferences.General.Check4UpdatesOnStartup" xml:space="preserve">起動時にアップデートを確認</x:String>
<x:String x:Key="Text.Preferences.General.DateFormat" xml:space="preserve">日時のフォーマット</x:String>
<x:String x:Key="Text.Preferences.General.Locale" xml:space="preserve">言語</x:String>
<x:String x:Key="Text.Preferences.General.MaxHistoryCommits" xml:space="preserve">コミット履歴</x:String>
<x:String x:Key="Text.Preferences.General.ShowAuthorTime" xml:space="preserve">グラフにコミット時間の代わりに著者の時間を表示する</x:String>
<x:String x:Key="Text.Preferences.General.ShowChildren" xml:space="preserve">コミット詳細に子コミットを表示</x:String>
<x:String x:Key="Text.Preferences.General.ShowTagsInGraph" xml:space="preserve">コミットグラフにタグを表示</x:String>
<x:String x:Key="Text.Preferences.General.SubjectGuideLength" xml:space="preserve">コミットタイトル枠の大きさ</x:String>
<x:String x:Key="Text.Preferences.Git" xml:space="preserve">GIT</x:String>
<x:String x:Key="Text.Preferences.Git.CRLF" xml:space="preserve">自動CRLFを有効化</x:String>
<x:String x:Key="Text.Preferences.Git.DefaultCloneDir" xml:space="preserve">デフォルトのクローンディレクトリ</x:String>
<x:String x:Key="Text.Preferences.Git.Email" xml:space="preserve">ユーザー Eメールアドレス</x:String>
<x:String x:Key="Text.Preferences.Git.Email.Placeholder" xml:space="preserve">グローバルgitのEメールアドレス</x:String>
<x:String x:Key="Text.Preferences.Git.EnablePruneOnFetch" xml:space="preserve">フェッチ時に--pruneを有効化</x:String>
<x:String x:Key="Text.Preferences.Git.Path" xml:space="preserve">インストール パス</x:String>
<x:String x:Key="Text.Preferences.Git.SSLVerify" xml:space="preserve">HTTP SSL 検証を有効にする</x:String>
<x:String x:Key="Text.Preferences.Git.User" xml:space="preserve">ユーザー名</x:String>
<x:String x:Key="Text.Preferences.Git.User.Placeholder" xml:space="preserve">グローバルのgitユーザー名</x:String>
<x:String x:Key="Text.Preferences.Git.Version" xml:space="preserve">Gitバージョン</x:String>
<x:String x:Key="Text.Preferences.Git.Invalid" xml:space="preserve">Git (>= 2.23.0) はこのアプリで必要です</x:String>
<x:String x:Key="Text.Preferences.GPG" xml:space="preserve">GPG 署名</x:String>
<x:String x:Key="Text.Preferences.GPG.CommitEnabled" xml:space="preserve">コミットにGPG署名を行う</x:String>
<x:String x:Key="Text.Preferences.GPG.TagEnabled" xml:space="preserve">タグにGPG署名を行う</x:String>
<x:String x:Key="Text.Preferences.GPG.Format" xml:space="preserve">GPGフォーマット</x:String>
<x:String x:Key="Text.Preferences.GPG.Path" xml:space="preserve">プログラムのインストールパス</x:String>
<x:String x:Key="Text.Preferences.GPG.Path.Placeholder" xml:space="preserve">インストールされたgpgプログラムのパスを入力</x:String>
<x:String x:Key="Text.Preferences.GPG.UserKey" xml:space="preserve">ユーザー署名キー</x:String>
<x:String x:Key="Text.Preferences.GPG.UserKey.Placeholder" xml:space="preserve">ユーザーのGPG署名キー</x:String>
<x:String x:Key="Text.Preferences.Integration" xml:space="preserve">統合</x:String>
<x:String x:Key="Text.Preferences.Shell" xml:space="preserve">シェル/ターミナル</x:String>
<x:String x:Key="Text.Preferences.Shell.Type" xml:space="preserve">シェル/ターミナル</x:String>
<x:String x:Key="Text.Preferences.Shell.Path" xml:space="preserve">パス</x:String>
<x:String x:Key="Text.PruneRemote" xml:space="preserve">リモートを削除</x:String>
<x:String x:Key="Text.PruneRemote.Target" xml:space="preserve">対象:</x:String>
<x:String x:Key="Text.PruneWorktrees" xml:space="preserve">作業ツリーを削除</x:String>
<x:String x:Key="Text.PruneWorktrees.Tip" xml:space="preserve">`$GIT_DIR/worktrees` の作業ツリー情報を削除</x:String>
<x:String x:Key="Text.Pull" xml:space="preserve">プル</x:String>
<x:String x:Key="Text.Pull.Branch" xml:space="preserve">ブランチ:</x:String>
<x:String x:Key="Text.Pull.FetchAllBranches" xml:space="preserve">すべてのブランチをフェッチ</x:String>
<x:String x:Key="Text.Pull.Into" xml:space="preserve">宛先:</x:String>
<x:String x:Key="Text.Pull.LocalChanges" xml:space="preserve">ローカルの変更:</x:String>
<x:String x:Key="Text.Pull.LocalChanges.Discard" xml:space="preserve">破棄</x:String>
<x:String x:Key="Text.Pull.LocalChanges.StashAndReply" xml:space="preserve">スタッシュして再適用</x:String>
<x:String x:Key="Text.Pull.NoTags" xml:space="preserve">タグなしでフェッチ</x:String>
<x:String x:Key="Text.Pull.Remote" xml:space="preserve">リモート:</x:String>
<x:String x:Key="Text.Pull.Title" xml:space="preserve">プル (フェッチ &amp; マージ)</x:String>
<x:String x:Key="Text.Pull.UseRebase" xml:space="preserve">マージの代わりにリベースを使用</x:String>
<x:String x:Key="Text.Push" xml:space="preserve">プッシュ</x:String>
<x:String x:Key="Text.Push.CheckSubmodules" xml:space="preserve">サブモジュールがプッシュされていることを確認</x:String>
<x:String x:Key="Text.Push.Force" xml:space="preserve">強制的にプッシュ</x:String>
<x:String x:Key="Text.Push.Local" xml:space="preserve">ローカル ブランチ:</x:String>
<x:String x:Key="Text.Push.Remote" xml:space="preserve">リモート:</x:String>
<x:String x:Key="Text.Push.Title" xml:space="preserve">変更をリモートにプッシュ</x:String>
<x:String x:Key="Text.Push.To" xml:space="preserve">リモート ブランチ:</x:String>
<x:String x:Key="Text.Push.Tracking" xml:space="preserve">追跡ブランチとして設定</x:String>
<x:String x:Key="Text.Push.WithAllTags" xml:space="preserve">すべてのタグをプッシュ</x:String>
<x:String x:Key="Text.PushTag" xml:space="preserve">リモートにタグをプッシュ</x:String>
<x:String x:Key="Text.PushTag.PushAllRemotes" xml:space="preserve">すべてのリモートにプッシュ</x:String>
<x:String x:Key="Text.PushTag.Remote" xml:space="preserve">リモート:</x:String>
<x:String x:Key="Text.PushTag.Tag" xml:space="preserve">タグ:</x:String>
<x:String x:Key="Text.Quit" xml:space="preserve">終了</x:String>
<x:String x:Key="Text.Rebase" xml:space="preserve">現在のブランチをリベース</x:String>
<x:String x:Key="Text.Rebase.AutoStash" xml:space="preserve">ローカルの変更をスタッシュして再適用</x:String>
<x:String x:Key="Text.Rebase.On" xml:space="preserve">On:</x:String>
<x:String x:Key="Text.Rebase.Target" xml:space="preserve">リベース:</x:String>
<x:String x:Key="Text.RefetchAvatar" xml:space="preserve">更新</x:String>
<x:String x:Key="Text.Remote.AddTitle" xml:space="preserve">リモートを追加</x:String>
<x:String x:Key="Text.Remote.EditTitle" xml:space="preserve">リモートを編集</x:String>
<x:String x:Key="Text.Remote.Name" xml:space="preserve">名前:</x:String>
<x:String x:Key="Text.Remote.Name.Placeholder" xml:space="preserve">リモートの名前</x:String>
<x:String x:Key="Text.Remote.URL" xml:space="preserve">リポジトリのURL:</x:String>
<x:String x:Key="Text.Remote.URL.Placeholder" xml:space="preserve">リモートのgitリポジトリのURL</x:String>
<x:String x:Key="Text.RemoteCM.CopyURL" xml:space="preserve">URLをコピー</x:String>
<x:String x:Key="Text.RemoteCM.Delete" xml:space="preserve">削除...</x:String>
<x:String x:Key="Text.RemoteCM.Edit" xml:space="preserve">編集...</x:String>
<x:String x:Key="Text.RemoteCM.Fetch" xml:space="preserve">フェッチ</x:String>
<x:String x:Key="Text.RemoteCM.OpenInBrowser" xml:space="preserve">ブラウザで開く</x:String>
<x:String x:Key="Text.RemoteCM.Prune" xml:space="preserve">削除</x:String>
<x:String x:Key="Text.RemoveWorktree" xml:space="preserve">ワークツリーの削除を確認</x:String>
<x:String x:Key="Text.RemoveWorktree.Force" xml:space="preserve">`--force` オプションを有効化</x:String>
<x:String x:Key="Text.RemoveWorktree.Target" xml:space="preserve">対象:</x:String>
<x:String x:Key="Text.RenameBranch" xml:space="preserve">ブランチの名前を編集</x:String>
<x:String x:Key="Text.RenameBranch.Name" xml:space="preserve">新しい名前:</x:String>
<x:String x:Key="Text.RenameBranch.Name.Placeholder" xml:space="preserve">このブランチにつける一意な名前</x:String>
<x:String x:Key="Text.RenameBranch.Target" xml:space="preserve">ブランチ:</x:String>
<x:String x:Key="Text.Repository.Abort" xml:space="preserve">中止</x:String>
<x:String x:Key="Text.Repository.AutoFetching" xml:space="preserve">リモートから変更を自動取得中...</x:String>
<x:String x:Key="Text.Repository.Clean" xml:space="preserve">クリーンアップ(GC &amp; Prune)</x:String>
<x:String x:Key="Text.Repository.CleanTips" xml:space="preserve">このリポジトリに対して`git gc`コマンドを実行します。</x:String>
<x:String x:Key="Text.Repository.ClearAllCommitsFilter" xml:space="preserve">すべてのフィルターをクリア</x:String>
<x:String x:Key="Text.Repository.Configure" xml:space="preserve">リポジトリの設定</x:String>
<x:String x:Key="Text.Repository.Continue" xml:space="preserve">続ける</x:String>
<x:String x:Key="Text.Repository.CustomActions" xml:space="preserve">カスタムアクション</x:String>
<x:String x:Key="Text.Repository.CustomActions.Empty" xml:space="preserve">カスタムアクションがありません</x:String>
<x:String x:Key="Text.Repository.EnableReflog" xml:space="preserve">`--reflog` オプションを有効化</x:String>
<x:String x:Key="Text.Repository.Explore" xml:space="preserve">ファイルブラウザーで開く</x:String>
<x:String x:Key="Text.Repository.Filter" xml:space="preserve">ブランチ/タグ/サブモジュールを検索</x:String>
<x:String x:Key="Text.Repository.FilterCommits.Default" xml:space="preserve">解除</x:String>
<x:String x:Key="Text.Repository.FilterCommits.Exclude" xml:space="preserve">コミットグラフで非表示</x:String>
<x:String x:Key="Text.Repository.FilterCommits.Include" xml:space="preserve">コミットグラフでフィルター</x:String>
<x:String x:Key="Text.Repository.FirstParentFilterToggle" xml:space="preserve">`--first-parent` オプションを有効化</x:String>
<x:String x:Key="Text.Repository.HistoriesLayout" xml:space="preserve">レイアウト</x:String>
<x:String x:Key="Text.Repository.HistoriesLayout.Horizontal" xml:space="preserve">水平</x:String>
<x:String x:Key="Text.Repository.HistoriesLayout.Vertical" xml:space="preserve">垂直</x:String>
<x:String x:Key="Text.Repository.HistoriesOrder" xml:space="preserve">コミットの並び順</x:String>
<x:String x:Key="Text.Repository.HistoriesOrder.ByDate" xml:space="preserve">日時</x:String>
<x:String x:Key="Text.Repository.HistoriesOrder.Topo" xml:space="preserve">トポロジカルソート</x:String>
<x:String x:Key="Text.Repository.LocalBranches" xml:space="preserve">ローカル ブランチ</x:String>
<x:String x:Key="Text.Repository.NavigateToCurrentHead" xml:space="preserve">HEADに移動</x:String>
<x:String x:Key="Text.Repository.NewBranch" xml:space="preserve">ブランチを作成</x:String>
<x:String x:Key="Text.Repository.Notifications.Clear" xml:space="preserve">通知をクリア</x:String>
<x:String x:Key="Text.Repository.OnlyHighlightCurrentBranchInHistories" xml:space="preserve">グラフで現在のブランチを強調表示</x:String>
<x:String x:Key="Text.Repository.OpenIn" xml:space="preserve">{0} で開く</x:String>
<x:String x:Key="Text.Repository.OpenWithExternalTools" xml:space="preserve">外部ツールで開く</x:String>
<x:String x:Key="Text.Repository.Refresh" xml:space="preserve">更新</x:String>
<x:String x:Key="Text.Repository.Remotes" xml:space="preserve">リモート</x:String>
<x:String x:Key="Text.Repository.Remotes.Add" xml:space="preserve">リモートを追加</x:String>
<x:String x:Key="Text.Repository.Search" xml:space="preserve">コミットを検索</x:String>
<x:String x:Key="Text.Repository.Search.ByAuthor" xml:space="preserve">著者</x:String>
<x:String x:Key="Text.Repository.Search.ByCommitter" xml:space="preserve">コミッター</x:String>
<x:String x:Key="Text.Repository.Search.ByFile" xml:space="preserve">ファイル</x:String>
<x:String x:Key="Text.Repository.Search.ByMessage" xml:space="preserve">メッセージ</x:String>
<x:String x:Key="Text.Repository.Search.BySHA" xml:space="preserve">SHA</x:String>
<x:String x:Key="Text.Repository.Search.InCurrentBranch" xml:space="preserve">現在のブランチ</x:String>
<x:String x:Key="Text.Repository.ShowTagsAsTree" xml:space="preserve">タグをツリーとして表示</x:String>
<x:String x:Key="Text.Repository.Skip" xml:space="preserve">スキップ</x:String>
<x:String x:Key="Text.Repository.Statistics" xml:space="preserve">統計</x:String>
<x:String x:Key="Text.Repository.Submodules" xml:space="preserve">サブモジュール</x:String>
<x:String x:Key="Text.Repository.Submodules.Add" xml:space="preserve">サブモジュールを追加</x:String>
<x:String x:Key="Text.Repository.Submodules.Update" xml:space="preserve">サブモジュールを更新</x:String>
<x:String x:Key="Text.Repository.Tags" xml:space="preserve">タグ</x:String>
<x:String x:Key="Text.Repository.Tags.Add" xml:space="preserve">新しいタグを作成</x:String>
<x:String x:Key="Text.Repository.Tags.OrderByCreatorDate" xml:space="preserve">作成者日時</x:String>
<x:String x:Key="Text.Repository.Tags.OrderByNameAsc" xml:space="preserve">名前 (昇順)</x:String>
<x:String x:Key="Text.Repository.Tags.OrderByNameDesc" xml:space="preserve">名前 (降順)</x:String>
<x:String x:Key="Text.Repository.Tags.Sort" xml:space="preserve">ソート</x:String>
<x:String x:Key="Text.Repository.Terminal" xml:space="preserve">ターミナルで開く</x:String>
<x:String x:Key="Text.Repository.UseRelativeTimeInHistories" xml:space="preserve">履歴に相対時間を使用</x:String>
<x:String x:Key="Text.Repository.Worktrees" xml:space="preserve">ワークツリー</x:String>
<x:String x:Key="Text.Repository.Worktrees.Add" xml:space="preserve">ワークツリーを追加</x:String>
<x:String x:Key="Text.Repository.Worktrees.Prune" xml:space="preserve">削除</x:String>
<x:String x:Key="Text.RepositoryURL" xml:space="preserve">GitリポジトリのURL</x:String>
<x:String x:Key="Text.Reset" xml:space="preserve">現在のブランチをリビジョンにリセット</x:String>
<x:String x:Key="Text.Reset.Mode" xml:space="preserve">リセットモード:</x:String>
<x:String x:Key="Text.Reset.MoveTo" xml:space="preserve">移動先:</x:String>
<x:String x:Key="Text.Reset.Target" xml:space="preserve">現在のブランチ:</x:String>
<x:String x:Key="Text.RevealFile" xml:space="preserve">ファイルエクスプローラーで表示</x:String>
<x:String x:Key="Text.Revert" xml:space="preserve">コミットを戻す</x:String>
<x:String x:Key="Text.Revert.Commit" xml:space="preserve">コミット:</x:String>
<x:String x:Key="Text.Revert.CommitChanges" xml:space="preserve">コミットの変更を戻す</x:String>
<x:String x:Key="Text.Reword" xml:space="preserve">コミットメッセージを書き直す</x:String>
<x:String x:Key="Text.Reword.Tip" xml:space="preserve">改行には'Shift+Enter'キーを使用します。 'Enter"はOKボタンのホットキーとして機能します。</x:String>
<x:String x:Key="Text.Running" xml:space="preserve">実行中です。しばらくお待ちください...</x:String>
<x:String x:Key="Text.Save" xml:space="preserve">保存</x:String>
<x:String x:Key="Text.SaveAs" xml:space="preserve">名前を付けて保存...</x:String>
<x:String x:Key="Text.SaveAsPatchSuccess" xml:space="preserve">パッチが正常に保存されました!</x:String>
<x:String x:Key="Text.ScanRepositories" xml:space="preserve">リポジトリをスキャン</x:String>
<x:String x:Key="Text.ScanRepositories.RootDir" xml:space="preserve">ルートディレクトリ:</x:String>
<x:String x:Key="Text.SelfUpdate" xml:space="preserve">更新を確認</x:String>
<x:String x:Key="Text.SelfUpdate.Available" xml:space="preserve">新しいバージョンのソフトウェアが利用可能です: </x:String>
<x:String x:Key="Text.SelfUpdate.Error" xml:space="preserve">更新の確認に失敗しました!</x:String>
<x:String x:Key="Text.SelfUpdate.GotoDownload" xml:space="preserve">ダウンロード</x:String>
<x:String x:Key="Text.SelfUpdate.IgnoreThisVersion" xml:space="preserve">このバージョンをスキップ</x:String>
<x:String x:Key="Text.SelfUpdate.Title" xml:space="preserve">ソフトウェアの更新</x:String>
<x:String x:Key="Text.SelfUpdate.UpToDate" xml:space="preserve">利用可能なアップデートはありません</x:String>
<x:String x:Key="Text.SetUpstream" xml:space="preserve">トラッキングブランチを設定</x:String>
<x:String x:Key="Text.SetUpstream.Local" xml:space="preserve">ブランチ:</x:String>
<x:String x:Key="Text.SetUpstream.Unset" xml:space="preserve">上流ブランチを解除</x:String>
<x:String x:Key="Text.SetUpstream.Upstream" xml:space="preserve">上流ブランチ:</x:String>
<x:String x:Key="Text.SHALinkCM.CopySHA" xml:space="preserve">SHAをコピー</x:String>
<x:String x:Key="Text.SHALinkCM.NavigateTo" xml:space="preserve">Go to</x:String>
<x:String x:Key="Text.Squash" xml:space="preserve">スカッシュコミット</x:String>
<x:String x:Key="Text.Squash.Into" xml:space="preserve">宛先:</x:String>
<x:String x:Key="Text.SSHKey" xml:space="preserve">SSH プライベートキー:</x:String>
<x:String x:Key="Text.SSHKey.Placeholder" xml:space="preserve">プライベートSSHキーストアのパス</x:String>
<x:String x:Key="Text.Start" xml:space="preserve">スタート</x:String>
<x:String x:Key="Text.Stash" xml:space="preserve">スタッシュ</x:String>
<x:String x:Key="Text.Stash.AutoRestore" xml:space="preserve">スタッシュ後に自動で復元</x:String>
<x:String x:Key="Text.Stash.AutoRestore.Tip" xml:space="preserve">作業ファイルは変更されず、スタッシュが保存されます。</x:String>
<x:String x:Key="Text.Stash.IncludeUntracked" xml:space="preserve">追跡されていないファイルを含める</x:String>
<x:String x:Key="Text.Stash.KeepIndex" xml:space="preserve">ステージされたファイルを保持</x:String>
<x:String x:Key="Text.Stash.Message" xml:space="preserve">メッセージ:</x:String>
<x:String x:Key="Text.Stash.Message.Placeholder" xml:space="preserve">オプション. このスタッシュの名前を入力</x:String>
<x:String x:Key="Text.Stash.OnlyStagedChanges" xml:space="preserve">ステージされた変更のみ</x:String>
<x:String x:Key="Text.Stash.TipForSelectedFiles" xml:space="preserve">選択したファイルの、ステージされた変更とステージされていない変更の両方がスタッシュされます!!!</x:String>
<x:String x:Key="Text.Stash.Title" xml:space="preserve">ローカルの変更をスタッシュ</x:String>
<x:String x:Key="Text.StashCM.Apply" xml:space="preserve">適用</x:String>
<x:String x:Key="Text.StashCM.Drop" xml:space="preserve">破棄</x:String>
<x:String x:Key="Text.StashCM.SaveAsPatch" xml:space="preserve">パッチとして保存</x:String>
<x:String x:Key="Text.StashDropConfirm" xml:space="preserve">スタッシュを破棄</x:String>
<x:String x:Key="Text.StashDropConfirm.Label" xml:space="preserve">破棄:</x:String>
<x:String x:Key="Text.Stashes" xml:space="preserve">スタッシュ</x:String>
<x:String x:Key="Text.Stashes.Changes" xml:space="preserve">変更</x:String>
<x:String x:Key="Text.Stashes.Stashes" xml:space="preserve">スタッシュ</x:String>
<x:String x:Key="Text.Statistics" xml:space="preserve">統計</x:String>
<x:String x:Key="Text.Statistics.CommitAmount" xml:space="preserve">コミット</x:String>
<x:String x:Key="Text.Statistics.Committer" xml:space="preserve">コミッター</x:String>
<x:String x:Key="Text.Statistics.ThisMonth" xml:space="preserve">月間</x:String>
<x:String x:Key="Text.Statistics.ThisWeek" xml:space="preserve">週間</x:String>
<x:String x:Key="Text.Statistics.TotalCommits" xml:space="preserve">コミット: </x:String>
<x:String x:Key="Text.Statistics.TotalAuthors" xml:space="preserve">著者: </x:String>
<x:String x:Key="Text.Statistics.Overview" xml:space="preserve">概要</x:String>
<x:String x:Key="Text.Submodule" xml:space="preserve">サブモジュール</x:String>
<x:String x:Key="Text.Submodule.Add" xml:space="preserve">サブモジュールを追加</x:String>
<x:String x:Key="Text.Submodule.CopyPath" xml:space="preserve">相対パスをコピー</x:String>
<x:String x:Key="Text.Submodule.FetchNested" xml:space="preserve">ネストされたサブモジュールを取得する</x:String>
<x:String x:Key="Text.Submodule.Open" xml:space="preserve">サブモジュールのリポジトリを開く</x:String>
<x:String x:Key="Text.Submodule.RelativePath" xml:space="preserve">相対パス:</x:String>
<x:String x:Key="Text.Submodule.RelativePath.Placeholder" xml:space="preserve">このモジュールを保存するフォルダの相対パス</x:String>
<x:String x:Key="Text.Submodule.Remove" xml:space="preserve">サブモジュールを削除</x:String>
<x:String x:Key="Text.Sure" xml:space="preserve">OK</x:String>
<x:String x:Key="Text.TagCM.Copy" xml:space="preserve">タグ名をコピー</x:String>
<x:String x:Key="Text.TagCM.CopyMessage" xml:space="preserve">タグメッセージをコピー</x:String>
<x:String x:Key="Text.TagCM.Delete" xml:space="preserve">${0}$ を削除...</x:String>
<x:String x:Key="Text.TagCM.Merge" xml:space="preserve">${0}$ を ${1}$ にマージ...</x:String>
<x:String x:Key="Text.TagCM.Push" xml:space="preserve">${0}$ をプッシュ...</x:String>
<x:String x:Key="Text.URL" xml:space="preserve">URL:</x:String>
<x:String x:Key="Text.UpdateSubmodules" xml:space="preserve">サブモジュールを更新</x:String>
<x:String x:Key="Text.UpdateSubmodules.All" xml:space="preserve">すべてのサブモジュール</x:String>
<x:String x:Key="Text.UpdateSubmodules.Init" xml:space="preserve">必要に応じて初期化</x:String>
<x:String x:Key="Text.UpdateSubmodules.Recursive" xml:space="preserve">再帰的に更新</x:String>
<x:String x:Key="Text.UpdateSubmodules.Target" xml:space="preserve">サブモジュール:</x:String>
<x:String x:Key="Text.UpdateSubmodules.UseRemote" xml:space="preserve">--remoteオプションを使用</x:String>
<x:String x:Key="Text.Warn" xml:space="preserve">警告</x:String>
<x:String x:Key="Text.Welcome" xml:space="preserve">ようこそ</x:String>
<x:String x:Key="Text.Welcome.AddRootFolder" xml:space="preserve">グループを作成</x:String>
<x:String x:Key="Text.Welcome.AddSubFolder" xml:space="preserve">サブグループを作成</x:String>
<x:String x:Key="Text.Welcome.Clone" xml:space="preserve">リポジトリをクローンする</x:String>
<x:String x:Key="Text.Welcome.Delete" xml:space="preserve">削除</x:String>
<x:String x:Key="Text.Welcome.DragDropTip" xml:space="preserve">ドラッグ &amp; ドロップでフォルダを追加できます. グループを作成したり、変更したりできます。</x:String>
<x:String x:Key="Text.Welcome.Edit" xml:space="preserve">編集</x:String>
<x:String x:Key="Text.Welcome.Move" xml:space="preserve">別のグループに移動</x:String>
<x:String x:Key="Text.Welcome.OpenAllInNode" xml:space="preserve">すべてのリポジトリを開く</x:String>
<x:String x:Key="Text.Welcome.OpenOrInit" xml:space="preserve">リポジトリを開く</x:String>
<x:String x:Key="Text.Welcome.OpenTerminal" xml:space="preserve">ターミナルを開く</x:String>
<x:String x:Key="Text.Welcome.ScanDefaultCloneDir" xml:space="preserve">デフォルトのクローンディレクトリ内のリポジトリを再スキャン</x:String>
<x:String x:Key="Text.Welcome.Search" xml:space="preserve">リポジトリを検索...</x:String>
<x:String x:Key="Text.Welcome.Sort" xml:space="preserve">ソート</x:String>
<x:String x:Key="Text.WorkingCopy" xml:space="preserve">変更</x:String>
<x:String x:Key="Text.WorkingCopy.AddToGitIgnore" xml:space="preserve">Git Ignore</x:String>
<x:String x:Key="Text.WorkingCopy.AddToGitIgnore.Extension" xml:space="preserve">すべての*{0}ファイルを無視</x:String>
<x:String x:Key="Text.WorkingCopy.AddToGitIgnore.ExtensionInSameFolder" xml:space="preserve">同じフォルダ内の*{0}ファイルを無視</x:String>
<x:String x:Key="Text.WorkingCopy.AddToGitIgnore.InSameFolder" xml:space="preserve">同じフォルダ内のファイルを無視</x:String>
<x:String x:Key="Text.WorkingCopy.AddToGitIgnore.SingleFile" xml:space="preserve">このファイルのみを無視</x:String>
<x:String x:Key="Text.WorkingCopy.Amend" xml:space="preserve">Amend</x:String>
<x:String x:Key="Text.WorkingCopy.CanStageTip" xml:space="preserve">このファイルを今すぐステージできます。</x:String>
<x:String x:Key="Text.WorkingCopy.Commit" xml:space="preserve">コミット</x:String>
<x:String x:Key="Text.WorkingCopy.CommitAndPush" xml:space="preserve">コミットしてプッシュ</x:String>
<x:String x:Key="Text.WorkingCopy.CommitMessageHelper" xml:space="preserve">メッセージのテンプレート/履歴</x:String>
<x:String x:Key="Text.WorkingCopy.CommitTip" xml:space="preserve">クリックイベントをトリガー</x:String>
<x:String x:Key="Text.WorkingCopy.CommitToEdit" xml:space="preserve">コミット (Edit)</x:String>
<x:String x:Key="Text.WorkingCopy.CommitWithAutoStage" xml:space="preserve">すべての変更をステージしてコミット</x:String>
<x:String x:Key="Text.WorkingCopy.ConfirmCommitWithoutFiles" xml:space="preserve">空のコミットが検出されました。続行しますか? (--allow-empty)</x:String>
<x:String x:Key="Text.WorkingCopy.Conflicts" xml:space="preserve">競合が検出されました</x:String>
<x:String x:Key="Text.WorkingCopy.Conflicts.Resolved" xml:space="preserve">ファイルの競合は解決されました</x:String>
<x:String x:Key="Text.WorkingCopy.IncludeUntracked" xml:space="preserve">追跡されていないファイルを含める</x:String>
<x:String x:Key="Text.WorkingCopy.NoCommitHistories" xml:space="preserve">最近の入力メッセージはありません</x:String>
<x:String x:Key="Text.WorkingCopy.NoCommitTemplates" xml:space="preserve">コミットテンプレートはありません</x:String>
<x:String x:Key="Text.WorkingCopy.SignOff" xml:space="preserve">サインオフ</x:String>
<x:String x:Key="Text.WorkingCopy.Staged" xml:space="preserve">ステージしたファイル</x:String>
<x:String x:Key="Text.WorkingCopy.Staged.Unstage" xml:space="preserve">ステージを取り消し</x:String>
<x:String x:Key="Text.WorkingCopy.Staged.UnstageAll" xml:space="preserve">すべてステージを取り消し</x:String>
<x:String x:Key="Text.WorkingCopy.Unstaged" xml:space="preserve">未ステージのファイル</x:String>
<x:String x:Key="Text.WorkingCopy.Unstaged.Stage" xml:space="preserve">ステージへ移動</x:String>
<x:String x:Key="Text.WorkingCopy.Unstaged.StageAll" xml:space="preserve">すべてステージへ移動</x:String>
<x:String x:Key="Text.WorkingCopy.Unstaged.ViewAssumeUnchaged" xml:space="preserve">変更されていないとみなしたものを表示</x:String>
<x:String x:Key="Text.WorkingCopy.UseCommitTemplate" xml:space="preserve">テンプレート: ${0}$</x:String>
<x:String x:Key="Text.WorkingCopy.ResolveTip" xml:space="preserve">選択したファイルを右クリックし、競合を解決する操作を選択してください。</x:String>
<x:String x:Key="Text.Workspace" xml:space="preserve">ワークスペース: </x:String>
<x:String x:Key="Text.Workspace.Configure" xml:space="preserve">ワークスペースを設定...</x:String>
<x:String x:Key="Text.Worktree" xml:space="preserve">ワークツリー</x:String>
<x:String x:Key="Text.Worktree.CopyPath" xml:space="preserve">パスをコピー</x:String>
<x:String x:Key="Text.Worktree.Lock" xml:space="preserve">ロック</x:String>
<x:String x:Key="Text.Worktree.Remove" xml:space="preserve">削除</x:String>
<x:String x:Key="Text.Worktree.Unlock" xml:space="preserve">ロック解除</x:String>
</ResourceDictionary>

View file

@ -723,6 +723,7 @@
<x:String x:Key="Text.WorkingCopy.CommitTip" xml:space="preserve">触发点击事件</x:String>
<x:String x:Key="Text.WorkingCopy.CommitToEdit" xml:space="preserve">提交(修改原始提交)</x:String>
<x:String x:Key="Text.WorkingCopy.CommitWithAutoStage" xml:space="preserve">自动暂存所有变更并提交</x:String>
<x:String x:Key="Text.WorkingCopy.ConfirmCommitWithFilter">当前有 {0} 个文件在暂存区中,但仅显示了 {1} 个文件({2} 个文件被过滤掉了),是否继续提交?</x:String>
<x:String x:Key="Text.WorkingCopy.ConfirmCommitWithoutFiles" xml:space="preserve">提交未包含变更文件!是否继续(--allow-empty)</x:String>
<x:String x:Key="Text.WorkingCopy.Conflicts" xml:space="preserve">检测到冲突</x:String>
<x:String x:Key="Text.WorkingCopy.Conflicts.Resolved" xml:space="preserve">文件冲突已解决</x:String>

View file

@ -722,6 +722,7 @@
<x:String x:Key="Text.WorkingCopy.CommitTip" xml:space="preserve">觸發點擊事件</x:String>
<x:String x:Key="Text.WorkingCopy.CommitToEdit" xml:space="preserve">提交 (修改原始提交)</x:String>
<x:String x:Key="Text.WorkingCopy.CommitWithAutoStage" xml:space="preserve">自動暫存全部變更並提交</x:String>
<x:String x:Key="Text.WorkingCopy.ConfirmCommitWithFilter">您已暫存 {0} 檔案,但只顯示 {1} 檔案 ({2} 檔案被篩選器隱藏)。您要繼續嗎?</x:String>
<x:String x:Key="Text.WorkingCopy.ConfirmCommitWithoutFiles" xml:space="preserve">未包含任何檔案變更! 您是否仍要提交 (--allow-empty)?</x:String>
<x:String x:Key="Text.WorkingCopy.Conflicts" xml:space="preserve">檢測到衝突</x:String>
<x:String x:Key="Text.WorkingCopy.Conflicts.Resolved" xml:space="preserve">檔案衝突已解決</x:String>

View file

@ -0,0 +1,26 @@
using System;
namespace SourceGit.ViewModels
{
public class ConfirmCommit
{
public string Message
{
get;
private set;
}
public ConfirmCommit(string message, Action onSure)
{
Message = message;
_onSure = onSure;
}
public void Continue()
{
_onSure?.Invoke();
}
private Action _onSure;
}
}

View file

@ -1,19 +0,0 @@
namespace SourceGit.ViewModels
{
public class ConfirmCommitWithoutFiles
{
public ConfirmCommitWithoutFiles(WorkingCopy wc, bool autoPush)
{
_wc = wc;
_autoPush = autoPush;
}
public void Continue()
{
_wc.CommitWithoutFiles(_autoPush);
}
private readonly WorkingCopy _wc;
private bool _autoPush;
}
}

View file

@ -2513,30 +2513,37 @@ namespace SourceGit.ViewModels
private void AutoFetchImpl(object sender)
{
if (!_settings.EnableAutoFetch || _isAutoFetching)
return;
var lockFile = Path.Combine(_gitDir, "index.lock");
if (File.Exists(lockFile))
return;
var now = DateTime.Now;
var desire = _lastFetchTime.AddMinutes(_settings.AutoFetchInterval);
if (desire > now)
return;
var remotes = new List<string>();
lock (_lockRemotes)
try
{
foreach (var remote in _remotes)
remotes.Add(remote.Name);
}
if (!_settings.EnableAutoFetch || _isAutoFetching)
return;
Dispatcher.UIThread.Invoke(() => IsAutoFetching = true);
foreach (var remote in remotes)
new Commands.Fetch(_fullpath, remote, false, false, null) { RaiseError = false }.Exec();
_lastFetchTime = DateTime.Now;
Dispatcher.UIThread.Invoke(() => IsAutoFetching = false);
var lockFile = Path.Combine(_gitDir, "index.lock");
if (File.Exists(lockFile))
return;
var now = DateTime.Now;
var desire = _lastFetchTime.AddMinutes(_settings.AutoFetchInterval);
if (desire > now)
return;
var remotes = new List<string>();
lock (_lockRemotes)
{
foreach (var remote in _remotes)
remotes.Add(remote.Name);
}
Dispatcher.UIThread.Invoke(() => IsAutoFetching = true);
foreach (var remote in remotes)
new Commands.Fetch(_fullpath, remote, false, false, null) { RaiseError = false }.Exec();
_lastFetchTime = DateTime.Now;
Dispatcher.UIThread.Invoke(() => IsAutoFetching = false);
}
catch
{
// DO nothing, but prevent `System.AggregateException`
}
}
private string _fullpath = string.Empty;

View file

@ -99,17 +99,18 @@ namespace SourceGit.ViewModels
}
}
public string UnstagedFilter
public string Filter
{
get => _unstagedFilter;
get => _filter;
set
{
if (SetProperty(ref _unstagedFilter, value))
if (SetProperty(ref _filter, value))
{
if (_isLoadingData)
return;
VisibleUnstaged = GetVisibleUnstagedChanges(_unstaged);
VisibleUnstaged = GetVisibleChanges(_unstaged);
VisibleStaged = GetVisibleChanges(_staged);
SelectedUnstaged = [];
}
}
@ -133,6 +134,12 @@ namespace SourceGit.ViewModels
private set => SetProperty(ref _staged, value);
}
public List<Models.Change> VisibleStaged
{
get => _visibleStaged;
private set => SetProperty(ref _visibleStaged, value);
}
public List<Models.Change> SelectedUnstaged
{
get => _selectedUnstaged;
@ -216,6 +223,9 @@ namespace SourceGit.ViewModels
_visibleUnstaged.Clear();
OnPropertyChanged(nameof(VisibleUnstaged));
_visibleStaged.Clear();
OnPropertyChanged(nameof(VisibleStaged));
_unstaged.Clear();
OnPropertyChanged(nameof(Unstaged));
@ -269,7 +279,7 @@ namespace SourceGit.ViewModels
}
}
var visibleUnstaged = GetVisibleUnstagedChanges(unstaged);
var visibleUnstaged = GetVisibleChanges(unstaged);
var selectedUnstaged = new List<Models.Change>();
foreach (var c in visibleUnstaged)
{
@ -278,8 +288,10 @@ namespace SourceGit.ViewModels
}
var staged = GetStagedChanges();
var visibleStaged = GetVisibleChanges(staged);
var selectedStaged = new List<Models.Change>();
foreach (var c in staged)
foreach (var c in visibleStaged)
{
if (lastSelectedStaged.Contains(c.Path))
selectedStaged.Add(c);
@ -290,6 +302,7 @@ namespace SourceGit.ViewModels
_isLoadingData = true;
HasUnsolvedConflicts = hasConflict;
VisibleUnstaged = visibleUnstaged;
VisibleStaged = visibleStaged;
Unstaged = unstaged;
Staged = staged;
SelectedUnstaged = selectedUnstaged;
@ -337,7 +350,7 @@ namespace SourceGit.ViewModels
public void UnstageAll()
{
UnstageChanges(_staged, null);
UnstageChanges(_visibleStaged, null);
}
public void Discard(List<Models.Change> changes)
@ -346,9 +359,9 @@ namespace SourceGit.ViewModels
_repo.ShowPopup(new Discard(_repo, changes));
}
public void ClearUnstagedFilter()
public void ClearFilter()
{
UnstagedFilter = string.Empty;
Filter = string.Empty;
}
public async void UseTheirs(List<Models.Change> changes)
@ -538,11 +551,6 @@ namespace SourceGit.ViewModels
DoCommit(false, true, false);
}
public void CommitWithoutFiles(bool autoPush)
{
DoCommit(false, autoPush, true);
}
public ContextMenu CreateContextMenuForUnstagedChanges()
{
if (_selectedUnstaged == null || _selectedUnstaged.Count == 0)
@ -1472,16 +1480,16 @@ namespace SourceGit.ViewModels
return menu;
}
private List<Models.Change> GetVisibleUnstagedChanges(List<Models.Change> unstaged)
private List<Models.Change> GetVisibleChanges(List<Models.Change> changes)
{
if (string.IsNullOrEmpty(_unstagedFilter))
return unstaged;
if (string.IsNullOrEmpty(_filter))
return changes;
var visible = new List<Models.Change>();
foreach (var c in unstaged)
foreach (var c in changes)
{
if (c.Path.Contains(_unstagedFilter, StringComparison.OrdinalIgnoreCase))
if (c.Path.Contains(_filter, StringComparison.OrdinalIgnoreCase))
visible.Add(c);
}
@ -1599,7 +1607,8 @@ namespace SourceGit.ViewModels
private async void UnstageChanges(List<Models.Change> changes, Models.Change next)
{
if (changes.Count == 0)
var count = changes.Count;
if (count == 0)
return;
// Use `_selectedStaged` instead of `SelectedStaged` to avoid UI refresh.
@ -1611,16 +1620,15 @@ namespace SourceGit.ViewModels
{
await Task.Run(() => new Commands.UnstageChangesForAmend(_repo.FullPath, changes).Exec());
}
else if (changes.Count == _staged.Count)
else if (count == _staged.Count)
{
await Task.Run(() => new Commands.Reset(_repo.FullPath).Exec());
}
else
{
for (int i = 0; i < changes.Count; i += 10)
for (int i = 0; i < count; i += 10)
{
var count = Math.Min(10, changes.Count - i);
var step = changes.GetRange(i, count);
var step = changes.GetRange(i, Math.Min(10, count - i));
await Task.Run(() => new Commands.Reset(_repo.FullPath, step).Exec());
}
}
@ -1642,7 +1650,7 @@ namespace SourceGit.ViewModels
DetailContext = new DiffContext(_repo.FullPath, new Models.DiffOption(change, isUnstaged), _detailContext as DiffContext);
}
private void DoCommit(bool autoStage, bool autoPush, bool allowEmpty)
private void DoCommit(bool autoStage, bool autoPush, bool allowEmpty = false, bool confirmWithFilter = false)
{
if (!_repo.CanCreatePopup())
{
@ -1650,6 +1658,20 @@ namespace SourceGit.ViewModels
return;
}
if (!string.IsNullOrEmpty(_filter) && _staged.Count > _visibleStaged.Count && !confirmWithFilter)
{
var confirmMessage = App.Text("WorkingCopy.ConfirmCommitWithFilter", _staged.Count, _visibleStaged.Count, _staged.Count - _visibleStaged.Count);
App.OpenDialog(new Views.ConfirmCommit()
{
DataContext = new ConfirmCommit(confirmMessage, () =>
{
DoCommit(autoStage, autoPush, allowEmpty, true);
})
});
return;
}
if (string.IsNullOrWhiteSpace(_commitMessage))
{
App.RaiseException(_repo.FullPath, "Commit without message is NOT allowed!");
@ -1660,9 +1682,13 @@ namespace SourceGit.ViewModels
{
if ((autoStage && _count == 0) || (!autoStage && _staged.Count == 0))
{
App.OpenDialog(new Views.ConfirmCommitWithoutFiles()
var confirmMessage = App.Text("WorkingCopy.ConfirmCommitWithoutFiles");
App.OpenDialog(new Views.ConfirmCommit()
{
DataContext = new ConfirmCommitWithoutFiles(this, autoPush)
DataContext = new ConfirmCommit(confirmMessage, () =>
{
DoCommit(autoStage, autoPush, true, confirmWithFilter);
})
});
return;
@ -1729,11 +1755,12 @@ namespace SourceGit.ViewModels
private List<Models.Change> _unstaged = [];
private List<Models.Change> _visibleUnstaged = [];
private List<Models.Change> _staged = [];
private List<Models.Change> _visibleStaged = [];
private List<Models.Change> _selectedUnstaged = [];
private List<Models.Change> _selectedStaged = [];
private int _count = 0;
private object _detailContext = null;
private string _unstagedFilter = string.Empty;
private string _filter = string.Empty;
private string _commitMessage = string.Empty;
private bool _hasUnsolvedConflicts = false;

View file

@ -5,8 +5,8 @@
xmlns:v="using:SourceGit.Views"
xmlns:vm="using:SourceGit.ViewModels"
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
x:Class="SourceGit.Views.ConfirmCommitWithoutFiles"
x:DataType="vm:ConfirmCommitWithoutFiles"
x:Class="SourceGit.Views.ConfirmCommit"
x:DataType="vm:ConfirmCommit"
x:Name="ThisControl"
Icon="/App.ico"
Title="{DynamicResource Text.Warn}"
@ -38,7 +38,7 @@
<!-- Body -->
<Border Grid.Row="1" Margin="16">
<TextBlock Text="{DynamicResource Text.WorkingCopy.ConfirmCommitWithoutFiles}"/>
<TextBlock Text="{Binding Message}" MaxWidth="400" TextWrapping="Wrap"/>
</Border>
<!-- Buttons -->

View file

@ -2,20 +2,16 @@ using Avalonia.Interactivity;
namespace SourceGit.Views
{
public partial class ConfirmCommitWithoutFiles : ChromelessWindow
public partial class ConfirmCommit : ChromelessWindow
{
public ConfirmCommitWithoutFiles()
public ConfirmCommit()
{
InitializeComponent();
}
private void Sure(object _1, RoutedEventArgs _2)
{
if (DataContext is ViewModels.ConfirmCommitWithoutFiles vm)
{
vm.Continue();
}
(DataContext as ViewModels.ConfirmCommit)?.Continue();
Close();
}

View file

@ -195,7 +195,7 @@
</Border>
<!-- TIME -->
<Border Grid.Column="3" Padding="4,0" ClipToBounds="True" IsHitTestVisible="False">
<Border Grid.Column="3" Padding="4,0,8,0" ClipToBounds="True" IsHitTestVisible="False">
<v:CommitTimeTextBlock Classes="primary"
HorizontalAlignment="Center"
FontWeight="{Binding FontWeight}"

View file

@ -19,13 +19,46 @@
<!-- Left -->
<Grid Grid.Column="0">
<Grid.RowDefinitions>
<RowDefinition Height="36"/>
<RowDefinition Height="*" MinHeight="100"/>
<RowDefinition Height="1"/>
<RowDefinition Height="*" MinHeight="100"/>
</Grid.RowDefinitions>
<!-- Search Filter -->
<Border Grid.Row="0" BorderThickness="0,0,0,1" BorderBrush="{DynamicResource Brush.Border0}">
<TextBox Height="24"
Margin="4,0"
BorderThickness="1"
CornerRadius="12"
Text="{Binding Filter, Mode=TwoWay}"
BorderBrush="{DynamicResource Brush.Border2}"
VerticalContentAlignment="Center">
<TextBox.InnerLeftContent>
<Path Width="14" Height="14"
Margin="6,0,0,0"
Fill="{DynamicResource Brush.FG2}"
Data="{StaticResource Icons.Search}"/>
</TextBox.InnerLeftContent>
<TextBox.InnerRightContent>
<Button Classes="icon_button"
Width="16"
Margin="0,0,6,0"
Command="{Binding ClearFilter}"
IsVisible="{Binding Filter, Converter={x:Static StringConverters.IsNotNullOrEmpty}}"
HorizontalAlignment="Right">
<Path Width="14" Height="14"
Margin="0,1,0,0"
Fill="{DynamicResource Brush.FG1}"
Data="{StaticResource Icons.Clear}"/>
</Button>
</TextBox.InnerRightContent>
</TextBox>
</Border>
<!-- Unstaged -->
<Grid Grid.Row="0" RowDefinitions="28,36,*">
<Grid Grid.Row="1" RowDefinitions="28,*">
<!-- Unstaged Toolbar -->
<Border Grid.Row="0" BorderThickness="0,0,0,1" BorderBrush="{DynamicResource Brush.Border0}">
<Grid ColumnDefinitions="Auto,Auto,Auto,Auto,*,Auto,Auto,Auto,Auto,Auto">
@ -75,40 +108,8 @@
</Grid>
</Border>
<!-- Unstaged Filter -->
<Border Grid.Row="1" BorderThickness="0,0,0,1" BorderBrush="{DynamicResource Brush.Border0}">
<TextBox Height="24"
Margin="4,0"
BorderThickness="1"
CornerRadius="12"
Text="{Binding UnstagedFilter, Mode=TwoWay}"
BorderBrush="{DynamicResource Brush.Border2}"
VerticalContentAlignment="Center">
<TextBox.InnerLeftContent>
<Path Width="14" Height="14"
Margin="6,0,0,0"
Fill="{DynamicResource Brush.FG2}"
Data="{StaticResource Icons.Search}"/>
</TextBox.InnerLeftContent>
<TextBox.InnerRightContent>
<Button Classes="icon_button"
Width="16"
Margin="0,0,6,0"
Command="{Binding ClearUnstagedFilter}"
IsVisible="{Binding UnstagedFilter, Converter={x:Static StringConverters.IsNotNullOrEmpty}}"
HorizontalAlignment="Right">
<Path Width="14" Height="14"
Margin="0,1,0,0"
Fill="{DynamicResource Brush.FG1}"
Data="{StaticResource Icons.Clear}"/>
</Button>
</TextBox.InnerRightContent>
</TextBox>
</Border>
<!-- Unstaged Changes -->
<v:ChangeCollectionView Grid.Row="2"
<v:ChangeCollectionView Grid.Row="1"
x:Name="UnstagedChangesView"
Focusable="True"
IsUnstagedChange="True"
@ -123,13 +124,13 @@
</Grid>
<!-- Splitter -->
<GridSplitter Grid.Row="1"
<GridSplitter Grid.Row="2"
MinHeight="1"
HorizontalAlignment="Stretch" VerticalAlignment="Stretch"
Background="{DynamicResource Brush.Border0}"/>
<!-- Staged -->
<Grid Grid.Row="2" RowDefinitions="28,*">
<Grid Grid.Row="3" RowDefinitions="28,*">
<!-- Staged Toolbar -->
<Border Grid.Row="0" BorderThickness="0,0,0,1" BorderBrush="{DynamicResource Brush.Border0}">
<Grid ColumnDefinitions="Auto,Auto,Auto,Auto,*,Auto,Auto,Auto">
@ -155,15 +156,16 @@
ViewMode="{Binding Source={x:Static vm:Preferences.Instance}, Path=StagedChangeViewMode, Mode=TwoWay}"/>
</Grid>
</Border>
<!-- Staged Changes -->
<v:ChangeCollectionView Grid.Row="1"
x:Name="StagedChangesView"
Focusable="True"
IsUnstagedChange="False"
SelectionMode="Multiple"
Background="{DynamicResource Brush.Contents}"
ViewMode="{Binding Source={x:Static vm:Preferences.Instance}, Path=StagedChangeViewMode}"
Changes="{Binding Staged}"
Changes="{Binding VisibleStaged}"
SelectedChanges="{Binding SelectedStaged, Mode=TwoWay}"
ContextRequested="OnStagedContextRequested"
ChangeDoubleTapped="OnStagedChangeDoubleTapped"