1
0
mirror of https://github.com/jesseduffield/lazygit.git synced 2025-05-17 22:32:58 +02:00

Fix pushing to branch when upstream not stored locally (#3619)

- **PR Description**

This fixes three different problems; two were recent regressions, one
has never worked.

1. For branches whose remote is not stored locally, don't ask to force
push right away. Try a normal push first. This broke with #3528.
2. For branches whose remote is not stored locally (but only for those),
if the server rejects the update, ask to force push. This broke with
#3387.
3. When force-pushing a branch whose remote is not stored locally, use
`--force` instead of `--force-with-lease`; otherwise the push would
always fail with a "stale info" error. This has never worked.

Fixes #3588.
This commit is contained in:
Stefan Haller 2024-06-01 08:15:35 +02:00 committed by GitHub
commit c5baa5da3a
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
12 changed files with 1485 additions and 1360 deletions

View File

@ -19,6 +19,7 @@ func NewSyncCommands(gitCommon *GitCommon) *SyncCommands {
// Push pushes to a branch
type PushOpts struct {
Force bool
ForceWithLease bool
UpstreamRemote string
UpstreamBranch string
SetUpstream bool
@ -30,7 +31,8 @@ func (self *SyncCommands) PushCmdObj(task gocui.Task, opts PushOpts) (oscommands
}
cmdArgs := NewGitCmd("push").
ArgIf(opts.Force, "--force-with-lease").
ArgIf(opts.Force, "--force").
ArgIf(opts.ForceWithLease, "--force-with-lease").
ArgIf(opts.SetUpstream, "--set-upstream").
ArgIf(opts.UpstreamRemote != "", opts.UpstreamRemote).
ArgIf(opts.UpstreamBranch != "", opts.UpstreamBranch).

View File

@ -18,24 +18,32 @@ func TestSyncPush(t *testing.T) {
scenarios := []scenario{
{
testName: "Push with force disabled",
opts: PushOpts{Force: false},
opts: PushOpts{ForceWithLease: false},
test: func(cmdObj oscommands.ICmdObj, err error) {
assert.Equal(t, cmdObj.Args(), []string{"git", "push"})
assert.NoError(t, err)
},
},
{
testName: "Push with force-with-lease enabled",
opts: PushOpts{ForceWithLease: true},
test: func(cmdObj oscommands.ICmdObj, err error) {
assert.Equal(t, cmdObj.Args(), []string{"git", "push", "--force-with-lease"})
assert.NoError(t, err)
},
},
{
testName: "Push with force enabled",
opts: PushOpts{Force: true},
test: func(cmdObj oscommands.ICmdObj, err error) {
assert.Equal(t, cmdObj.Args(), []string{"git", "push", "--force-with-lease"})
assert.Equal(t, cmdObj.Args(), []string{"git", "push", "--force"})
assert.NoError(t, err)
},
},
{
testName: "Push with force disabled, upstream supplied",
opts: PushOpts{
Force: false,
ForceWithLease: false,
UpstreamRemote: "origin",
UpstreamBranch: "master",
},
@ -47,7 +55,7 @@ func TestSyncPush(t *testing.T) {
{
testName: "Push with force disabled, setting upstream",
opts: PushOpts{
Force: false,
ForceWithLease: false,
UpstreamRemote: "origin",
UpstreamBranch: "master",
SetUpstream: true,
@ -58,9 +66,9 @@ func TestSyncPush(t *testing.T) {
},
},
{
testName: "Push with force enabled, setting upstream",
testName: "Push with force-with-lease enabled, setting upstream",
opts: PushOpts{
Force: true,
ForceWithLease: true,
UpstreamRemote: "origin",
UpstreamBranch: "master",
SetUpstream: true,
@ -73,7 +81,7 @@ func TestSyncPush(t *testing.T) {
{
testName: "Push with remote branch but no origin",
opts: PushOpts{
Force: true,
ForceWithLease: true,
UpstreamRemote: "",
UpstreamBranch: "master",
SetUpstream: true,

View File

@ -104,7 +104,7 @@ func (b *Branch) IsBehindForPull() bool {
}
func (b *Branch) IsBehindForPush() bool {
return b.BehindForPush != "" && b.BehindForPush != "0"
return b.RemoteBranchStoredLocally() && b.BehindForPush != "0"
}
// for when we're in a detached head state

View File

@ -89,7 +89,7 @@ func (self *SyncController) branchCheckedOut(f func(*models.Branch) error) func(
func (self *SyncController) push(currentBranch *models.Branch) error {
// if we are behind our upstream branch we'll ask if the user wants to force push
if currentBranch.IsTrackingRemote() {
opts := pushOpts{}
opts := pushOpts{remoteBranchStoredLocally: currentBranch.RemoteBranchStoredLocally()}
if currentBranch.IsBehindForPush() {
return self.requestToForcePush(currentBranch, opts)
} else {
@ -180,9 +180,16 @@ func (self *SyncController) pullWithLock(task gocui.Task, opts PullFilesOptions)
type pushOpts struct {
force bool
forceWithLease bool
upstreamRemote string
upstreamBranch string
setUpstream bool
// If this is false, we can't tell ahead of time whether a force-push will
// be necessary, so we start with a normal push and offer to force-push if
// the server rejected. If this is true, we don't offer to force-push if the
// server rejected, but rather ask the user to fetch.
remoteBranchStoredLocally bool
}
func (self *SyncController) pushAux(currentBranch *models.Branch, opts pushOpts) error {
@ -192,13 +199,32 @@ func (self *SyncController) pushAux(currentBranch *models.Branch, opts pushOpts)
task,
git_commands.PushOpts{
Force: opts.force,
ForceWithLease: opts.forceWithLease,
UpstreamRemote: opts.upstreamRemote,
UpstreamBranch: opts.upstreamBranch,
SetUpstream: opts.setUpstream,
})
if err != nil {
if strings.Contains(err.Error(), "Updates were rejected") {
return errors.New(self.c.Tr.UpdatesRejected)
if !opts.force && !opts.forceWithLease && strings.Contains(err.Error(), "Updates were rejected") {
if opts.remoteBranchStoredLocally {
return errors.New(self.c.Tr.UpdatesRejected)
}
forcePushDisabled := self.c.UserConfig.Git.DisableForcePushing
if forcePushDisabled {
return errors.New(self.c.Tr.UpdatesRejectedAndForcePushDisabled)
}
_ = self.c.Confirm(types.ConfirmOpts{
Title: self.c.Tr.ForcePush,
Prompt: self.forcePushPrompt(),
HandleConfirm: func() error {
newOpts := opts
newOpts.force = true
return self.pushAux(currentBranch, newOpts)
},
})
return nil
}
return err
}
@ -216,7 +242,7 @@ func (self *SyncController) requestToForcePush(currentBranch *models.Branch, opt
Title: self.c.Tr.ForcePush,
Prompt: self.forcePushPrompt(),
HandleConfirm: func() error {
opts.force = true
opts.forceWithLease = true
return self.pushAux(currentBranch, opts)
},
})

View File

@ -35,323 +35,324 @@ const chineseIntroPopupMessage = `
// exporting this so we can use it in tests
func chineseTranslationSet() TranslationSet {
return TranslationSet{
NotEnoughSpace: "没有足够的空间来渲染面板",
DiffTitle: "差异",
FilesTitle: "文件",
BranchesTitle: "分支",
CommitsTitle: "提交",
StashTitle: "贮藏",
UnstagedChanges: `未暂存更改`,
StagedChanges: `已暂存更改`,
MainTitle: "主要",
StagingTitle: "正在暂存",
MergingTitle: "正在合并",
NormalTitle: "正常",
CommitSummary: "提交信息",
CredentialsUsername: "用户名",
CredentialsPassword: "密码",
CredentialsPassphrase: "输入 SSH 密钥的密码",
PassUnameWrong: "密码 和/或 用户名错误",
Commit: "提交更改",
AmendLastCommit: "修补最后一次提交",
AmendLastCommitTitle: "修补最后一次提交",
SureToAmend: "您确定要修补上一次提交吗?之后您可以从提交面板更改提交消息。",
NoCommitToAmend: "没有需要提交的修补。",
CommitChangesWithEditor: "提交更改(使用编辑器编辑提交信息)",
StatusTitle: "状态",
Menu: "菜单",
Execute: "执行",
Stage: "切换暂存状态",
ToggleStagedAll: "切换所有文件的暂存状态",
ToggleTreeView: "切换文件树视图",
OpenMergeTool: "打开外部合并工具 (git mergetool)",
Refresh: "刷新",
Push: "推送",
Pull: "拉取",
Scroll: "滚动",
MergeConflictsTitle: "合并冲突",
Checkout: "检出",
NoChangedFiles: "没有更改过文件",
SoftReset: "软重置",
AlreadyCheckedOutBranch: "您已经检出至此分支",
SureForceCheckout: "您确定要强制检出吗?您将丢失所有本地更改",
ForceCheckoutBranch: "强制检出分支",
BranchName: "分支名称",
NewBranchNameBranchOff: "新分支名称(基于 {{.branchName}})",
CantDeleteCheckOutBranch: "您不能删除已检出的分支!",
ForceDeleteBranchMessage: "{{.selectedBranchName}} 还没有被完全合并。您确定要删除它吗?",
RebaseBranch: "将已检出的分支变基到该分支",
CantRebaseOntoSelf: "您不能将分支变基到其自身",
CantMergeBranchIntoItself: "您不能将分支合并到其自身",
ForceCheckout: "强制检出",
CheckoutByName: "按名称检出",
NewBranch: "新分支",
NoBranchesThisRepo: "此仓库中没有分支",
CommitWithoutMessageErr: "您必须编写提交消息才能进行提交",
CloseCancel: "关闭",
Confirm: "确认",
Close: "关闭",
Quit: "退出",
NoCommitsThisBranch: "该分支没有提交",
CannotSquashOrFixupFirstCommit: "There's no commit below to squash into",
Fixup: "修正(fixup)",
SureFixupThisCommit: "您确定要“修正”此提交吗?它将合并到下面的提交中",
SureSquashThisCommit: "您确定要将这个提交压缩到下面的提交中吗?",
Squash: "压缩",
PickCommitTooltip: "选择提交(变基过程中)",
RevertCommit: "还原提交",
Reword: "改写提交",
DropCommit: "删除提交",
MoveDownCommit: "下移提交",
MoveUpCommit: "上移提交",
EditCommitTooltip: "编辑提交",
AmendCommitTooltip: "用已暂存的更改来修补提交",
RewordCommitEditor: "使用编辑器重命名提交",
Error: "错误",
PickHunk: "选中区块",
PickAllHunks: "选中所有区块",
Undo: "撤销",
UndoReflog: "(通过 reflog)撤销「实验功能」",
RedoReflog: "(通过 reflog)重做「实验功能」",
Pop: "应用并删除",
Drop: "删除",
Apply: "应用",
NoStashEntries: "没有贮藏条目",
StashDrop: "删除贮藏",
SureDropStashEntry: "您确定要删除此贮藏条目吗?",
StashPop: "应用并删除贮藏",
SurePopStashEntry: "您确定要应用并删除此贮藏条目吗?",
StashApply: "应用贮藏",
SureApplyStashEntry: "您确定要应用此贮藏条目?",
NoTrackedStagedFilesStash: "没有可以贮藏的已跟踪/暂存文件",
StashChanges: "贮藏更改",
RenameStash: "Rename stash",
RenameStashPrompt: "Rename stash: {{.stashName}}",
OpenConfig: "打开配置文件",
EditConfig: "编辑配置文件",
ForcePush: "强制推送",
ForcePushPrompt: "您的分支已与远程分支不同。按‘esc’取消,或‘enter’强制推送.",
ForcePushDisabled: "您的分支已与远程分支不同, 并且您已经禁用了强行推送",
CheckForUpdate: "检查更新",
CheckingForUpdates: "正在检查更新…",
OnLatestVersionErr: "已是最新版本",
MajorVersionErr: "新版本 ({{.newVersion}}) 与当前版本 ({{.currentVersion}}) 相比,具有非向后兼容的更改",
CouldNotFindBinaryErr: "在 {{.url}} 处找不到任何二进制文件",
MergeToolTitle: "合并工具",
MergeToolPrompt: "确定要打开 `git mergetool` 吗?",
IntroPopupMessage: chineseIntroPopupMessage,
GitconfigParseErr: `由于存在未加引号的'\'字符,因此 Gogit 无法解析您的 gitconfig 文件。删除它们应该可以解决问题。`,
EditFile: `编辑文件`,
OpenFile: `打开文件`,
IgnoreFile: `添加到 .gitignore`,
RefreshFiles: `刷新文件`,
Merge: `合并到当前检出的分支`,
ConfirmQuit: `您确定要退出吗?`,
SwitchRepo: `切换到最近的仓库`,
AllBranchesLogGraph: `显示所有分支的日志`,
UnsupportedGitService: `不支持的 git 服务`,
CreatePullRequest: `创建抓取请求`,
CopyPullRequestURL: `将抓取请求 URL 复制到剪贴板`,
NoBranchOnRemote: `该分支在远程上不存在. 您需要先将其推送到远程.`,
Fetch: `抓取`,
NoAutomaticGitFetchTitle: `无法自动进行 "git fetch"`,
NoAutomaticGitFetchBody: `Lazygit 不能在私人仓库中使用 "git fetch"; 请在文件面板中使用 'f' 手动运行 "git fetch"`,
FileEnter: `暂存单个 块/行 用于文件, 或 折叠/展开 目录`,
FileStagingRequirements: `只能暂存跟踪文件的单独行`,
StageSelectionTooltip: `切换行暂存状态`,
DiscardSelection: `取消变更 (git reset)`,
ToggleRangeSelect: `切换拖动选择`,
ToggleSelectHunk: `切换选择区块`,
ToggleSelectionForPatch: `添加/移除 行到补丁`,
ToggleStagingView: `切换到其他面板`,
ReturnToFilesPanel: `返回文件面板`,
FastForward: `从上游快进此分支`,
FastForwarding: "抓取并快进",
FoundConflictsTitle: "自动合并失败",
ViewMergeRebaseOptions: "查看 合并/变基 选项",
NotMergingOrRebasing: "您目前既不进行变基也不进行合并",
RecentRepos: "最近的仓库",
MergeOptionsTitle: "合并选项",
RebaseOptionsTitle: "变基选项",
CommitSummaryTitle: "提交讯息",
LocalBranchesTitle: "分支页面",
SearchTitle: "搜索",
TagsTitle: "标签页面",
MenuTitle: "菜单",
RemotesTitle: "远程页面",
RemoteBranchesTitle: "远程分支",
PatchBuildingTitle: "构建补丁中",
InformationTitle: "信息",
SecondaryTitle: "次要",
ReflogCommitsTitle: "Reflog 页面",
GlobalTitle: "全局键绑定",
ConflictsResolved: "已解决所有冲突。是否继续?",
ConfirmMerge: "您确定要将分支 {{.selectedBranch}} 合并到 {{.checkedOutBranch}} 吗?",
FwdNoUpstream: "此分支没有上游,无法快进",
FwdNoLocalUpstream: "此分支的远程未在本地注册,无法快进",
FwdCommitsToPush: "此分支带有尚未推送的提交,无法快进",
ErrorOccurred: "发生错误!请在以下位置创建 issue",
NoRoom: "空间不足",
YouAreHere: "您在这里",
RewordNotSupported: "当前不支持交互式重新基准化时的重新措词提交",
CherryPickCopy: "复制提交(拣选)",
PasteCommits: "粘贴提交(拣选)",
SureCherryPick: "您确定要将选中的提交进行拣选到这个分支吗?",
CherryPick: "拣选 (Cherry-Pick)",
Donate: "捐助",
AskQuestion: "提问咨询",
PrevLine: "选择上一行",
NextLine: "选择下一行",
PrevHunk: "选择上一个区块",
NextHunk: "选择下一个区块",
PrevConflict: "选择上一个冲突",
NextConflict: "选择下一个冲突",
SelectPrevHunk: "选择顶部块",
SelectNextHunk: "选择底部块",
ScrollDown: "向下滚动",
ScrollUp: "向上滚动",
ScrollUpMainWindow: "向上滚动主面板",
ScrollDownMainWindow: "向下滚动主面板",
AmendCommitTitle: "修改提交",
AmendCommitPrompt: "您确定要使用暂存文件来修改此提交吗?",
DropCommitTitle: "删除提交",
DropCommitPrompt: "您确定要删除此提交吗?",
PullingStatus: "正在拉取",
PushingStatus: "正在推送",
FetchingStatus: "正在抓取",
SquashingStatus: "正在压缩",
FixingStatus: "正在修正",
DeletingStatus: "正在删除",
MovingStatus: "正在移动",
RebasingStatus: "正在变基",
AmendingStatus: "正在修改",
CherryPickingStatus: "正在拣选",
UndoingStatus: "正在撤销",
RedoingStatus: "正在重做",
CheckingOutStatus: "长子检出",
CommittingStatus: "正在提交",
CommitFiles: "提交文件",
ViewItemFiles: "查看提交的文件",
CommitFilesTitle: "提交文件",
CheckoutCommitFileTooltip: "检出文件",
DiscardOldFileChangeTooltip: "放弃对此文件的提交更改",
DiscardFileChangesTitle: "放弃文件更改",
DiscardFileChangesPrompt: "您确定要舍弃此提交对该文件的更改吗?如果此文件是在此提交中创建的,它将被删除",
DisabledForGPG: "该功能不适用于使用 GPG 的用户",
CreateRepo: "当前目录不在 git 仓库中。是否在此目录创建一个新的 git 仓库?(y/n): ",
AutoStashTitle: "自动存储?",
AutoStashPrompt: "您必须隐藏并弹出更改以使更改生效。自动执行?(enter/esc)",
StashPrefix: "自动隐藏更改 ",
Discard: "查看'放弃更改'选项",
Cancel: "取消",
DiscardAllChanges: "放弃所有更改",
DiscardUnstagedChanges: "放弃未暂存的变更",
DiscardAllChangesToAllFiles: "清空工作区",
DiscardAnyUnstagedChanges: "丢弃未暂存的变更",
DiscardUntrackedFiles: "丢弃未跟踪的文件",
HardReset: "硬重置",
ViewResetOptions: `查看重置选项`,
CreateFixupCommit: `为此提交创建修正`,
SquashAboveCommitsTooltip: `压缩在所选提交之上的所有“fixup!”提交(自动压缩)`,
CreateFixupCommitTooltip: `创建修正提交`,
ExecuteCustomCommand: "执行自定义命令",
CustomCommand: "自定义命令:",
CommitChangesWithoutHook: "提交更改而无需预先提交钩子",
SkipHookPrefixNotConfigured: "您尚未配置用于跳过钩子的提交消息前缀。请在您的配置中设置 `git.skipHookPrefix ='WIP'`",
ResetTo: `重置为`,
PressEnterToReturn: "按下 Enter 键返回 lazygit",
ViewStashOptions: "查看贮藏选项",
StashAllChanges: "将所有更改加入贮藏",
StashAllChangesKeepIndex: "将已暂存的更改加入贮藏",
StashOptions: "贮藏选项",
NotARepository: "错误:必须在 git 仓库中运行",
Jump: "跳到面板",
ScrollLeftRight: "左右滚动",
ScrollLeft: "向左滚动",
ScrollRight: "向右滚动",
DiscardPatch: "丢弃补丁",
DiscardPatchConfirm: "您一次只能通过一个提交或贮藏条目构建补丁。需要放弃当前补丁吗?",
CantPatchWhileRebasingError: "处于合并或变基状态时,您无法构建修补程序或运行修补程序命令",
ToggleAddToPatch: "补丁中包含的切换文件",
ViewPatchOptions: "查看自定义补丁选项",
PatchOptionsTitle: "补丁选项",
NoPatchError: "尚未创建补丁。你可以在提交中的文件上按下“空格”或使用“回车”添加其中的特定行以开始构建补丁",
EnterCommitFile: "输入文件以将所选行添加到补丁中(或切换目录折叠)",
ExitCustomPatchBuilder: `退出逐行模式`,
EnterUpstream: `以这种格式输入上游:'<远程仓库> <分支名称>'`,
InvalidUpstream: "上游格式无效,格式应当为:'<remote> <branchname>'",
ReturnToRemotesList: `返回远程仓库列表`,
NewRemote: `添加新的远程仓库`,
NewRemoteName: `新远程仓库名称:`,
NewRemoteUrl: `新远程仓库 URL:`,
EditRemoteName: `输入远程仓库 {{.remoteName}} 的新名称:`,
EditRemoteUrl: `输入远程仓库 {{.remoteName}} 的新 URL:`,
RemoveRemote: `删除远程`,
RemoveRemotePrompt: "您确定要删除远程仓库吗?",
DeleteRemoteBranch: "删除远程分支",
DeleteRemoteBranchMessage: "您确定要删除远程分支吗?",
SetUpstream: "设置为检出分支的上游",
SetAsUpstreamTooltip: "设置为检出分支的上游",
SetUpstreamTitle: "设置上游分支",
SetUpstreamMessage: "您确定要将 {{.checkedOut}} 的上游分支设置为 {{.selected}} 吗?",
EditRemoteTooltip: "编辑远程仓库",
TagCommit: "标签提交",
TagMenuTitle: "创建标签",
TagNameTitle: "标签名称",
TagMessageTitle: "标签消息",
AnnotatedTag: "附注标签",
LightweightTag: "轻量标签",
PushTagTitle: "将 {{.tagName}} 推送到远程仓库:",
PushTag: "推送标签",
NewTag: "创建标签",
FetchRemoteTooltip: "抓取远程仓库",
FetchingRemoteStatus: "抓取远程仓库中",
CheckoutCommit: "检出提交",
SureCheckoutThisCommit: "您确定要检出此提交吗?",
GitFlowOptions: "显示 git-flow 选项",
NotAGitFlowBranch: "这似乎不是 git flow 分支",
NewGitFlowBranchPrompt: "新的 {{.branchType}} 名称:",
IgnoreTracked: "忽略跟踪文件",
IgnoreTrackedPrompt: "您确定要忽略已跟踪的文件吗?",
ViewResetToUpstreamOptions: "查看上游重置选项",
NextScreenMode: "下一屏模式(正常/半屏/全屏)",
PrevScreenMode: "上一屏模式",
StartSearch: "开始搜索",
Panel: "面板",
Keybindings: "按键绑定",
RenameBranch: "重命名分支",
NewBranchNamePrompt: "输入分支的新名称",
RenameBranchWarning: "该分支正在跟踪远程仓库。此操作将仅会重命名本地分支名称,而不会重命名远程分支的名称。确定继续?",
OpenKeybindingsMenu: "打开菜单",
ResetCherryPick: "重置已拣选(复制)的提交",
NextTab: "下一个标签",
PrevTab: "上一个标签",
CantUndoWhileRebasing: "进行基础调整时无法撤消",
CantRedoWhileRebasing: "变基时无法重做",
MustStashWarning: "将补丁拉出到索引中需要存储和取消存储所做的更改。如果出现问题,您将可以从存储中访问文件。继续?",
MustStashTitle: "必须保存进度",
ConfirmationTitle: "确认面板",
PrevPage: "上一页",
NextPage: "下一页",
GotoTop: "滚动到顶部",
GotoBottom: "滚动到底部",
FilteringBy: "过滤依据",
ResetInParentheses: "(重置)",
OpenFilteringMenu: "查看按路径过滤选项",
FilterBy: "过滤",
ExitFilterMode: "停止按路径过滤",
FilterPathOption: "输入要过滤的路径",
EnterFileName: "输入路径:",
FilteringMenuTitle: "正在过滤",
MustExitFilterModeTitle: "命令不可用",
MustExitFilterModePrompt: "命令在过滤模式下不可用。退出过滤模式?",
Diff: "差异",
EnterRefToDiff: "输入 ref 以 diff",
EnterRefName: "输入 ref:",
ExitDiffMode: "退出差异模式",
DiffingMenuTitle: "正在 diff",
SwapDiff: "反向 diff",
ViewDiffingOptions: "打开 diff 菜单",
NotEnoughSpace: "没有足够的空间来渲染面板",
DiffTitle: "差异",
FilesTitle: "文件",
BranchesTitle: "分支",
CommitsTitle: "提交",
StashTitle: "贮藏",
UnstagedChanges: `未暂存更改`,
StagedChanges: `已暂存更改`,
MainTitle: "主要",
StagingTitle: "正在暂存",
MergingTitle: "正在合并",
NormalTitle: "正常",
CommitSummary: "提交信息",
CredentialsUsername: "用户名",
CredentialsPassword: "密码",
CredentialsPassphrase: "输入 SSH 密钥的密码",
PassUnameWrong: "密码 和/或 用户名错误",
Commit: "提交更改",
AmendLastCommit: "修补最后一次提交",
AmendLastCommitTitle: "修补最后一次提交",
SureToAmend: "您确定要修补上一次提交吗?之后您可以从提交面板更改提交消息。",
NoCommitToAmend: "没有需要提交的修补。",
CommitChangesWithEditor: "提交更改(使用编辑器编辑提交信息)",
StatusTitle: "状态",
Menu: "菜单",
Execute: "执行",
Stage: "切换暂存状态",
ToggleStagedAll: "切换所有文件的暂存状态",
ToggleTreeView: "切换文件树视图",
OpenMergeTool: "打开外部合并工具 (git mergetool)",
Refresh: "刷新",
Push: "推送",
Pull: "拉取",
Scroll: "滚动",
MergeConflictsTitle: "合并冲突",
Checkout: "检出",
NoChangedFiles: "没有更改过文件",
SoftReset: "软重置",
AlreadyCheckedOutBranch: "您已经检出至此分支",
SureForceCheckout: "您确定要强制检出吗?您将丢失所有本地更改",
ForceCheckoutBranch: "强制检出分支",
BranchName: "分支名称",
NewBranchNameBranchOff: "新分支名称(基于 {{.branchName}})",
CantDeleteCheckOutBranch: "您不能删除已检出的分支!",
ForceDeleteBranchMessage: "{{.selectedBranchName}} 还没有被完全合并。您确定要删除它吗?",
RebaseBranch: "将已检出的分支变基到该分支",
CantRebaseOntoSelf: "您不能将分支变基到其自身",
CantMergeBranchIntoItself: "您不能将分支合并到其自身",
ForceCheckout: "强制检出",
CheckoutByName: "按名称检出",
NewBranch: "新分支",
NoBranchesThisRepo: "此仓库中没有分支",
CommitWithoutMessageErr: "您必须编写提交消息才能进行提交",
CloseCancel: "关闭",
Confirm: "确认",
Close: "关闭",
Quit: "退出",
NoCommitsThisBranch: "该分支没有提交",
CannotSquashOrFixupFirstCommit: "There's no commit below to squash into",
Fixup: "修正(fixup)",
SureFixupThisCommit: "您确定要“修正”此提交吗?它将合并到下面的提交中",
SureSquashThisCommit: "您确定要将这个提交压缩到下面的提交中吗?",
Squash: "压缩",
PickCommitTooltip: "选择提交(变基过程中)",
RevertCommit: "还原提交",
Reword: "改写提交",
DropCommit: "删除提交",
MoveDownCommit: "下移提交",
MoveUpCommit: "上移提交",
EditCommitTooltip: "编辑提交",
AmendCommitTooltip: "用已暂存的更改来修补提交",
RewordCommitEditor: "使用编辑器重命名提交",
Error: "错误",
PickHunk: "选中区块",
PickAllHunks: "选中所有区块",
Undo: "撤销",
UndoReflog: "(通过 reflog)撤销「实验功能」",
RedoReflog: "(通过 reflog)重做「实验功能」",
Pop: "应用并删除",
Drop: "删除",
Apply: "应用",
NoStashEntries: "没有贮藏条目",
StashDrop: "删除贮藏",
SureDropStashEntry: "您确定要删除此贮藏条目吗?",
StashPop: "应用并删除贮藏",
SurePopStashEntry: "您确定要应用并删除此贮藏条目吗?",
StashApply: "应用贮藏",
SureApplyStashEntry: "您确定要应用此贮藏条目?",
NoTrackedStagedFilesStash: "没有可以贮藏的已跟踪/暂存文件",
StashChanges: "贮藏更改",
RenameStash: "Rename stash",
RenameStashPrompt: "Rename stash: {{.stashName}}",
OpenConfig: "打开配置文件",
EditConfig: "编辑配置文件",
ForcePush: "强制推送",
ForcePushPrompt: "您的分支已与远程分支不同。按‘esc’取消,或‘enter’强制推送.",
ForcePushDisabled: "您的分支已与远程分支不同, 并且您已经禁用了强行推送",
UpdatesRejectedAndForcePushDisabled: "更新被拒绝,您已禁用强制推送",
CheckForUpdate: "检查更新",
CheckingForUpdates: "正在检查更新…",
OnLatestVersionErr: "已是最新版本",
MajorVersionErr: "新版本 ({{.newVersion}}) 与当前版本 ({{.currentVersion}}) 相比,具有非向后兼容的更改",
CouldNotFindBinaryErr: "在 {{.url}} 处找不到任何二进制文件",
MergeToolTitle: "合并工具",
MergeToolPrompt: "确定要打开 `git mergetool` 吗?",
IntroPopupMessage: chineseIntroPopupMessage,
GitconfigParseErr: `由于存在未加引号的'\'字符,因此 Gogit 无法解析您的 gitconfig 文件。删除它们应该可以解决问题。`,
EditFile: `编辑文件`,
OpenFile: `打开文件`,
IgnoreFile: `添加到 .gitignore`,
RefreshFiles: `刷新文件`,
Merge: `合并到当前检出的分支`,
ConfirmQuit: `您确定要退出吗?`,
SwitchRepo: `切换到最近的仓库`,
AllBranchesLogGraph: `显示所有分支的日志`,
UnsupportedGitService: `不支持的 git 服务`,
CreatePullRequest: `创建抓取请求`,
CopyPullRequestURL: `将抓取请求 URL 复制到剪贴板`,
NoBranchOnRemote: `该分支在远程上不存在. 您需要先将其推送到远程.`,
Fetch: `抓取`,
NoAutomaticGitFetchTitle: `无法自动进行 "git fetch"`,
NoAutomaticGitFetchBody: `Lazygit 不能在私人仓库中使用 "git fetch"; 请在文件面板中使用 'f' 手动运行 "git fetch"`,
FileEnter: `暂存单个 块/行 用于文件, 或 折叠/展开 目录`,
FileStagingRequirements: `只能暂存跟踪文件的单独行`,
StageSelectionTooltip: `切换行暂存状态`,
DiscardSelection: `取消变更 (git reset)`,
ToggleRangeSelect: `切换拖动选择`,
ToggleSelectHunk: `切换选择区块`,
ToggleSelectionForPatch: `添加/移除 行到补丁`,
ToggleStagingView: `切换到其他面板`,
ReturnToFilesPanel: `返回文件面板`,
FastForward: `从上游快进此分支`,
FastForwarding: "抓取并快进",
FoundConflictsTitle: "自动合并失败",
ViewMergeRebaseOptions: "查看 合并/变基 选项",
NotMergingOrRebasing: "您目前既不进行变基也不进行合并",
RecentRepos: "最近的仓库",
MergeOptionsTitle: "合并选项",
RebaseOptionsTitle: "变基选项",
CommitSummaryTitle: "提交讯息",
LocalBranchesTitle: "分支页面",
SearchTitle: "搜索",
TagsTitle: "标签页面",
MenuTitle: "菜单",
RemotesTitle: "远程页面",
RemoteBranchesTitle: "远程分支",
PatchBuildingTitle: "构建补丁中",
InformationTitle: "信息",
SecondaryTitle: "次要",
ReflogCommitsTitle: "Reflog 页面",
GlobalTitle: "全局键绑定",
ConflictsResolved: "已解决所有冲突。是否继续?",
ConfirmMerge: "您确定要将分支 {{.selectedBranch}} 合并到 {{.checkedOutBranch}} 吗?",
FwdNoUpstream: "此分支没有上游,无法快进",
FwdNoLocalUpstream: "此分支的远程未在本地注册,无法快进",
FwdCommitsToPush: "此分支带有尚未推送的提交,无法快进",
ErrorOccurred: "发生错误!请在以下位置创建 issue",
NoRoom: "空间不足",
YouAreHere: "您在这里",
RewordNotSupported: "当前不支持交互式重新基准化时的重新措词提交",
CherryPickCopy: "复制提交(拣选)",
PasteCommits: "粘贴提交(拣选)",
SureCherryPick: "您确定要将选中的提交进行拣选到这个分支吗?",
CherryPick: "拣选 (Cherry-Pick)",
Donate: "捐助",
AskQuestion: "提问咨询",
PrevLine: "选择上一行",
NextLine: "选择下一行",
PrevHunk: "选择上一个区块",
NextHunk: "选择下一个区块",
PrevConflict: "选择上一个冲突",
NextConflict: "选择下一个冲突",
SelectPrevHunk: "选择顶部块",
SelectNextHunk: "选择底部块",
ScrollDown: "向下滚动",
ScrollUp: "向上滚动",
ScrollUpMainWindow: "向上滚动主面板",
ScrollDownMainWindow: "向下滚动主面板",
AmendCommitTitle: "修改提交",
AmendCommitPrompt: "您确定要使用暂存文件来修改此提交吗?",
DropCommitTitle: "删除提交",
DropCommitPrompt: "您确定要删除此提交吗?",
PullingStatus: "正在拉取",
PushingStatus: "正在推送",
FetchingStatus: "正在抓取",
SquashingStatus: "正在压缩",
FixingStatus: "正在修正",
DeletingStatus: "正在删除",
MovingStatus: "正在移动",
RebasingStatus: "正在变基",
AmendingStatus: "正在修改",
CherryPickingStatus: "正在拣选",
UndoingStatus: "正在撤销",
RedoingStatus: "正在重做",
CheckingOutStatus: "长子检出",
CommittingStatus: "正在提交",
CommitFiles: "提交文件",
ViewItemFiles: "查看提交的文件",
CommitFilesTitle: "提交文件",
CheckoutCommitFileTooltip: "检出文件",
DiscardOldFileChangeTooltip: "放弃对此文件的提交更改",
DiscardFileChangesTitle: "放弃文件更改",
DiscardFileChangesPrompt: "您确定要舍弃此提交对该文件的更改吗?如果此文件是在此提交中创建的,它将被删除",
DisabledForGPG: "该功能不适用于使用 GPG 的用户",
CreateRepo: "当前目录不在 git 仓库中。是否在此目录创建一个新的 git 仓库?(y/n): ",
AutoStashTitle: "自动存储?",
AutoStashPrompt: "您必须隐藏并弹出更改以使更改生效。自动执行?(enter/esc)",
StashPrefix: "自动隐藏更改 ",
Discard: "查看'放弃更改'选项",
Cancel: "取消",
DiscardAllChanges: "放弃所有更改",
DiscardUnstagedChanges: "放弃未暂存的变更",
DiscardAllChangesToAllFiles: "清空工作区",
DiscardAnyUnstagedChanges: "丢弃未暂存的变更",
DiscardUntrackedFiles: "丢弃未跟踪的文件",
HardReset: "硬重置",
ViewResetOptions: `查看重置选项`,
CreateFixupCommit: `为此提交创建修正`,
SquashAboveCommitsTooltip: `压缩在所选提交之上的所有“fixup!”提交(自动压缩)`,
CreateFixupCommitTooltip: `创建修正提交`,
ExecuteCustomCommand: "执行自定义命令",
CustomCommand: "自定义命令:",
CommitChangesWithoutHook: "提交更改而无需预先提交钩子",
SkipHookPrefixNotConfigured: "您尚未配置用于跳过钩子的提交消息前缀。请在您的配置中设置 `git.skipHookPrefix ='WIP'`",
ResetTo: `重置为`,
PressEnterToReturn: "按下 Enter 键返回 lazygit",
ViewStashOptions: "查看贮藏选项",
StashAllChanges: "将所有更改加入贮藏",
StashAllChangesKeepIndex: "将已暂存的更改加入贮藏",
StashOptions: "贮藏选项",
NotARepository: "错误:必须在 git 仓库中运行",
Jump: "跳到面板",
ScrollLeftRight: "左右滚动",
ScrollLeft: "向左滚动",
ScrollRight: "向右滚动",
DiscardPatch: "丢弃补丁",
DiscardPatchConfirm: "您一次只能通过一个提交或贮藏条目构建补丁。需要放弃当前补丁吗?",
CantPatchWhileRebasingError: "处于合并或变基状态时,您无法构建修补程序或运行修补程序命令",
ToggleAddToPatch: "补丁中包含的切换文件",
ViewPatchOptions: "查看自定义补丁选项",
PatchOptionsTitle: "补丁选项",
NoPatchError: "尚未创建补丁。你可以在提交中的文件上按下“空格”或使用“回车”添加其中的特定行以开始构建补丁",
EnterCommitFile: "输入文件以将所选行添加到补丁中(或切换目录折叠)",
ExitCustomPatchBuilder: `退出逐行模式`,
EnterUpstream: `以这种格式输入上游:'<远程仓库> <分支名称>'`,
InvalidUpstream: "上游格式无效,格式应当为:'<remote> <branchname>'",
ReturnToRemotesList: `返回远程仓库列表`,
NewRemote: `添加新的远程仓库`,
NewRemoteName: `新远程仓库名称:`,
NewRemoteUrl: `新远程仓库 URL:`,
EditRemoteName: `输入远程仓库 {{.remoteName}} 的新名称:`,
EditRemoteUrl: `输入远程仓库 {{.remoteName}} 的新 URL:`,
RemoveRemote: `删除远程`,
RemoveRemotePrompt: "您确定要删除远程仓库吗?",
DeleteRemoteBranch: "删除远程分支",
DeleteRemoteBranchMessage: "您确定要删除远程分支吗?",
SetUpstream: "设置为检出分支的上游",
SetAsUpstreamTooltip: "设置为检出分支的上游",
SetUpstreamTitle: "设置上游分支",
SetUpstreamMessage: "您确定要将 {{.checkedOut}} 的上游分支设置为 {{.selected}} 吗?",
EditRemoteTooltip: "编辑远程仓库",
TagCommit: "标签提交",
TagMenuTitle: "创建标签",
TagNameTitle: "标签名称",
TagMessageTitle: "标签消息",
AnnotatedTag: "附注标签",
LightweightTag: "轻量标签",
PushTagTitle: "将 {{.tagName}} 推送到远程仓库:",
PushTag: "推送标签",
NewTag: "创建标签",
FetchRemoteTooltip: "抓取远程仓库",
FetchingRemoteStatus: "抓取远程仓库中",
CheckoutCommit: "检出提交",
SureCheckoutThisCommit: "您确定要检出此提交吗?",
GitFlowOptions: "显示 git-flow 选项",
NotAGitFlowBranch: "这似乎不是 git flow 分支",
NewGitFlowBranchPrompt: "新的 {{.branchType}} 名称:",
IgnoreTracked: "忽略跟踪文件",
IgnoreTrackedPrompt: "您确定要忽略已跟踪的文件吗?",
ViewResetToUpstreamOptions: "查看上游重置选项",
NextScreenMode: "下一屏模式(正常/半屏/全屏)",
PrevScreenMode: "上一屏模式",
StartSearch: "开始搜索",
Panel: "面板",
Keybindings: "按键绑定",
RenameBranch: "重命名分支",
NewBranchNamePrompt: "输入分支的新名称",
RenameBranchWarning: "该分支正在跟踪远程仓库。此操作将仅会重命名本地分支名称,而不会重命名远程分支的名称。确定继续?",
OpenKeybindingsMenu: "打开菜单",
ResetCherryPick: "重置已拣选(复制)的提交",
NextTab: "下一个标签",
PrevTab: "上一个标签",
CantUndoWhileRebasing: "进行基础调整时无法撤消",
CantRedoWhileRebasing: "变基时无法重做",
MustStashWarning: "将补丁拉出到索引中需要存储和取消存储所做的更改。如果出现问题,您将可以从存储中访问文件。继续?",
MustStashTitle: "必须保存进度",
ConfirmationTitle: "确认面板",
PrevPage: "上一页",
NextPage: "下一页",
GotoTop: "滚动到顶部",
GotoBottom: "滚动到底部",
FilteringBy: "过滤依据",
ResetInParentheses: "(重置)",
OpenFilteringMenu: "查看按路径过滤选项",
FilterBy: "过滤",
ExitFilterMode: "停止按路径过滤",
FilterPathOption: "输入要过滤的路径",
EnterFileName: "输入路径:",
FilteringMenuTitle: "正在过滤",
MustExitFilterModeTitle: "命令不可用",
MustExitFilterModePrompt: "命令在过滤模式下不可用。退出过滤模式?",
Diff: "差异",
EnterRefToDiff: "输入 ref 以 diff",
EnterRefName: "输入 ref:",
ExitDiffMode: "退出差异模式",
DiffingMenuTitle: "正在 diff",
SwapDiff: "反向 diff",
ViewDiffingOptions: "打开 diff 菜单",
// 实际视图 (actual view) 是附加视图 (extras view),未来,我打算为附加视图提供更多选项卡,但现在,上面的文本只需要提及“命令日志”这个部分
OpenCommandLogMenu: "打开命令日志菜单",
ShowingGitDiff: "显示输出:",

View File

@ -198,6 +198,7 @@ type TranslationSet struct {
ForcePushPrompt string
ForcePushDisabled string
UpdatesRejected string
UpdatesRejectedAndForcePushDisabled string
CheckForUpdate string
CheckingForUpdates string
UpdateAvailableTitle string
@ -1160,6 +1161,7 @@ func EnglishTranslationSet() TranslationSet {
ForcePushPrompt: "Your branch has diverged from the remote branch. Press {{.cancelKey}} to cancel, or {{.confirmKey}} to force push.",
ForcePushDisabled: "Your branch has diverged from the remote branch and you've disabled force pushing",
UpdatesRejected: "Updates were rejected. Please fetch and examine the remote changes before pushing again.",
UpdatesRejectedAndForcePushDisabled: "Updates were rejected and you have disabled force pushing",
CheckForUpdate: "Check for update",
CheckingForUpdates: "Checking for updates...",
UpdateAvailableTitle: "Update available!",

View File

@ -19,270 +19,271 @@ lazygit!를 이용해주셔서 감사합니다. Seriously you rock. Three things
// exporting this so we can use it in tests
func koreanTranslationSet() TranslationSet {
return TranslationSet{
NotEnoughSpace: "패널을 렌더링 할 공간이 부족합니다.",
DiffTitle: "Diff",
FilesTitle: "파일",
BranchesTitle: "브랜치",
CommitsTitle: "커밋",
StashTitle: "Stash",
UnstagedChanges: `Staged되지 않은 변경 내용`,
StagedChanges: `Staged된 변경 내용`,
MainTitle: "메인",
MergeConfirmTitle: "병합",
StagingTitle: "메인 패널 (Staging)",
MergingTitle: "메인 패널 (Merging)",
NormalTitle: "메인 패널 (Normal)",
LogTitle: "로그",
CommitSummary: "커밋 메시지",
CredentialsUsername: "사용자 이름",
CredentialsPassword: "패스워드",
CredentialsPassphrase: "SSH키의 passphrase 입력",
PassUnameWrong: "패스워드, passphrase 또는 사용자 이름이 잘못되었습니다.",
Commit: "커밋 변경내용",
AmendLastCommit: "마지맛 커밋 수정",
AmendLastCommitTitle: "마지막 커밋 수정",
SureToAmend: "마지막 커밋을 수정하시겠습니까? 그런 다음 커밋 패널에서 커밋 메시지를 변경할 수 있습니다.",
NoCommitToAmend: "Amend 가능한 커밋이 없습니다.",
CommitChangesWithEditor: "Git 편집기를 사용하여 변경 내용을 커밋합니다.",
StatusTitle: "상태",
Menu: "메뉴",
Execute: "실행",
Stage: "Staged 전환",
ToggleStagedAll: "모든 변경을 Staged/unstaged으로 전환",
ToggleTreeView: "파일 트리뷰로 전환",
OpenMergeTool: "Git mergetool를 열기",
Refresh: "새로고침",
Push: "푸시",
Pull: "업데이트",
Scroll: "스크롤",
MergeConflictsTitle: "병합 충돌 내용",
Checkout: "체크아웃",
FileFilter: "파일을 필터하기 (Staged/unstaged)",
FilterStagedFiles: "Staged된 파일만 표시",
FilterUnstagedFiles: "Stage되지 않은 파일만 표시",
ResetFilter: "필터 리셋",
NoChangedFiles: "변경된 파일이 없습니다.",
SoftReset: "소프트 리셋",
AlreadyCheckedOutBranch: "브랜치가 이미 체크아웃 되었습니다",
SureForceCheckout: "강제로 체크아웃하시겠습니까? 모든 로컬 변경 사항을 잃게 됩니다.",
ForceCheckoutBranch: "브랜치 강제 체크아웃",
BranchName: "브랜치 이름",
NewBranchNameBranchOff: "새 브랜치 이름 (branch is off of '{{.branchName}}')",
CantDeleteCheckOutBranch: "체크아웃하는 브랜치는 삭제할 수 없습니다!",
ForceDeleteBranchMessage: "'{{.selectedBranchName}}'는 완전히 병합되지 않았습니다. 정말 삭제하시겠습니까?",
RebaseBranch: "체크아웃된 브랜치를 이 브랜치에 리베이스",
CantRebaseOntoSelf: "브랜치를 자기 자신에게 리베이스할 수는 없습니다.",
CantMergeBranchIntoItself: "브랜치를 자기 자신에게 병합할 수는 없습니다.",
ForceCheckout: "강제 체크아웃",
CheckoutByName: "이름으로 체크아웃",
NewBranch: "새 브랜치 생성",
NoBranchesThisRepo: "저장소에 브랜치가 존재하지 않습니다.",
CommitWithoutMessageErr: "커밋 메시지를 입력하세요.",
CloseCancel: "닫기/취소",
Confirm: "확인",
Close: "닫기",
Quit: "종료",
NoCommitsThisBranch: "이 브랜치에 커밋이 없습니다.",
CannotSquashOrFixupFirstCommit: "There's no commit below to squash into",
Fixup: "Fixup",
SureFixupThisCommit: "Are you sure you want to 'fixup' this commit? It will be merged into the commit below",
SureSquashThisCommit: "Are you sure you want to squash this commit into the commit below?",
Squash: "Squash",
PickCommitTooltip: "Pick commit (when mid-rebase)",
RevertCommit: "커밋 되돌리기",
Reword: "커밋메시지 변경",
DropCommit: "커밋 삭제",
MoveDownCommit: "커밋을 1개 아래로 이동",
MoveUpCommit: "커밋을 1개 위로 이동",
EditCommitTooltip: "커밋을 편집",
AmendCommitTooltip: "Amend commit with staged changes",
ResetAuthor: "Reset commit author",
SureResetCommitAuthor: "The author field of this commit will be updated to match the configured user. This also renews the author timestamp. Continue?",
RewordCommitEditor: "에디터에서 커밋메시지 수정",
Error: "오류",
PickHunk: "Pick hunk",
PickAllHunks: "Pick all hunks",
Undo: "되돌리기",
UndoReflog: "되돌리기 (reflog) (실험적)",
RedoReflog: "다시 실행 (reflog) (실험적)",
Pop: "Pop",
Drop: "Drop",
Apply: "적용",
NoStashEntries: "Stash가 존재하지 않습니다.",
StashDrop: "Stash를 삭제",
SureDropStashEntry: "정말로 Stash를 삭제하시겠습니까?",
StashPop: "Stash를 pop",
SurePopStashEntry: "정말로 Stash를 pop하시겠습니까?",
StashApply: "Stash 적용",
SureApplyStashEntry: "정말로 Stash를 적용하시겠습니까?",
NoTrackedStagedFilesStash: "You have no tracked/staged files to stash",
StashChanges: "변경을 Stash",
RenameStash: "Rename stash",
RenameStashPrompt: "Rename stash: {{.stashName}}",
OpenConfig: "설정 파일 열기",
EditConfig: "설정 파일 수정",
ForcePush: "강제 푸시",
ForcePushPrompt: "브랜치가 원격 브랜치에서 분기하고 있습니다. 'esc'를 눌러 취소하거나, 'enter'를 눌러 강제로 푸시하세요.",
ForcePushDisabled: "브랜치가 원격 브랜치에서 분기하고 있습니다. force push가 비활성화 되었습니다.",
CheckForUpdate: "업데이트 확인",
CheckingForUpdates: "업데이트 확인 중...",
UpdateAvailableTitle: "새로운 업데이트 사용가능!",
UpdateAvailable: "버전 {{.newVersion}} 을(를) 설치하시겠습니까?",
UpdateInProgressWaitingStatus: "업데이트 중",
UpdateCompletedTitle: "업데이트 완료!",
UpdateCompleted: "업데이트 설치에 성공했습니다. lazygit를 재시작해주세요.",
FailedToRetrieveLatestVersionErr: "버전 정보를 받아오는데 실패했습니다.",
OnLatestVersionErr: "이미 최신 버전을 사용하고 있습니다.",
MajorVersionErr: "새 버전 ({{.newVersion}}) 에 현재 버전({{.currentVersion}}) 과 비교할 때 호환되지 않는 변경 사항이 있습니다.",
CouldNotFindBinaryErr: "{{.url}} 에서 바이너리를 찾을 수 없습니다.",
UpdateFailedErr: "업데이트 실패: {{.errMessage}}",
ConfirmQuitDuringUpdateTitle: "현재 업데이트 중입니다.",
ConfirmQuitDuringUpdate: "현재 업데이트를 진행 중입니다.종료하시겠습니까?",
MergeToolTitle: "병합 도구",
MergeToolPrompt: "정말로 `git mergetool`을 여시겠습니까?",
IntroPopupMessage: koreanIntroPopupMessage,
GitconfigParseErr: `따옴표로 묶이지 않은 '\' 문자가 있어서 Gogit이 gitconfig 파일을 분석하지 못했습니다. 이를 제거하면 문제가 해결됩니다.`,
EditFile: `파일 편집`,
OpenFile: `파일 닫기`,
IgnoreFile: `.gitignore에 추가`,
RefreshFiles: `파일 새로고침`,
Merge: `현재 브랜치에 병합`,
ConfirmQuit: `정말로 종료하시겠습니까?`,
SwitchRepo: `최근에 사용한 저장소로 전환`,
AllBranchesLogGraph: `모든 브랜치 로그 표시`,
UnsupportedGitService: `지원되지 않는 Git 서비스입니다.`,
CreatePullRequest: `풀 리퀘스트 생성`,
CopyPullRequestURL: `풀 리퀘스트 URL을 클립보드에 복사`,
NoBranchOnRemote: `브랜치가 원격에 없습니다. 원격에 먼저 푸시해야합니다.`,
Fetch: `Fetch`,
NoAutomaticGitFetchTitle: `자동 git 업데이트) 없음`,
NoAutomaticGitFetchBody: `Lazygit은 private 저장소에서 "git fetch"를 사용할 수 없습니다. 파일 패널에서 'f'를 사용하여 "git fetch"를 수동으로 실행하세요.`,
FileEnter: `Stage individual hunks/lines for file, or collapse/expand for directory`,
FileStagingRequirements: `추적된 파일에 대해 개별 라인만 stage할 수 있습니다.`,
StageSelectionTooltip: `선택한 행을 staged / unstaged`,
DiscardSelection: `변경을 삭제 (git reset)`,
ToggleRangeSelect: `드래그 선택 전환`,
ToggleSelectHunk: `Toggle select hunk`,
ToggleSelectionForPatch: `Line(s)을 패치에 추가/삭제`,
ToggleStagingView: `패널 전환`,
ReturnToFilesPanel: `파일 목록으로 돌아가기`,
FastForward: `Fast-forward this branch from its upstream`,
FastForwarding: "Fast-forwarding",
FoundConflictsTitle: "Auto-merge failed",
ViewMergeRebaseOptions: "View merge/rebase options",
NotMergingOrRebasing: "You are currently neither rebasing nor merging",
RecentRepos: "최근에 사용한 저장소",
MergeOptionsTitle: "Merge options",
RebaseOptionsTitle: "Rebase options",
CommitSummaryTitle: "커밋메시지",
LocalBranchesTitle: "브랜치",
SearchTitle: "검색",
TagsTitle: "태그",
MenuTitle: "메뉴",
RemotesTitle: "원격",
RemoteBranchesTitle: "원격 브랜치",
PatchBuildingTitle: "메인 패널 (Patch Building)",
InformationTitle: "정보",
SecondaryTitle: "Secondary",
ReflogCommitsTitle: "Reflog",
GlobalTitle: "글로벌 키 바인딩",
ConflictsResolved: "모든 병합 충돌이 해결되었습니다. 계속 할까요?",
ConfirmMerge: "정말로 '{{.selectedBranch}}' 을(를) '{{.checkedOutBranch}}'에 병합하시겠습니까?",
FwdNoUpstream: "Cannot fast-forward a branch with no upstream",
FwdNoLocalUpstream: "Cannot fast-forward a branch whose remote is not registered locally",
FwdCommitsToPush: "Cannot fast-forward a branch with commits to push",
ErrorOccurred: "오류가 발생했습니다! issue를 작성해 주세요: ",
NoRoom: "Not enough room",
YouAreHere: "현재 위치",
RewordNotSupported: "Rewording commits while interactively rebasing is not currently supported",
CherryPickCopy: "커밋을 복사 (cherry-pick)",
PasteCommits: "커밋을 붙여넣기 (cherry-pick)",
SureCherryPick: "정말로 복사한 커밋을 이 브랜치에 체리픽하시겠습니까?",
CherryPick: "체리픽",
Donate: "후원",
AskQuestion: "질문하기",
PrevLine: "이전 줄 선택",
NextLine: "다음 줄 선택",
PrevHunk: "이전 hunk를 선택",
NextHunk: "다음 hunk를 선택",
PrevConflict: "이전 충돌을 선택",
NextConflict: "다음 충돌을 선택",
SelectPrevHunk: "이전 hunk를 선택",
SelectNextHunk: "다음 hunk를 선택",
ScrollDown: "아래로 스크롤",
ScrollUp: "위로 스크롤",
ScrollUpMainWindow: "메인 패널을 위로 스크롤",
ScrollDownMainWindow: "메인 패널을 아래로로 스크롤",
AmendCommitTitle: "Amend commit",
AmendCommitPrompt: "Are you sure you want to amend this commit with your staged files?",
DropCommitTitle: "커밋 삭제",
DropCommitPrompt: "정말로 선택한 커밋을 삭제하시겠습니까?",
PullingStatus: "업데이트 중",
PushingStatus: "푸시 중",
FetchingStatus: "패치 중",
SquashingStatus: "Squashing",
FixingStatus: "Fixing up",
DeletingStatus: "Deleting",
MovingStatus: "Moving",
RebasingStatus: "Rebasing",
AmendingStatus: "Amending",
CherryPickingStatus: "Cherry-picking",
UndoingStatus: "Undoing",
RedoingStatus: "Redoing",
CheckingOutStatus: "Checking out",
CommittingStatus: "Committing",
CommitFiles: "Commit files",
SubCommitsDynamicTitle: "커밋 (%s)",
CommitFilesDynamicTitle: "Diff files (%s)",
RemoteBranchesDynamicTitle: "원격브랜치 (%s)",
ViewItemFiles: "View selected item's files",
CommitFilesTitle: "커밋 파일",
CheckoutCommitFileTooltip: "Checkout file",
DiscardOldFileChangeTooltip: "Discard this commit's changes to this file",
DiscardFileChangesTitle: "파일 변경 사항 버리기",
DiscardFileChangesPrompt: "Are you sure you want to discard this commit's changes to this file? If this file was created in this commit, it will be deleted",
DisabledForGPG: "Feature not available for users using GPG",
CreateRepo: "Git 저장소가 아닙니다. 저장소를 생성하시겠습니까? (y/n): ",
AutoStashTitle: "Autostash?",
AutoStashPrompt: "You must stash and pop your changes to bring them across. Do this automatically? (enter/esc)",
StashPrefix: "Auto-stashing changes for ",
Discard: "View 'discard changes' options",
Cancel: "취소",
DiscardAllChanges: "모든 변경사항 버리기",
DiscardUnstagedChanges: "Discard unstaged changes",
DiscardAllChangesToAllFiles: "Nuke working tree",
DiscardAnyUnstagedChanges: "Discard unstaged changes",
DiscardUntrackedFiles: "Discard untracked files",
HardReset: "Hard reset",
ViewResetOptions: `View reset options`,
CreateFixupCommitTooltip: `Create fixup commit for this commit`,
SquashAboveCommitsTooltip: `Squash all 'fixup!' commits above selected commit (autosquash)`,
CreateFixupCommit: `Create fixup commit`,
ExecuteCustomCommand: "Execute custom command",
CustomCommand: "Custom command:",
CommitChangesWithoutHook: "Commit changes without pre-commit hook",
SkipHookPrefixNotConfigured: "You have not configured a commit message prefix for skipping hooks. Set `git.skipHookPrefix = 'WIP'` in your config",
ResetTo: `Reset to`,
PressEnterToReturn: "엔터를 눌러 lazygit으로 돌아갑니다.",
ViewStashOptions: "Stash 옵션 보기",
StashAllChanges: "변경사항을 Stash",
StashStagedChanges: "Stash staged changes",
StashOptions: "Stash 옵션",
NotARepository: "Error: must be run inside a git repository",
Jump: "패널로 이동",
ScrollLeftRight: "좌우로 스크롤",
ScrollLeft: "우 스크롤",
ScrollRight: "좌 스크롤",
DiscardPatch: "Patch 버리기",
DiscardPatchConfirm: "You can only build a patch from one commit/stash-entry at a time. Discard current patch?",
CantPatchWhileRebasingError: "You cannot build a patch or run patch commands while in a merging or rebasing state",
ToggleAddToPatch: "Toggle file included in patch",
ToggleAllInPatch: "Toggle all files included in patch",
UpdatingPatch: "Updating patch",
ViewPatchOptions: "커스텀 Patch 옵션 보기",
PatchOptionsTitle: "Patch 옵션",
NoPatchError: "No patch created yet. To start building a patch, use 'space' on a commit file or enter to add specific lines",
EnterCommitFile: "Enter file to add selected lines to the patch (or toggle directory collapsed)",
NotEnoughSpace: "패널을 렌더링 할 공간이 부족합니다.",
DiffTitle: "Diff",
FilesTitle: "파일",
BranchesTitle: "브랜치",
CommitsTitle: "커밋",
StashTitle: "Stash",
UnstagedChanges: `Staged되지 않은 변경 내용`,
StagedChanges: `Staged된 변경 내용`,
MainTitle: "메인",
MergeConfirmTitle: "병합",
StagingTitle: "메인 패널 (Staging)",
MergingTitle: "메인 패널 (Merging)",
NormalTitle: "메인 패널 (Normal)",
LogTitle: "로그",
CommitSummary: "커밋 메시지",
CredentialsUsername: "사용자 이름",
CredentialsPassword: "패스워드",
CredentialsPassphrase: "SSH키의 passphrase 입력",
PassUnameWrong: "패스워드, passphrase 또는 사용자 이름이 잘못되었습니다.",
Commit: "커밋 변경내용",
AmendLastCommit: "마지맛 커밋 수정",
AmendLastCommitTitle: "마지막 커밋 수정",
SureToAmend: "마지막 커밋을 수정하시겠습니까? 그런 다음 커밋 패널에서 커밋 메시지를 변경할 수 있습니다.",
NoCommitToAmend: "Amend 가능한 커밋이 없습니다.",
CommitChangesWithEditor: "Git 편집기를 사용하여 변경 내용을 커밋합니다.",
StatusTitle: "상태",
Menu: "메뉴",
Execute: "실행",
Stage: "Staged 전환",
ToggleStagedAll: "모든 변경을 Staged/unstaged으로 전환",
ToggleTreeView: "파일 트리뷰로 전환",
OpenMergeTool: "Git mergetool를 열기",
Refresh: "새로고침",
Push: "푸시",
Pull: "업데이트",
Scroll: "스크롤",
MergeConflictsTitle: "병합 충돌 내용",
Checkout: "체크아웃",
FileFilter: "파일을 필터하기 (Staged/unstaged)",
FilterStagedFiles: "Staged된 파일만 표시",
FilterUnstagedFiles: "Stage되지 않은 파일만 표시",
ResetFilter: "필터 리셋",
NoChangedFiles: "변경된 파일이 없습니다.",
SoftReset: "소프트 리셋",
AlreadyCheckedOutBranch: "브랜치가 이미 체크아웃 되었습니다",
SureForceCheckout: "강제로 체크아웃하시겠습니까? 모든 로컬 변경 사항을 잃게 됩니다.",
ForceCheckoutBranch: "브랜치 강제 체크아웃",
BranchName: "브랜치 이름",
NewBranchNameBranchOff: "새 브랜치 이름 (branch is off of '{{.branchName}}')",
CantDeleteCheckOutBranch: "체크아웃하는 브랜치는 삭제할 수 없습니다!",
ForceDeleteBranchMessage: "'{{.selectedBranchName}}'는 완전히 병합되지 않았습니다. 정말 삭제하시겠습니까?",
RebaseBranch: "체크아웃된 브랜치를 이 브랜치에 리베이스",
CantRebaseOntoSelf: "브랜치를 자기 자신에게 리베이스할 수는 없습니다.",
CantMergeBranchIntoItself: "브랜치를 자기 자신에게 병합할 수는 없습니다.",
ForceCheckout: "강제 체크아웃",
CheckoutByName: "이름으로 체크아웃",
NewBranch: "새 브랜치 생성",
NoBranchesThisRepo: "저장소에 브랜치가 존재하지 않습니다.",
CommitWithoutMessageErr: "커밋 메시지를 입력하세요.",
CloseCancel: "닫기/취소",
Confirm: "확인",
Close: "닫기",
Quit: "종료",
NoCommitsThisBranch: "이 브랜치에 커밋이 없습니다.",
CannotSquashOrFixupFirstCommit: "There's no commit below to squash into",
Fixup: "Fixup",
SureFixupThisCommit: "Are you sure you want to 'fixup' this commit? It will be merged into the commit below",
SureSquashThisCommit: "Are you sure you want to squash this commit into the commit below?",
Squash: "Squash",
PickCommitTooltip: "Pick commit (when mid-rebase)",
RevertCommit: "커밋 되돌리기",
Reword: "커밋메시지 변경",
DropCommit: "커밋 삭제",
MoveDownCommit: "커밋을 1개 아래로 이동",
MoveUpCommit: "커밋을 1개 위로 이동",
EditCommitTooltip: "커밋을 편집",
AmendCommitTooltip: "Amend commit with staged changes",
ResetAuthor: "Reset commit author",
SureResetCommitAuthor: "The author field of this commit will be updated to match the configured user. This also renews the author timestamp. Continue?",
RewordCommitEditor: "에디터에서 커밋메시지 수정",
Error: "오류",
PickHunk: "Pick hunk",
PickAllHunks: "Pick all hunks",
Undo: "되돌리기",
UndoReflog: "되돌리기 (reflog) (실험적)",
RedoReflog: "다시 실행 (reflog) (실험적)",
Pop: "Pop",
Drop: "Drop",
Apply: "적용",
NoStashEntries: "Stash가 존재하지 않습니다.",
StashDrop: "Stash를 삭제",
SureDropStashEntry: "정말로 Stash를 삭제하시겠습니까?",
StashPop: "Stash를 pop",
SurePopStashEntry: "정말로 Stash를 pop하시겠습니까?",
StashApply: "Stash 적용",
SureApplyStashEntry: "정말로 Stash를 적용하시겠습니까?",
NoTrackedStagedFilesStash: "You have no tracked/staged files to stash",
StashChanges: "변경을 Stash",
RenameStash: "Rename stash",
RenameStashPrompt: "Rename stash: {{.stashName}}",
OpenConfig: "설정 파일 열기",
EditConfig: "설정 파일 수정",
ForcePush: "강제 푸시",
ForcePushPrompt: "브랜치가 원격 브랜치에서 분기하고 있습니다. 'esc'를 눌러 취소하거나, 'enter'를 눌러 강제로 푸시하세요.",
ForcePushDisabled: "브랜치가 원격 브랜치에서 분기하고 있습니다. force push가 비활성화 되었습니다.",
UpdatesRejectedAndForcePushDisabled: "업데이트가 거부되었으며 강제 푸시를 비활성화했습니다.",
CheckForUpdate: "업데이트 확인",
CheckingForUpdates: "업데이트 확인 중...",
UpdateAvailableTitle: "새로운 업데이트 사용가능!",
UpdateAvailable: "버전 {{.newVersion}} 을(를) 설치하시겠습니까?",
UpdateInProgressWaitingStatus: "업데이트 중",
UpdateCompletedTitle: "업데이트 완료!",
UpdateCompleted: "업데이트 설치에 성공했습니다. lazygit를 재시작해주세요.",
FailedToRetrieveLatestVersionErr: "버전 정보를 받아오는데 실패했습니다.",
OnLatestVersionErr: "이미 최신 버전을 사용하고 있습니다.",
MajorVersionErr: "새 버전 ({{.newVersion}}) 에 현재 버전({{.currentVersion}}) 과 비교할 때 호환되지 않는 변경 사항이 있습니다.",
CouldNotFindBinaryErr: "{{.url}} 에서 바이너리를 찾을 수 없습니다.",
UpdateFailedErr: "업데이트 실패: {{.errMessage}}",
ConfirmQuitDuringUpdateTitle: "현재 업데이트 중입니다.",
ConfirmQuitDuringUpdate: "현재 업데이트를 진행 중입니다.종료하시겠습니까?",
MergeToolTitle: "병합 도구",
MergeToolPrompt: "정말로 `git mergetool`을 여시겠습니까?",
IntroPopupMessage: koreanIntroPopupMessage,
GitconfigParseErr: `따옴표로 묶이지 않은 '\' 문자가 있어서 Gogit이 gitconfig 파일을 분석하지 못했습니다. 이를 제거하면 문제가 해결됩니다.`,
EditFile: `파일 편집`,
OpenFile: `파일 닫기`,
IgnoreFile: `.gitignore에 추가`,
RefreshFiles: `파일 새로고침`,
Merge: `현재 브랜치에 병합`,
ConfirmQuit: `정말로 종료하시겠습니까?`,
SwitchRepo: `최근에 사용한 저장소로 전환`,
AllBranchesLogGraph: `모든 브랜치 로그 표시`,
UnsupportedGitService: `지원되지 않는 Git 서비스입니다.`,
CreatePullRequest: `풀 리퀘스트 생성`,
CopyPullRequestURL: `풀 리퀘스트 URL을 클립보드에 복사`,
NoBranchOnRemote: `브랜치가 원격에 없습니다. 원격에 먼저 푸시해야합니다.`,
Fetch: `Fetch`,
NoAutomaticGitFetchTitle: `자동 git 업데이트) 없음`,
NoAutomaticGitFetchBody: `Lazygit은 private 저장소에서 "git fetch"를 사용할 수 없습니다. 파일 패널에서 'f'를 사용하여 "git fetch"를 수동으로 실행하세요.`,
FileEnter: `Stage individual hunks/lines for file, or collapse/expand for directory`,
FileStagingRequirements: `추적된 파일에 대해 개별 라인만 stage할 수 있습니다.`,
StageSelectionTooltip: `선택한 행을 staged / unstaged`,
DiscardSelection: `변경을 삭제 (git reset)`,
ToggleRangeSelect: `드래그 선택 전환`,
ToggleSelectHunk: `Toggle select hunk`,
ToggleSelectionForPatch: `Line(s)을 패치에 추가/삭제`,
ToggleStagingView: `패널 전환`,
ReturnToFilesPanel: `파일 목록으로 돌아가기`,
FastForward: `Fast-forward this branch from its upstream`,
FastForwarding: "Fast-forwarding",
FoundConflictsTitle: "Auto-merge failed",
ViewMergeRebaseOptions: "View merge/rebase options",
NotMergingOrRebasing: "You are currently neither rebasing nor merging",
RecentRepos: "최근에 사용한 저장소",
MergeOptionsTitle: "Merge options",
RebaseOptionsTitle: "Rebase options",
CommitSummaryTitle: "커밋메시지",
LocalBranchesTitle: "브랜치",
SearchTitle: "검색",
TagsTitle: "태그",
MenuTitle: "메뉴",
RemotesTitle: "원격",
RemoteBranchesTitle: "원격 브랜치",
PatchBuildingTitle: "메인 패널 (Patch Building)",
InformationTitle: "정보",
SecondaryTitle: "Secondary",
ReflogCommitsTitle: "Reflog",
GlobalTitle: "글로벌 키 바인딩",
ConflictsResolved: "모든 병합 충돌이 해결되었습니다. 계속 할까요?",
ConfirmMerge: "정말로 '{{.selectedBranch}}' 을(를) '{{.checkedOutBranch}}'에 병합하시겠습니까?",
FwdNoUpstream: "Cannot fast-forward a branch with no upstream",
FwdNoLocalUpstream: "Cannot fast-forward a branch whose remote is not registered locally",
FwdCommitsToPush: "Cannot fast-forward a branch with commits to push",
ErrorOccurred: "오류가 발생했습니다! issue를 작성해 주세요: ",
NoRoom: "Not enough room",
YouAreHere: "현재 위치",
RewordNotSupported: "Rewording commits while interactively rebasing is not currently supported",
CherryPickCopy: "커밋을 복사 (cherry-pick)",
PasteCommits: "커밋을 붙여넣기 (cherry-pick)",
SureCherryPick: "정말로 복사한 커밋을 이 브랜치에 체리픽하시겠습니까?",
CherryPick: "체리픽",
Donate: "후원",
AskQuestion: "질문하기",
PrevLine: "이전 줄 선택",
NextLine: "다음 줄 선택",
PrevHunk: "이전 hunk를 선택",
NextHunk: "다음 hunk를 선택",
PrevConflict: "이전 충돌을 선택",
NextConflict: "다음 충돌을 선택",
SelectPrevHunk: "이전 hunk를 선택",
SelectNextHunk: "다음 hunk를 선택",
ScrollDown: "아래로 스크롤",
ScrollUp: "위로 스크롤",
ScrollUpMainWindow: "메인 패널을 위로 스크롤",
ScrollDownMainWindow: "메인 패널을 아래로로 스크롤",
AmendCommitTitle: "Amend commit",
AmendCommitPrompt: "Are you sure you want to amend this commit with your staged files?",
DropCommitTitle: "커밋 삭제",
DropCommitPrompt: "정말로 선택한 커밋을 삭제하시겠습니까?",
PullingStatus: "업데이트 중",
PushingStatus: "푸시 중",
FetchingStatus: "패치 중",
SquashingStatus: "Squashing",
FixingStatus: "Fixing up",
DeletingStatus: "Deleting",
MovingStatus: "Moving",
RebasingStatus: "Rebasing",
AmendingStatus: "Amending",
CherryPickingStatus: "Cherry-picking",
UndoingStatus: "Undoing",
RedoingStatus: "Redoing",
CheckingOutStatus: "Checking out",
CommittingStatus: "Committing",
CommitFiles: "Commit files",
SubCommitsDynamicTitle: "커밋 (%s)",
CommitFilesDynamicTitle: "Diff files (%s)",
RemoteBranchesDynamicTitle: "원격브랜치 (%s)",
ViewItemFiles: "View selected item's files",
CommitFilesTitle: "커밋 파일",
CheckoutCommitFileTooltip: "Checkout file",
DiscardOldFileChangeTooltip: "Discard this commit's changes to this file",
DiscardFileChangesTitle: "파일 변경 사항 버리기",
DiscardFileChangesPrompt: "Are you sure you want to discard this commit's changes to this file? If this file was created in this commit, it will be deleted",
DisabledForGPG: "Feature not available for users using GPG",
CreateRepo: "Git 저장소가 아닙니다. 저장소를 생성하시겠습니까? (y/n): ",
AutoStashTitle: "Autostash?",
AutoStashPrompt: "You must stash and pop your changes to bring them across. Do this automatically? (enter/esc)",
StashPrefix: "Auto-stashing changes for ",
Discard: "View 'discard changes' options",
Cancel: "취소",
DiscardAllChanges: "모든 변경사항 버리기",
DiscardUnstagedChanges: "Discard unstaged changes",
DiscardAllChangesToAllFiles: "Nuke working tree",
DiscardAnyUnstagedChanges: "Discard unstaged changes",
DiscardUntrackedFiles: "Discard untracked files",
HardReset: "Hard reset",
ViewResetOptions: `View reset options`,
CreateFixupCommitTooltip: `Create fixup commit for this commit`,
SquashAboveCommitsTooltip: `Squash all 'fixup!' commits above selected commit (autosquash)`,
CreateFixupCommit: `Create fixup commit`,
ExecuteCustomCommand: "Execute custom command",
CustomCommand: "Custom command:",
CommitChangesWithoutHook: "Commit changes without pre-commit hook",
SkipHookPrefixNotConfigured: "You have not configured a commit message prefix for skipping hooks. Set `git.skipHookPrefix = 'WIP'` in your config",
ResetTo: `Reset to`,
PressEnterToReturn: "엔터를 눌러 lazygit으로 돌아갑니다.",
ViewStashOptions: "Stash 옵션 보기",
StashAllChanges: "변경사항을 Stash",
StashStagedChanges: "Stash staged changes",
StashOptions: "Stash 옵션",
NotARepository: "Error: must be run inside a git repository",
Jump: "패널로 이동",
ScrollLeftRight: "좌우로 스크롤",
ScrollLeft: "우 스크롤",
ScrollRight: "좌 스크롤",
DiscardPatch: "Patch 버리기",
DiscardPatchConfirm: "You can only build a patch from one commit/stash-entry at a time. Discard current patch?",
CantPatchWhileRebasingError: "You cannot build a patch or run patch commands while in a merging or rebasing state",
ToggleAddToPatch: "Toggle file included in patch",
ToggleAllInPatch: "Toggle all files included in patch",
UpdatingPatch: "Updating patch",
ViewPatchOptions: "커스텀 Patch 옵션 보기",
PatchOptionsTitle: "Patch 옵션",
NoPatchError: "No patch created yet. To start building a patch, use 'space' on a commit file or enter to add specific lines",
EnterCommitFile: "Enter file to add selected lines to the patch (or toggle directory collapsed)",
// ExitCustomPatchBuilder: ``,
EnterUpstream: `'<remote> <branchname>'와 같은 형식으로 입력하세요.`,
InvalidUpstream: "Upstream의 형식이 잘못되었습니다.'<remote> <branchname>' 와 같은 형식으로 입력하세요.",

View File

@ -183,6 +183,7 @@ func polishTranslationSet() TranslationSet {
ForcePush: "Wymuś wysłanie",
ForcePushPrompt: "Twoja gałąź rozbiegła się z gałęzią zdalną. Naciśnij {{.cancelKey}}, aby anulować, lub {{.confirmKey}}, aby wymusić wysłanie.",
ForcePushDisabled: "Twoja gałąź rozbiegła się z gałęzią zdalną i masz wyłączone wymuszanie wysyłania",
UpdatesRejectedAndForcePushDisabled: "Aktualizacje zostały odrzucone i wyłączyłeś wymuszenie wysłania",
CheckForUpdate: "Sprawdź aktualizacje",
CheckingForUpdates: "Sprawdzanie aktualizacji...",
UpdateAvailableTitle: "Dostępna aktualizacja!",

View File

@ -35,389 +35,390 @@ const russianDeprecatedEditConfigWarning = `
// exporting this so we can use it in tests
func RussianTranslationSet() TranslationSet {
return TranslationSet{
NotEnoughSpace: "Недостаточно места для отрисовки панелей",
DiffTitle: "Сравнения",
FilesTitle: "Файлы",
BranchesTitle: "Ветки",
CommitsTitle: "Коммиты",
StashTitle: "Хранилище",
SnakeTitle: "Змейка",
EasterEgg: "Пасхалка",
UnstagedChanges: `Непроиндексированные Изменения`,
StagedChanges: `Проиндексированные Изменения`,
MainTitle: "Главная",
MergeConfirmTitle: "Слияние",
StagingTitle: "Главная панель (Индексирование)",
MergingTitle: "Главная панель (Слияние)",
NormalTitle: "Главная панель (Обычный)",
LogTitle: "Журнал",
CommitSummary: "Сводка коммита",
CredentialsUsername: "Имя пользователя",
CredentialsPassword: "Пароль",
CredentialsPassphrase: "Введите пароль для SSH ключа",
CredentialsPIN: "Введите PIN-код для SSH ключа",
PassUnameWrong: "Неверный пароль, кодовая фраза и/или имя пользователя",
Commit: "Сохранить изменения",
AmendLastCommit: "Правка последнего коммита",
AmendLastCommitTitle: "Правка Последнего Коммита",
SureToAmend: "Вы уверены, что хотите править последний коммит? Впоследствии можно изменить сообщение коммита на панели коммитов.",
NoCommitToAmend: "Не найден коммит для внесения поправок.",
CommitChangesWithEditor: "Сохранить изменения с помощью редактора git",
StatusTitle: "Статус",
Menu: "Меню",
Execute: "Выполнить",
Stage: "Переключить индекс",
ToggleStagedAll: "Все проиндексированные/непроиндексированные",
ToggleTreeView: "Переключить вид дерева файлов",
OpenMergeTool: "Открыть внешний инструмент слияния (git mergetool)",
Refresh: "Обновить",
Push: "Отправить изменения",
Pull: "Получить и слить изменения",
Scroll: "Прокрутить",
MergeConflictsTitle: "Конфликты Слияния",
Checkout: "Переключить",
FileFilter: "Фильтровать файлы (проиндексированные/непроиндексированные)",
FilterStagedFiles: "Показывать только проиндексированные файлы",
FilterUnstagedFiles: "Показывать только непроиндексированные файлы",
ResetFilter: "Сбросить фильтр",
NoChangedFiles: "Нет изменённых файлов",
SoftReset: "Мягкий сброс",
AlreadyCheckedOutBranch: "Вы уже переключились в эту ветку",
SureForceCheckout: "Вы уверены, что хотите принудительная переключить? Вы потеряете все локальные изменения",
ForceCheckoutBranch: "Принудительное Переключение Ветки",
BranchName: "Название ветки",
NewBranchNameBranchOff: "Название новой ветки (Ветка с '{{.branchName}}')",
CantDeleteCheckOutBranch: "Невозможно удалить переключённую ветку!",
ForceDeleteBranchMessage: "'{{.selectedBranchName}}' не полностью слилась. Вы уверены, что хотите удалить его?",
RebaseBranch: "Перебазировать переключённую ветку на эту ветку",
CantRebaseOntoSelf: "Невозможно перебазировать ветку на себя",
CantMergeBranchIntoItself: "Невозможно объединить ветку в себя",
ForceCheckout: "Принудительное переключение",
CheckoutByName: "Переключить по названию",
NewBranch: "Новая ветка",
NoBranchesThisRepo: "Нет веток для этого репозитория",
CommitWithoutMessageErr: "Вы не можете сохранить изменения без сообщения коммита",
Close: "Закрыть",
CloseCancel: "Закрыть/отменить",
Confirm: "Подтвердить",
Quit: "Выйти",
NoCommitsThisBranch: "Нет коммитов для этой ветки",
UpdateRefHere: "Обновить ветку '{{.ref}}' здесь",
CannotSquashOrFixupFirstCommit: "Ниже нет коммита, который можно было бы объединить",
Fixup: "Объединить несколько коммитов в один отбросив сообщение коммита (Fixup) ",
SureFixupThisCommit: "Вы уверены, что хотите объединить несколько коммитов, отбросив сообщение коммита? Он будет объединён с коммитом ниже",
SureSquashThisCommit: "Вы уверены, что хотите объединить несколько коммитов в нижний коммит?",
Squash: "Объединить коммиты (Squash)",
PickCommitTooltip: "Выбрать коммит (в середине перебазирования)",
RevertCommit: "Отменить коммит",
Reword: "Перефразировать коммит",
DropCommit: "Удалить коммит",
MoveDownCommit: "Переместить коммит вниз на один",
MoveUpCommit: "Переместить коммит вверх на один",
EditCommitTooltip: "Изменить коммит",
AmendCommitTooltip: "Править последний коммит с проиндексированными изменениями",
ResetAuthor: "Сброс автора коммита",
SetAuthor: "Установить автора",
AmendCommitAttribute: "Установить/убрать автора коммита",
SetAuthorPromptTitle: "Установить автора (должно выглядеть как «Имя <Email>»)",
SureResetCommitAuthor: "Поле автора этого автора будет обновлено в соответствии с настроенным пользователем. Это также обновляет временную метку автора. Продолжить?",
RewordCommitEditor: "Переписать коммит с помощью редактора",
Error: "Ошибка",
PickHunk: "Выбрать эту часть",
PickAllHunks: "Выбрать все части",
Undo: "Отменить",
UndoReflog: "Отменить (через reflog) (экспериментальный)",
RedoReflog: "Повторить (через reflog) (экспериментальный)",
UndoTooltip: "Журнал ссылок (reflog) будет использоваться для определения того, какую команду git запустить, чтобы отменить последнюю команду git. Сюда не входят изменения в рабочем дереве; учитываются только коммиты.",
RedoTooltip: "Журнал ссылок (reflog) будет использоваться для определения того, какую команду git нужно запустить, чтобы повторить последнюю команду git. Сюда не входят изменения в рабочем дереве; учитываются только коммиты.",
DiscardAllTooltip: "Отменить проиндексированные и непроиндексированные изменения в '{{.path}}'.",
DiscardUnstagedTooltip: "Отменить непроиндексированные изменения в '{{.path}}'.",
Pop: "Применить припрятанные изменения и тут же удалить их из хранилища",
Drop: "Удалить припрятанные изменения из хранилища",
Apply: "Применить припрятанные изменения",
NoStashEntries: "Нет записей в хранилище",
StashDrop: "Сбросить хранилище",
SureDropStashEntry: "Вы уверены, что хотите удалить эту запись хранилища?",
StashPop: "Применить припрятанные изменения и тут же удалить их из хранилища",
SurePopStashEntry: "Вы уверены, что хотите применить эти припрятанные изменения и тут же удалить их из хранилища?",
StashApply: "Применить припрятанные изменения",
SureApplyStashEntry: "Вы уверены, что хотите применить эти припрятанные изменения?",
NoTrackedStagedFilesStash: "У вас нет отслеженных/проиндексированных файлов для хранения",
NoFilesToStash: "У вас нет файлов для хранения",
StashChanges: "Припрятать изменения",
RenameStash: "Переименовать хранилище",
RenameStashPrompt: "Переименовать хранилище: {{.stashName}}",
OpenConfig: "Открыть файл конфигурации",
EditConfig: "Редактировать файл конфигурации",
ForcePush: "Принудительная отправка изменении",
ForcePushPrompt: "Ветка отклонилась от удалённой ветки. Нажмите «esc», чтобы отменить, или «enter», чтобы начать принудительную отправку изменении.",
ForcePushDisabled: "Ветка отклонилась от удалённой ветки. Принудительная отправка изменении была отключена",
CheckForUpdate: "Проверить обновления",
CheckingForUpdates: "Проверка обновлений...",
UpdateAvailableTitle: "Доступно обновление!",
UpdateAvailable: "Скачать и установить версию {{.newVersion}}?",
UpdateInProgressWaitingStatus: "Обновление",
UpdateCompletedTitle: "Обновление завершено!",
UpdateCompleted: "Обновление успешно установлено. Перезапустите lazygit, чтобы обновление вступило в силу.",
FailedToRetrieveLatestVersionErr: "Не удалось получить информацию о версии",
OnLatestVersionErr: "Установлена последняя версия",
MajorVersionErr: "Новая версия ({{.newVersion}}) содержит несовместимые с предыдущими версии изменения по сравнению с текущей версией ({{.currentVersion}})",
CouldNotFindBinaryErr: "Не удалось найти бинарный файл на {{.url}}",
UpdateFailedErr: "Не удалось обновить: {{.errMessage}}",
ConfirmQuitDuringUpdateTitle: "Идёт Обновление",
ConfirmQuitDuringUpdate: "Выполняется обновление. Вы уверены, что хотите выйти?",
MergeToolTitle: "Инструмент слияния",
MergeToolPrompt: "Вы уверены, что хотите открыть `git mergetool`?",
IntroPopupMessage: russianIntroPopupMessage,
DeprecatedEditConfigWarning: russianDeprecatedEditConfigWarning,
GitconfigParseErr: `Gogit не удалось проанализировать ваш файл gitconfig из-за наличия символов «\» без кавычек. Их удаление должно решить проблему.`,
EditFile: `Редактировать файл`,
OpenFile: `Открыть файл`,
IgnoreFile: `Добавить в .gitignore`,
ExcludeFile: `Добавить в .git/info/exclude`,
RefreshFiles: `Обновить файлы`,
Merge: `Слияние с текущей переключённой веткой`,
ConfirmQuit: `Вы уверены, что хотите выйти?`,
SwitchRepo: `Переключиться на последний репозиторий`,
AllBranchesLogGraph: `Показать все логи ветки`,
UnsupportedGitService: `Неподдерживаемая служба git`,
CreatePullRequest: `Создать запрос на принятие изменений`,
CopyPullRequestURL: `Скопировать URL запроса на принятие изменений в буфер обмена`,
NoBranchOnRemote: `Этой ветки не существует в удалённом репозитории. Сначала вам нужно его отправить в удалённый репозитории.`,
Fetch: `Получить изменения`,
NoAutomaticGitFetchTitle: `Нет автоматического получения изменении`,
NoAutomaticGitFetchBody: `Lazygit не может использовать «git fetch» в приватном репозитории; используйте «f» на панели файлов, чтобы запустить «git fetch» вручную`,
FileEnter: `Проиндексировать отдельные части/строки для файла или свернуть/развернуть для каталога`,
FileStagingRequirements: `Можно проиндексировать только отдельные строки для отслеживаемых файлов`,
StageSelectionTooltip: `Переключить строку в проиндексированные / непроиндексированные`,
DiscardSelection: `Отменить изменение (git reset)`,
ToggleRangeSelect: `Переключить выборку перетаскивания`,
ToggleSelectHunk: `Переключить выборку частей`,
ToggleSelectionForPatch: `Добавить/удалить строку(и) для патча`,
EditHunk: `Изменить эту часть`,
ToggleStagingView: `Переключиться на другую панель (проиндексированные/непроиндексированные изменения)`,
ReturnToFilesPanel: `Вернуться к панели файлов`,
FastForward: `Перемотать эту ветку вперёд из её upstream-ветки`,
FastForwarding: "Получить изменения и перемотать вперёд",
FoundConflictsTitle: "Конфликты!",
ViewConflictsMenuItem: "Просмотр конфликтов",
AbortMenuItem: "Прервать %s",
ViewMergeRebaseOptions: "Просмотреть параметры слияния/перебазирования",
NotMergingOrRebasing: "В данный момент вы не выполняете ни перебазирования, ни слияние",
AlreadyRebasing: "Невозможно выполнить это действие во время перебазирования",
RecentRepos: "Последние репозитории",
MergeOptionsTitle: "Параметры слияния",
RebaseOptionsTitle: "Параметры перебазирования",
CommitSummaryTitle: "Сводка коммита",
CommitDescriptionTitle: "Описание коммита",
CommitDescriptionSubTitle: "Нажмите вкладку, чтобы переключить фокус",
LocalBranchesTitle: "Локальные Ветки",
SearchTitle: "Поиск",
TagsTitle: "Теги",
MenuTitle: "Меню",
RemotesTitle: "Удалённые репозитории",
RemoteBranchesTitle: "Удалённые ветки",
PatchBuildingTitle: "Главная панель (сборка патчей)",
InformationTitle: "Информация",
SecondaryTitle: "Вторичный",
ReflogCommitsTitle: "Журнал ссылок (Reflog)",
GlobalTitle: "Глобальные сочетания клавиш",
ConflictsResolved: "Все конфликты слияния разрешены. Продолжить?",
Continue: "Продолжить",
Keybindings: "Связки клавиш",
RebasingTitle: "Перебазировать '{{.checkedOutBranch}}' на '{{.ref}}'",
SimpleRebase: "Простая перебазировка",
InteractiveRebase: "Интерактивная перебазировка",
InteractiveRebaseTooltip: "Начать интерактивную перебазировку с перерыва в начале, чтобы можно было обновить TODO коммиты, прежде чем продолжить.",
ConfirmMerge: "Вы уверены, что хотите to merge '{{.selectedBranch}}' into '{{.checkedOutBranch}}'?",
FwdNoUpstream: "Невозможно перемотать ветку без upstream-ветки",
FwdNoLocalUpstream: "Невозможно перемотать ветку. Удалённый репозитории не зарегистрирован локально",
FwdCommitsToPush: "Невозможно перемотать ветку с коммитами для отправки",
ErrorOccurred: "Произошла ошибка! Пожалуйста, заявите о проблеме на",
NoRoom: "Недостаточно места",
YouAreHere: "ВЫ ЗДЕСЬ",
YouDied: "ТЫ УМЕР!",
RewordNotSupported: "Переформулировка коммитов при интерактивном перебазировании в настоящее время не поддерживается",
ChangingThisActionIsNotAllowed: "Изменение этого типа записи todo перебазирования не допускается",
CherryPickCopy: "Скопировать отобранные коммит (cherry-pick)",
PasteCommits: "Вставить отобранные коммиты (cherry-pick)",
SureCherryPick: "Вы уверены, что хотите выборочно применить (cherry-picked) отобранные коммиты в эту ветку?",
CherryPick: "Выборочная отборка (Cherry-Pick)",
Donate: "Пожертвовать",
AskQuestion: "Задать вопрос",
PrevLine: "Выбрать предыдущую строку",
NextLine: "Выбрать следующую строку",
PrevHunk: "Выбрать предыдущую часть",
NextHunk: "Выбрать следующую часть",
PrevConflict: "Выбрать предыдущий конфликт",
NextConflict: "Выбрать следующий конфликт",
SelectPrevHunk: "Выбрать предыдущую часть",
SelectNextHunk: "Выбрать следующую часть",
ScrollDown: "Прокрутить вниз",
ScrollUp: "Прокрутить вверх",
ScrollUpMainWindow: "Прокрутить вверх главную панель",
ScrollDownMainWindow: "Прокрутить вниз главную панель",
AmendCommitTitle: "Править коммит (amend)",
AmendCommitPrompt: "Вы уверены, что хотите править этот коммит проиндексированными файлами?",
DropCommitTitle: "Удалить коммит",
DropCommitPrompt: "Вы уверены, что хотите удалить этот коммит?",
PullingStatus: "Получение и слияние изменении",
PushingStatus: "Отправка изменении",
FetchingStatus: "Получение изменении",
SquashingStatus: "Объединение коммитов",
FixingStatus: "Объединение коммитов, отбросив сообщение коммита",
DeletingStatus: "Удаление",
MovingStatus: "Перемещение",
RebasingStatus: "Перебазирование",
MergingStatus: "Слияние",
LowercaseRebasingStatus: "перебазировка", // lowercase because it shows up in parentheses
LowercaseMergingStatus: "слияние", // lowercase because it shows up in parentheses
AmendingStatus: "Правка коммита",
CherryPickingStatus: "Выборочная отборка (cherry-picking)",
UndoingStatus: "Отмена последней команды",
RedoingStatus: "Выполнение последней команды",
CheckingOutStatus: "Переключение",
CommittingStatus: "Сохранение изменении",
CommitFiles: "Сохранить изменения файлов",
SubCommitsDynamicTitle: "Коммиты (%s)",
CommitFilesDynamicTitle: "Различия файлов (%s)",
RemoteBranchesDynamicTitle: "Удалённые ветки (%s)",
ViewItemFiles: "Просмотреть файлы выбранного элемента",
CommitFilesTitle: "Сохранить Изменения Файлов",
CheckoutCommitFileTooltip: "Переключить файл",
CanOnlyDiscardFromLocalCommits: "Изменения можно отменить только из локальных коммитов.",
DiscardOldFileChangeTooltip: "Отменить изменения коммита в этом файле",
DiscardFileChangesTitle: "Отменить изменения файла",
DiscardFileChangesPrompt: "Вы уверены, что хотите удалить изменения в выбранных файлах из этого коммита?\n\nЭто действие запустит перебазирование и отменит изменения в этих файлах. Обратите внимание, что если последующие коммиты зависят от этих изменений, вам, возможно, придется разрешить конфликты.\nПримечание: это также сбросит все активные пользовательские патчи.",
DisabledForGPG: "Функция недоступна для пользователей, использующих GPG",
CreateRepo: "Не в git репозитории. Создать новый git репозиторий? (y/n):",
BareRepo: "Вы пытались открыть Lazygit в пустом репозитории, но Lazygit ещё не поддерживает пустые репозитории. Открыть последний репозиторий? (y/n)",
InitialBranch: "Название ветки? (оставьте пустым для git по умолчанию):",
NoRecentRepositories: "Необходимо открыть lazygit в git репозитории. Нет валидных последних репозиториев. Выход.",
IncorrectNotARepository: "Неверное значение 'notARepository'. Это должно быть одним из 'prompt', 'create', 'skip', или 'quit'.",
AutoStashTitle: "Автосохранить изменения?",
AutoStashPrompt: "Чтобы перенести изменения, их нужно сохранить и вынуть. Сделать это автоматически? (enter/esc)",
StashPrefix: "Автосохранение изменений для",
Discard: "Просмотреть параметры «отмены изменении»",
Cancel: "Отменить",
DiscardAllChanges: "Отменить все изменения",
DiscardUnstagedChanges: "Отменить непроиндексированные изменения",
DiscardAllChangesToAllFiles: "Разбомбить рабочее дерево?",
DiscardAnyUnstagedChanges: "Отменить непроиндексированные изменения",
DiscardUntrackedFiles: "Удалить неотслеживаемые файлы",
DiscardStagedChanges: "Отменить проиндексированные изменения",
HardReset: "Жёсткий сброс",
ViewResetOptions: `Просмотреть параметры сброса`,
CreateFixupCommitTooltip: `Создать fixup коммит для этого коммита`,
SquashAboveCommitsTooltip: `Объединить все 'fixup!' коммиты выше в выбранный коммит (автосохранение)`,
CreateFixupCommit: `Создать fixup коммит`,
ExecuteCustomCommand: "Выполнить пользовательскую команду",
CustomCommand: "Пользовательская Команда:",
CommitChangesWithoutHook: "Закоммитить изменения без предварительного хука коммита",
SkipHookPrefixNotConfigured: "Вы не настроили префикс сообщения коммита для пропуска хуков. Установите `git.skipHookPrefix = 'WIP'` в вашей конфигурации",
ResetTo: `Сбросить на`,
PressEnterToReturn: "Нажмите Enter, чтобы вернуться в lazygit",
ViewStashOptions: "Просмотреть параметры хранилища",
StashAllChanges: "Припрятать все изменения",
StashStagedChanges: "Припрятать проиндексированные изменения",
StashAllChangesKeepIndex: "Припрятать все изменения и сохранить индекс",
StashUnstagedChanges: "Припрятать непроиндексированные изменения",
StashIncludeUntrackedChanges: "Припрятать все изменения, включая неотслеживаемые файлы",
StashOptions: "Параметры хранилища",
NotARepository: "Ошибка: необходимо запустить внутри git репозитория",
Jump: "Перейти к панели",
ScrollLeftRight: "Прокрутить влево/вправо",
ScrollLeft: "Прокрутить влево",
ScrollRight: "Прокрутить вправо",
DiscardPatch: "Отменить патч",
DiscardPatchConfirm: "Вы можете собрать патч только из одной записи коммита/хранилища за раз. Отменить текущий патч?",
CantPatchWhileRebasingError: "Вы не можете создавать патчи или запускать команды патча, находясь в состоянии слияния или перемещения.",
ToggleAddToPatch: "Переключить файлы включённые в патч",
ToggleAllInPatch: "Переключить все файлы, включённые в патч",
UpdatingPatch: "Обновление патча",
ViewPatchOptions: "Просмотреть пользовательские параметры патча",
PatchOptionsTitle: "Параметры патча",
NoPatchError: "Патч ещё не создан. Чтобы начать сборку патча, используйте «пробел» в файле коммита или введите, чтобы добавить определённые строки.",
EnterCommitFile: "Введите файл, чтобы добавить выбранные строки в патч (или свернуть каталог переключения)",
ExitCustomPatchBuilder: `Выйти из сборщика пользовательских патчей`,
EnterUpstream: `Введите upstream как '<remote> <branchname>'`,
InvalidUpstream: "Недействительный upstream. Должен быть в формате '<remote> <branchname>'",
ReturnToRemotesList: `Вернуться к списку удалённых репозитории`,
NewRemote: `Добавить новую удалённую ветку`,
NewRemoteName: `Название новой удалённой ветки`,
NewRemoteUrl: `Ссылка новой удалённой ветки`,
EditRemoteName: `Введите новое название для удалённое ветки {{.remoteName}}:`,
EditRemoteUrl: `Введите новую ссылку для удалённое ветки {{.remoteName}}:`,
RemoveRemote: `Удалить удалённую ветку`,
RemoveRemotePrompt: "Вы уверены, что хотите удалить удалённую ветку?",
DeleteRemoteBranch: "Удалить Удалённую Ветку",
DeleteRemoteBranchMessage: "Вы уверены, что хотите удалить удалённую ветку",
SetAsUpstreamTooltip: "Установить как upstream-ветку переключённую ветку",
SetUpstream: "Установить upstream-ветку из выбранной ветки",
UnsetUpstream: "Убрать upstream-ветку из выбранной ветки",
SetUpstreamTitle: "Установить upstream-ветку",
SetUpstreamMessage: "Вы уверены, что хотите установить upstream-ветвь '{{.checkedOut}}' на '{{.selected}}'",
EditRemoteTooltip: "Редактировать удалённый репозитории",
TagCommit: "Пометить коммит тегом",
TagMenuTitle: "Создать тег",
TagNameTitle: "Название тега",
TagMessageTitle: "Сообщения тега",
AnnotatedTag: "Аннотированный тег",
LightweightTag: "Легковесный тег",
DeleteTagTitle: "Удалить тег",
PushTagTitle: "Удалённый репозитории для отправки тега '{{.tagName}}' в:",
PushTag: "Отправить тег",
NewTag: "Создать тег",
FetchRemoteTooltip: "Получение изменения из удалённого репозитория",
FetchingRemoteStatus: "Получение статуса удалённого репозитория",
CheckoutCommit: "Переключить коммит",
SureCheckoutThisCommit: "Вы уверены, что хотите переключить коммит?",
GitFlowOptions: "Показать параметры git-flow",
NotAGitFlowBranch: "Это не похоже на ветку git-flow",
NewGitFlowBranchPrompt: "Новое {{.branchType}} название:",
IgnoreTracked: "Игнорировать отслеживаемый файл",
IgnoreTrackedPrompt: "Вы уверены, что хотите игнорировать отслеживаемый файл?",
ExcludeTracked: "Исключить отслеживаемый файл",
ExcludeTrackedPrompt: "Вы уверены, что хотите исключить отслеживаемый файл?",
ViewResetToUpstreamOptions: "Просмотреть параметры сброса upstream-ветки",
NextScreenMode: "Следующий режим экрана (нормальный/полуэкранный/полноэкранный)",
PrevScreenMode: "Предыдущий режим экрана",
StartSearch: "Найти",
Panel: "Панель",
KeybindingsLegend: "Связки клавиш",
RenameBranch: "Переименовать ветку",
NewBranchNamePrompt: "Введите новое название ветки",
RenameBranchWarning: "Эта ветвь отслеживает удалённый репозитории. Это действие переименует только имя локальной ветки, а не имя удалённой ветки. Продолжать?",
OpenKeybindingsMenu: "Открыть меню",
ResetCherryPick: "Сбросить отобранную (скопированную | cherry-picked) выборку коммитов",
NextTab: "Следующая вкладка",
PrevTab: "Предыдущая вкладка",
CantUndoWhileRebasing: "Невозможно отменить во время перебазирования",
CantRedoWhileRebasing: "Невозможно повторить при перебазировании",
MustStashWarning: "Вытаскивание исправления в индекс требует сохранения и распаковки ваших изменений. Если что-то пойдёт не так, можно получить доступ к файлам из хранилища. Продолжить?",
MustStashTitle: "Необходимо припрятать",
ConfirmationTitle: "Панель Подтверждения",
PrevPage: "Предыдущая страница",
NextPage: "Следующая страница",
GotoTop: "Пролистать наверх",
GotoBottom: "Прокрутить вниз",
FilteringBy: "Фильтрация по",
ResetInParentheses: "(сбросить)",
OpenFilteringMenu: "Просмотреть параметры фильтрации по пути",
FilterBy: "Фильтровать по",
ExitFilterMode: "Прекратить фильтрацию по пути",
FilterPathOption: "Введите путь для фильтрации",
EnterFileName: "Введите путь:",
FilteringMenuTitle: "Фильтрация",
MustExitFilterModeTitle: "Команда недоступна",
MustExitFilterModePrompt: "Команда недоступна в режиме фильтрации. Выйти из режима фильтрации?",
Diff: "Разница",
EnterRefToDiff: "Введите ссылку для сравнения",
EnterRefName: "Введите ссылку:",
ExitDiffMode: "Выйти из режима сравнения",
DiffingMenuTitle: "Сравнение",
SwapDiff: "Обратное направление сравнении",
ViewDiffingOptions: "Открыть меню сравнении",
NotEnoughSpace: "Недостаточно места для отрисовки панелей",
DiffTitle: "Сравнения",
FilesTitle: "Файлы",
BranchesTitle: "Ветки",
CommitsTitle: "Коммиты",
StashTitle: "Хранилище",
SnakeTitle: "Змейка",
EasterEgg: "Пасхалка",
UnstagedChanges: `Непроиндексированные Изменения`,
StagedChanges: `Проиндексированные Изменения`,
MainTitle: "Главная",
MergeConfirmTitle: "Слияние",
StagingTitle: "Главная панель (Индексирование)",
MergingTitle: "Главная панель (Слияние)",
NormalTitle: "Главная панель (Обычный)",
LogTitle: "Журнал",
CommitSummary: "Сводка коммита",
CredentialsUsername: "Имя пользователя",
CredentialsPassword: "Пароль",
CredentialsPassphrase: "Введите пароль для SSH ключа",
CredentialsPIN: "Введите PIN-код для SSH ключа",
PassUnameWrong: "Неверный пароль, кодовая фраза и/или имя пользователя",
Commit: "Сохранить изменения",
AmendLastCommit: "Правка последнего коммита",
AmendLastCommitTitle: "Правка Последнего Коммита",
SureToAmend: "Вы уверены, что хотите править последний коммит? Впоследствии можно изменить сообщение коммита на панели коммитов.",
NoCommitToAmend: "Не найден коммит для внесения поправок.",
CommitChangesWithEditor: "Сохранить изменения с помощью редактора git",
StatusTitle: "Статус",
Menu: "Меню",
Execute: "Выполнить",
Stage: "Переключить индекс",
ToggleStagedAll: "Все проиндексированные/непроиндексированные",
ToggleTreeView: "Переключить вид дерева файлов",
OpenMergeTool: "Открыть внешний инструмент слияния (git mergetool)",
Refresh: "Обновить",
Push: "Отправить изменения",
Pull: "Получить и слить изменения",
Scroll: "Прокрутить",
MergeConflictsTitle: "Конфликты Слияния",
Checkout: "Переключить",
FileFilter: "Фильтровать файлы (проиндексированные/непроиндексированные)",
FilterStagedFiles: "Показывать только проиндексированные файлы",
FilterUnstagedFiles: "Показывать только непроиндексированные файлы",
ResetFilter: "Сбросить фильтр",
NoChangedFiles: "Нет изменённых файлов",
SoftReset: "Мягкий сброс",
AlreadyCheckedOutBranch: "Вы уже переключились в эту ветку",
SureForceCheckout: "Вы уверены, что хотите принудительная переключить? Вы потеряете все локальные изменения",
ForceCheckoutBranch: "Принудительное Переключение Ветки",
BranchName: "Название ветки",
NewBranchNameBranchOff: "Название новой ветки (Ветка с '{{.branchName}}')",
CantDeleteCheckOutBranch: "Невозможно удалить переключённую ветку!",
ForceDeleteBranchMessage: "'{{.selectedBranchName}}' не полностью слилась. Вы уверены, что хотите удалить его?",
RebaseBranch: "Перебазировать переключённую ветку на эту ветку",
CantRebaseOntoSelf: "Невозможно перебазировать ветку на себя",
CantMergeBranchIntoItself: "Невозможно объединить ветку в себя",
ForceCheckout: "Принудительное переключение",
CheckoutByName: "Переключить по названию",
NewBranch: "Новая ветка",
NoBranchesThisRepo: "Нет веток для этого репозитория",
CommitWithoutMessageErr: "Вы не можете сохранить изменения без сообщения коммита",
Close: "Закрыть",
CloseCancel: "Закрыть/отменить",
Confirm: "Подтвердить",
Quit: "Выйти",
NoCommitsThisBranch: "Нет коммитов для этой ветки",
UpdateRefHere: "Обновить ветку '{{.ref}}' здесь",
CannotSquashOrFixupFirstCommit: "Ниже нет коммита, который можно было бы объединить",
Fixup: "Объединить несколько коммитов в один отбросив сообщение коммита (Fixup) ",
SureFixupThisCommit: "Вы уверены, что хотите объединить несколько коммитов, отбросив сообщение коммита? Он будет объединён с коммитом ниже",
SureSquashThisCommit: "Вы уверены, что хотите объединить несколько коммитов в нижний коммит?",
Squash: "Объединить коммиты (Squash)",
PickCommitTooltip: "Выбрать коммит (в середине перебазирования)",
RevertCommit: "Отменить коммит",
Reword: "Перефразировать коммит",
DropCommit: "Удалить коммит",
MoveDownCommit: "Переместить коммит вниз на один",
MoveUpCommit: "Переместить коммит вверх на один",
EditCommitTooltip: "Изменить коммит",
AmendCommitTooltip: "Править последний коммит с проиндексированными изменениями",
ResetAuthor: "Сброс автора коммита",
SetAuthor: "Установить автора",
AmendCommitAttribute: "Установить/убрать автора коммита",
SetAuthorPromptTitle: "Установить автора (должно выглядеть как «Имя <Email>»)",
SureResetCommitAuthor: "Поле автора этого автора будет обновлено в соответствии с настроенным пользователем. Это также обновляет временную метку автора. Продолжить?",
RewordCommitEditor: "Переписать коммит с помощью редактора",
Error: "Ошибка",
PickHunk: "Выбрать эту часть",
PickAllHunks: "Выбрать все части",
Undo: "Отменить",
UndoReflog: "Отменить (через reflog) (экспериментальный)",
RedoReflog: "Повторить (через reflog) (экспериментальный)",
UndoTooltip: "Журнал ссылок (reflog) будет использоваться для определения того, какую команду git запустить, чтобы отменить последнюю команду git. Сюда не входят изменения в рабочем дереве; учитываются только коммиты.",
RedoTooltip: "Журнал ссылок (reflog) будет использоваться для определения того, какую команду git нужно запустить, чтобы повторить последнюю команду git. Сюда не входят изменения в рабочем дереве; учитываются только коммиты.",
DiscardAllTooltip: "Отменить проиндексированные и непроиндексированные изменения в '{{.path}}'.",
DiscardUnstagedTooltip: "Отменить непроиндексированные изменения в '{{.path}}'.",
Pop: "Применить припрятанные изменения и тут же удалить их из хранилища",
Drop: "Удалить припрятанные изменения из хранилища",
Apply: "Применить припрятанные изменения",
NoStashEntries: "Нет записей в хранилище",
StashDrop: "Сбросить хранилище",
SureDropStashEntry: "Вы уверены, что хотите удалить эту запись хранилища?",
StashPop: "Применить припрятанные изменения и тут же удалить их из хранилища",
SurePopStashEntry: "Вы уверены, что хотите применить эти припрятанные изменения и тут же удалить их из хранилища?",
StashApply: "Применить припрятанные изменения",
SureApplyStashEntry: "Вы уверены, что хотите применить эти припрятанные изменения?",
NoTrackedStagedFilesStash: "У вас нет отслеженных/проиндексированных файлов для хранения",
NoFilesToStash: "У вас нет файлов для хранения",
StashChanges: "Припрятать изменения",
RenameStash: "Переименовать хранилище",
RenameStashPrompt: "Переименовать хранилище: {{.stashName}}",
OpenConfig: "Открыть файл конфигурации",
EditConfig: "Редактировать файл конфигурации",
ForcePush: "Принудительная отправка изменении",
ForcePushPrompt: "Ветка отклонилась от удалённой ветки. Нажмите «esc», чтобы отменить, или «enter», чтобы начать принудительную отправку изменении.",
ForcePushDisabled: "Ветка отклонилась от удалённой ветки. Принудительная отправка изменении была отключена",
UpdatesRejectedAndForcePushDisabled: "Обновления были отклонены. Принудительная отправка изменении была отключена",
CheckForUpdate: "Проверить обновления",
CheckingForUpdates: "Проверка обновлений...",
UpdateAvailableTitle: "Доступно обновление!",
UpdateAvailable: "Скачать и установить версию {{.newVersion}}?",
UpdateInProgressWaitingStatus: "Обновление",
UpdateCompletedTitle: "Обновление завершено!",
UpdateCompleted: "Обновление успешно установлено. Перезапустите lazygit, чтобы обновление вступило в силу.",
FailedToRetrieveLatestVersionErr: "Не удалось получить информацию о версии",
OnLatestVersionErr: "Установлена последняя версия",
MajorVersionErr: "Новая версия ({{.newVersion}}) содержит несовместимые с предыдущими версии изменения по сравнению с текущей версией ({{.currentVersion}})",
CouldNotFindBinaryErr: "Не удалось найти бинарный файл на {{.url}}",
UpdateFailedErr: "Не удалось обновить: {{.errMessage}}",
ConfirmQuitDuringUpdateTitle: "Идёт Обновление",
ConfirmQuitDuringUpdate: "Выполняется обновление. Вы уверены, что хотите выйти?",
MergeToolTitle: "Инструмент слияния",
MergeToolPrompt: "Вы уверены, что хотите открыть `git mergetool`?",
IntroPopupMessage: russianIntroPopupMessage,
DeprecatedEditConfigWarning: russianDeprecatedEditConfigWarning,
GitconfigParseErr: `Gogit не удалось проанализировать ваш файл gitconfig из-за наличия символов «\» без кавычек. Их удаление должно решить проблему.`,
EditFile: `Редактировать файл`,
OpenFile: `Открыть файл`,
IgnoreFile: `Добавить в .gitignore`,
ExcludeFile: `Добавить в .git/info/exclude`,
RefreshFiles: `Обновить файлы`,
Merge: `Слияние с текущей переключённой веткой`,
ConfirmQuit: `Вы уверены, что хотите выйти?`,
SwitchRepo: `Переключиться на последний репозиторий`,
AllBranchesLogGraph: `Показать все логи ветки`,
UnsupportedGitService: `Неподдерживаемая служба git`,
CreatePullRequest: `Создать запрос на принятие изменений`,
CopyPullRequestURL: `Скопировать URL запроса на принятие изменений в буфер обмена`,
NoBranchOnRemote: `Этой ветки не существует в удалённом репозитории. Сначала вам нужно его отправить в удалённый репозитории.`,
Fetch: `Получить изменения`,
NoAutomaticGitFetchTitle: `Нет автоматического получения изменении`,
NoAutomaticGitFetchBody: `Lazygit не может использовать «git fetch» в приватном репозитории; используйте «f» на панели файлов, чтобы запустить «git fetch» вручную`,
FileEnter: `Проиндексировать отдельные части/строки для файла или свернуть/развернуть для каталога`,
FileStagingRequirements: `Можно проиндексировать только отдельные строки для отслеживаемых файлов`,
StageSelectionTooltip: `Переключить строку в проиндексированные / непроиндексированные`,
DiscardSelection: `Отменить изменение (git reset)`,
ToggleRangeSelect: `Переключить выборку перетаскивания`,
ToggleSelectHunk: `Переключить выборку частей`,
ToggleSelectionForPatch: `Добавить/удалить строку(и) для патча`,
EditHunk: `Изменить эту часть`,
ToggleStagingView: `Переключиться на другую панель (проиндексированные/непроиндексированные изменения)`,
ReturnToFilesPanel: `Вернуться к панели файлов`,
FastForward: `Перемотать эту ветку вперёд из её upstream-ветки`,
FastForwarding: "Получить изменения и перемотать вперёд",
FoundConflictsTitle: "Конфликты!",
ViewConflictsMenuItem: "Просмотр конфликтов",
AbortMenuItem: "Прервать %s",
ViewMergeRebaseOptions: "Просмотреть параметры слияния/перебазирования",
NotMergingOrRebasing: "В данный момент вы не выполняете ни перебазирования, ни слияние",
AlreadyRebasing: "Невозможно выполнить это действие во время перебазирования",
RecentRepos: "Последние репозитории",
MergeOptionsTitle: "Параметры слияния",
RebaseOptionsTitle: "Параметры перебазирования",
CommitSummaryTitle: "Сводка коммита",
CommitDescriptionTitle: "Описание коммита",
CommitDescriptionSubTitle: "Нажмите вкладку, чтобы переключить фокус",
LocalBranchesTitle: "Локальные Ветки",
SearchTitle: "Поиск",
TagsTitle: "Теги",
MenuTitle: "Меню",
RemotesTitle: "Удалённые репозитории",
RemoteBranchesTitle: "Удалённые ветки",
PatchBuildingTitle: "Главная панель (сборка патчей)",
InformationTitle: "Информация",
SecondaryTitle: "Вторичный",
ReflogCommitsTitle: "Журнал ссылок (Reflog)",
GlobalTitle: "Глобальные сочетания клавиш",
ConflictsResolved: "Все конфликты слияния разрешены. Продолжить?",
Continue: "Продолжить",
Keybindings: "Связки клавиш",
RebasingTitle: "Перебазировать '{{.checkedOutBranch}}' на '{{.ref}}'",
SimpleRebase: "Простая перебазировка",
InteractiveRebase: "Интерактивная перебазировка",
InteractiveRebaseTooltip: "Начать интерактивную перебазировку с перерыва в начале, чтобы можно было обновить TODO коммиты, прежде чем продолжить.",
ConfirmMerge: "Вы уверены, что хотите to merge '{{.selectedBranch}}' into '{{.checkedOutBranch}}'?",
FwdNoUpstream: "Невозможно перемотать ветку без upstream-ветки",
FwdNoLocalUpstream: "Невозможно перемотать ветку. Удалённый репозитории не зарегистрирован локально",
FwdCommitsToPush: "Невозможно перемотать ветку с коммитами для отправки",
ErrorOccurred: "Произошла ошибка! Пожалуйста, заявите о проблеме на",
NoRoom: "Недостаточно места",
YouAreHere: "ВЫ ЗДЕСЬ",
YouDied: "ТЫ УМЕР!",
RewordNotSupported: "Переформулировка коммитов при интерактивном перебазировании в настоящее время не поддерживается",
ChangingThisActionIsNotAllowed: "Изменение этого типа записи todo перебазирования не допускается",
CherryPickCopy: "Скопировать отобранные коммит (cherry-pick)",
PasteCommits: "Вставить отобранные коммиты (cherry-pick)",
SureCherryPick: "Вы уверены, что хотите выборочно применить (cherry-picked) отобранные коммиты в эту ветку?",
CherryPick: "Выборочная отборка (Cherry-Pick)",
Donate: "Пожертвовать",
AskQuestion: "Задать вопрос",
PrevLine: "Выбрать предыдущую строку",
NextLine: "Выбрать следующую строку",
PrevHunk: "Выбрать предыдущую часть",
NextHunk: "Выбрать следующую часть",
PrevConflict: "Выбрать предыдущий конфликт",
NextConflict: "Выбрать следующий конфликт",
SelectPrevHunk: "Выбрать предыдущую часть",
SelectNextHunk: "Выбрать следующую часть",
ScrollDown: "Прокрутить вниз",
ScrollUp: "Прокрутить вверх",
ScrollUpMainWindow: "Прокрутить вверх главную панель",
ScrollDownMainWindow: "Прокрутить вниз главную панель",
AmendCommitTitle: "Править коммит (amend)",
AmendCommitPrompt: "Вы уверены, что хотите править этот коммит проиндексированными файлами?",
DropCommitTitle: "Удалить коммит",
DropCommitPrompt: "Вы уверены, что хотите удалить этот коммит?",
PullingStatus: "Получение и слияние изменении",
PushingStatus: "Отправка изменении",
FetchingStatus: "Получение изменении",
SquashingStatus: "Объединение коммитов",
FixingStatus: "Объединение коммитов, отбросив сообщение коммита",
DeletingStatus: "Удаление",
MovingStatus: "Перемещение",
RebasingStatus: "Перебазирование",
MergingStatus: "Слияние",
LowercaseRebasingStatus: "перебазировка", // lowercase because it shows up in parentheses
LowercaseMergingStatus: "слияние", // lowercase because it shows up in parentheses
AmendingStatus: "Правка коммита",
CherryPickingStatus: "Выборочная отборка (cherry-picking)",
UndoingStatus: "Отмена последней команды",
RedoingStatus: "Выполнение последней команды",
CheckingOutStatus: "Переключение",
CommittingStatus: "Сохранение изменении",
CommitFiles: "Сохранить изменения файлов",
SubCommitsDynamicTitle: "Коммиты (%s)",
CommitFilesDynamicTitle: "Различия файлов (%s)",
RemoteBranchesDynamicTitle: "Удалённые ветки (%s)",
ViewItemFiles: "Просмотреть файлы выбранного элемента",
CommitFilesTitle: "Сохранить Изменения Файлов",
CheckoutCommitFileTooltip: "Переключить файл",
CanOnlyDiscardFromLocalCommits: "Изменения можно отменить только из локальных коммитов.",
DiscardOldFileChangeTooltip: "Отменить изменения коммита в этом файле",
DiscardFileChangesTitle: "Отменить изменения файла",
DiscardFileChangesPrompt: "Вы уверены, что хотите удалить изменения в выбранных файлах из этого коммита?\n\nЭто действие запустит перебазирование и отменит изменения в этих файлах. Обратите внимание, что если последующие коммиты зависят от этих изменений, вам, возможно, придется разрешить конфликты.\nПримечание: это также сбросит все активные пользовательские патчи.",
DisabledForGPG: "Функция недоступна для пользователей, использующих GPG",
CreateRepo: "Не в git репозитории. Создать новый git репозиторий? (y/n):",
BareRepo: "Вы пытались открыть Lazygit в пустом репозитории, но Lazygit ещё не поддерживает пустые репозитории. Открыть последний репозиторий? (y/n)",
InitialBranch: "Название ветки? (оставьте пустым для git по умолчанию):",
NoRecentRepositories: "Необходимо открыть lazygit в git репозитории. Нет валидных последних репозиториев. Выход.",
IncorrectNotARepository: "Неверное значение 'notARepository'. Это должно быть одним из 'prompt', 'create', 'skip', или 'quit'.",
AutoStashTitle: "Автосохранить изменения?",
AutoStashPrompt: "Чтобы перенести изменения, их нужно сохранить и вынуть. Сделать это автоматически? (enter/esc)",
StashPrefix: "Автосохранение изменений для",
Discard: "Просмотреть параметры «отмены изменении»",
Cancel: "Отменить",
DiscardAllChanges: "Отменить все изменения",
DiscardUnstagedChanges: "Отменить непроиндексированные изменения",
DiscardAllChangesToAllFiles: "Разбомбить рабочее дерево?",
DiscardAnyUnstagedChanges: "Отменить непроиндексированные изменения",
DiscardUntrackedFiles: "Удалить неотслеживаемые файлы",
DiscardStagedChanges: "Отменить проиндексированные изменения",
HardReset: "Жёсткий сброс",
ViewResetOptions: `Просмотреть параметры сброса`,
CreateFixupCommitTooltip: `Создать fixup коммит для этого коммита`,
SquashAboveCommitsTooltip: `Объединить все 'fixup!' коммиты выше в выбранный коммит (автосохранение)`,
CreateFixupCommit: `Создать fixup коммит`,
ExecuteCustomCommand: "Выполнить пользовательскую команду",
CustomCommand: "Пользовательская Команда:",
CommitChangesWithoutHook: "Закоммитить изменения без предварительного хука коммита",
SkipHookPrefixNotConfigured: "Вы не настроили префикс сообщения коммита для пропуска хуков. Установите `git.skipHookPrefix = 'WIP'` в вашей конфигурации",
ResetTo: `Сбросить на`,
PressEnterToReturn: "Нажмите Enter, чтобы вернуться в lazygit",
ViewStashOptions: "Просмотреть параметры хранилища",
StashAllChanges: "Припрятать все изменения",
StashStagedChanges: "Припрятать проиндексированные изменения",
StashAllChangesKeepIndex: "Припрятать все изменения и сохранить индекс",
StashUnstagedChanges: "Припрятать непроиндексированные изменения",
StashIncludeUntrackedChanges: "Припрятать все изменения, включая неотслеживаемые файлы",
StashOptions: "Параметры хранилища",
NotARepository: "Ошибка: необходимо запустить внутри git репозитория",
Jump: "Перейти к панели",
ScrollLeftRight: "Прокрутить влево/вправо",
ScrollLeft: "Прокрутить влево",
ScrollRight: "Прокрутить вправо",
DiscardPatch: "Отменить патч",
DiscardPatchConfirm: "Вы можете собрать патч только из одной записи коммита/хранилища за раз. Отменить текущий патч?",
CantPatchWhileRebasingError: "Вы не можете создавать патчи или запускать команды патча, находясь в состоянии слияния или перемещения.",
ToggleAddToPatch: "Переключить файлы включённые в патч",
ToggleAllInPatch: "Переключить все файлы, включённые в патч",
UpdatingPatch: "Обновление патча",
ViewPatchOptions: "Просмотреть пользовательские параметры патча",
PatchOptionsTitle: "Параметры патча",
NoPatchError: "Патч ещё не создан. Чтобы начать сборку патча, используйте «пробел» в файле коммита или введите, чтобы добавить определённые строки.",
EnterCommitFile: "Введите файл, чтобы добавить выбранные строки в патч (или свернуть каталог переключения)",
ExitCustomPatchBuilder: `Выйти из сборщика пользовательских патчей`,
EnterUpstream: `Введите upstream как '<remote> <branchname>'`,
InvalidUpstream: "Недействительный upstream. Должен быть в формате '<remote> <branchname>'",
ReturnToRemotesList: `Вернуться к списку удалённых репозитории`,
NewRemote: `Добавить новую удалённую ветку`,
NewRemoteName: `Название новой удалённой ветки`,
NewRemoteUrl: `Ссылка новой удалённой ветки`,
EditRemoteName: `Введите новое название для удалённое ветки {{.remoteName}}:`,
EditRemoteUrl: `Введите новую ссылку для удалённое ветки {{.remoteName}}:`,
RemoveRemote: `Удалить удалённую ветку`,
RemoveRemotePrompt: "Вы уверены, что хотите удалить удалённую ветку?",
DeleteRemoteBranch: "Удалить Удалённую Ветку",
DeleteRemoteBranchMessage: "Вы уверены, что хотите удалить удалённую ветку",
SetAsUpstreamTooltip: "Установить как upstream-ветку переключённую ветку",
SetUpstream: "Установить upstream-ветку из выбранной ветки",
UnsetUpstream: "Убрать upstream-ветку из выбранной ветки",
SetUpstreamTitle: "Установить upstream-ветку",
SetUpstreamMessage: "Вы уверены, что хотите установить upstream-ветвь '{{.checkedOut}}' на '{{.selected}}'",
EditRemoteTooltip: "Редактировать удалённый репозитории",
TagCommit: "Пометить коммит тегом",
TagMenuTitle: "Создать тег",
TagNameTitle: "Название тега",
TagMessageTitle: "Сообщения тега",
AnnotatedTag: "Аннотированный тег",
LightweightTag: "Легковесный тег",
DeleteTagTitle: "Удалить тег",
PushTagTitle: "Удалённый репозитории для отправки тега '{{.tagName}}' в:",
PushTag: "Отправить тег",
NewTag: "Создать тег",
FetchRemoteTooltip: "Получение изменения из удалённого репозитория",
FetchingRemoteStatus: "Получение статуса удалённого репозитория",
CheckoutCommit: "Переключить коммит",
SureCheckoutThisCommit: "Вы уверены, что хотите переключить коммит?",
GitFlowOptions: "Показать параметры git-flow",
NotAGitFlowBranch: "Это не похоже на ветку git-flow",
NewGitFlowBranchPrompt: "Новое {{.branchType}} название:",
IgnoreTracked: "Игнорировать отслеживаемый файл",
IgnoreTrackedPrompt: "Вы уверены, что хотите игнорировать отслеживаемый файл?",
ExcludeTracked: "Исключить отслеживаемый файл",
ExcludeTrackedPrompt: "Вы уверены, что хотите исключить отслеживаемый файл?",
ViewResetToUpstreamOptions: "Просмотреть параметры сброса upstream-ветки",
NextScreenMode: "Следующий режим экрана (нормальный/полуэкранный/полноэкранный)",
PrevScreenMode: "Предыдущий режим экрана",
StartSearch: "Найти",
Panel: "Панель",
KeybindingsLegend: "Связки клавиш",
RenameBranch: "Переименовать ветку",
NewBranchNamePrompt: "Введите новое название ветки",
RenameBranchWarning: "Эта ветвь отслеживает удалённый репозитории. Это действие переименует только имя локальной ветки, а не имя удалённой ветки. Продолжать?",
OpenKeybindingsMenu: "Открыть меню",
ResetCherryPick: "Сбросить отобранную (скопированную | cherry-picked) выборку коммитов",
NextTab: "Следующая вкладка",
PrevTab: "Предыдущая вкладка",
CantUndoWhileRebasing: "Невозможно отменить во время перебазирования",
CantRedoWhileRebasing: "Невозможно повторить при перебазировании",
MustStashWarning: "Вытаскивание исправления в индекс требует сохранения и распаковки ваших изменений. Если что-то пойдёт не так, можно получить доступ к файлам из хранилища. Продолжить?",
MustStashTitle: "Необходимо припрятать",
ConfirmationTitle: "Панель Подтверждения",
PrevPage: "Предыдущая страница",
NextPage: "Следующая страница",
GotoTop: "Пролистать наверх",
GotoBottom: "Прокрутить вниз",
FilteringBy: "Фильтрация по",
ResetInParentheses: "(сбросить)",
OpenFilteringMenu: "Просмотреть параметры фильтрации по пути",
FilterBy: "Фильтровать по",
ExitFilterMode: "Прекратить фильтрацию по пути",
FilterPathOption: "Введите путь для фильтрации",
EnterFileName: "Введите путь:",
FilteringMenuTitle: "Фильтрация",
MustExitFilterModeTitle: "Команда недоступна",
MustExitFilterModePrompt: "Команда недоступна в режиме фильтрации. Выйти из режима фильтрации?",
Diff: "Разница",
EnterRefToDiff: "Введите ссылку для сравнения",
EnterRefName: "Введите ссылку:",
ExitDiffMode: "Выйти из режима сравнения",
DiffingMenuTitle: "Сравнение",
SwapDiff: "Обратное направление сравнении",
ViewDiffingOptions: "Открыть меню сравнении",
// the actual view is the extras view which I intend to give more tabs in future but for now we'll only mention the command log part
OpenCommandLogMenu: "Открыть меню журнала команд",
ShowingGitDiff: "Показывает вывод для:",

View File

@ -67,389 +67,390 @@ const traditionalChineseDeprecatedEditConfigWarning = `
// exporting this so we can use it in tests
func traditionalChineseTranslationSet() TranslationSet {
return TranslationSet{
NotEnoughSpace: "無足夠空間顯示面板",
DiffTitle: "差異",
FilesTitle: "檔案",
BranchesTitle: "分支",
CommitsTitle: "提交",
StashTitle: "收藏 (Stash)",
SnakeTitle: "貪食蛇",
EasterEgg: "彩蛋",
UnstagedChanges: "未預存變更",
StagedChanges: "已預存變更",
MainTitle: "主要",
MergeConfirmTitle: "合併",
StagingTitle: "主面板(預存)",
MergingTitle: "主面板(合併)",
NormalTitle: "主面板(一般)",
LogTitle: "版本記錄",
CommitSummary: "提交摘要",
CredentialsUsername: "使用者名稱",
CredentialsPassword: "密碼",
CredentialsPassphrase: "SSH 金鑰密語",
CredentialsPIN: "SSH 金鑰 PIN 碼",
PassUnameWrong: "密碼、密語或使用者名稱錯誤",
Commit: "提交變更",
AmendLastCommit: "修改上次提交",
AmendLastCommitTitle: "修改上次提交",
SureToAmend: "是否確定要修改上次提交?之後你可以從提交面板中再次更改此次提交的訊息。",
NoCommitToAmend: "沒有可以修改的提交。",
CommitChangesWithEditor: "使用 git 編輯器提交變更",
StatusTitle: "狀態",
Menu: "選單",
Execute: "執行",
Stage: "切換預存",
ToggleStagedAll: "全部預存/取消預存",
ToggleTreeView: "顯示檔案樹狀視圖",
OpenMergeTool: "開啟外部合併工具 (git mergetool)",
Refresh: "重新整理",
Push: "推送",
Pull: "拉取",
Scroll: "捲動",
MergeConflictsTitle: "合併衝突",
Checkout: "檢出",
FileFilter: "篩選檔案 (預存/未預存)",
FilterStagedFiles: "僅顯示預存的檔案",
FilterUnstagedFiles: "僅顯示未預存的檔案",
ResetFilter: "重設篩選",
NoChangedFiles: "沒有變更的檔案",
SoftReset: "軟重設",
AlreadyCheckedOutBranch: "你已經檢出這個分支了",
SureForceCheckout: "是否強制檢出?這將會使你失去本地的所有更改",
ForceCheckoutBranch: "強制檢出分支",
BranchName: "分支名稱",
NewBranchNameBranchOff: "新的分支名稱 (根據 '{{.branchName}}' 分支創建)",
CantDeleteCheckOutBranch: "無法刪除已檢出的分支!",
ForceDeleteBranchMessage: "'{{.selectedBranchName}}' 分支尚未完全合併。是否刪除?",
RebaseBranch: "將已檢出的分支變基至此分支",
CantRebaseOntoSelf: "無法將分支變基至自己",
CantMergeBranchIntoItself: "無法將一個分支合併至自己",
ForceCheckout: "強制檢出",
CheckoutByName: "根據名稱檢出",
NewBranch: "新分支",
NoBranchesThisRepo: "這個版本庫中沒有分支",
CommitWithoutMessageErr: "沒有提交訊息,無法提交",
Close: "關閉",
CloseCancel: "關閉/取消",
Confirm: "確認",
Quit: "結束",
NoCommitsThisBranch: "這個分支沒有提交",
UpdateRefHere: "在這裡更新 '{{.ref}}' 分支",
CannotSquashOrFixupFirstCommit: "沒有可以壓縮的提交",
Fixup: "修復 (Fixup)",
SureFixupThisCommit: "是否對此提交進行 '修復' ? 其將被合併於以下之提交中",
SureSquashThisCommit: "是否要把這個提交壓縮到下面的提交中?",
Squash: "壓縮 (Squash)",
PickCommitTooltip: "挑選提交 (於變基過程中)",
RevertCommit: "還原提交",
Reword: "改寫提交",
DropCommit: "刪除提交",
MoveDownCommit: "向下移動提交",
MoveUpCommit: "向上移動提交",
EditCommitTooltip: "編輯提交",
AmendCommitTooltip: "使用已預存的更改修正提交",
ResetAuthor: "重設作者",
SetAuthor: "設定作者",
AmendCommitAttribute: "設定/重設提交作者",
SetAuthorPromptTitle: "設定作者(格式:「姓名 <電子郵件>」)",
SureResetCommitAuthor: "為了符合已配置的使用者,此作者的提交欄位以及時間戳將被更新。是否繼續?",
RewordCommitEditor: "使用編輯器改寫提交",
Error: "錯誤",
PickHunk: "挑選程式碼片段",
PickAllHunks: "挑選所有程式碼片段",
Undo: "復原",
UndoReflog: "復原",
RedoReflog: "取消復原",
UndoTooltip: "將使用 reflog 確任 git 指令以復原。這不包括工作區更改;只考慮提交。",
RedoTooltip: "將使用 reflog 確任 git 指令以重作。這不包括工作區更改;只考慮提交。",
DiscardAllTooltip: "捨棄 '{{.path}}' 預存/未預存更改。",
DiscardUnstagedTooltip: "捨棄 '{{.path}}' 未預存更改。",
Pop: "還原",
Drop: "捨棄",
Apply: "套用",
NoStashEntries: "沒有收藏記錄",
StashDrop: "放棄收藏記錄",
SureDropStashEntry: "是否捨棄這條收藏記錄?",
StashPop: "還原收藏記錄",
SurePopStashEntry: "是否從收藏中還原這個記錄?",
StashApply: "套用收藏記錄",
SureApplyStashEntry: "是否套用這個收藏記錄?",
NoTrackedStagedFilesStash: "你沒有被追蹤的、預存的檔案可進行收藏",
NoFilesToStash: "沒有檔案可以進行收藏",
StashChanges: "安置現有變更到收藏中",
RenameStash: "重新命名收藏",
RenameStashPrompt: "重新命名收藏:{{.stashName}}",
OpenConfig: "開啟設定檔案",
EditConfig: "編輯設定檔案",
ForcePush: "強制推送",
ForcePushPrompt: "你的分支與遠端分支分岔。按 'ESC' 取消,或按 'Enter' 強制推送。",
ForcePushDisabled: "你的分支與遠端分支分岔,你已禁用強制推送",
CheckForUpdate: "檢查更新",
CheckingForUpdates: "正在檢查更新...",
UpdateAvailableTitle: "有可用的更新!",
UpdateAvailable: "下載並安裝版本 {{.newVersion}}?",
UpdateInProgressWaitingStatus: "更新中",
UpdateCompletedTitle: "更新已完成!",
UpdateCompleted: "更新已成功安裝。為了使其生效,請重新啟動 lazygit。",
FailedToRetrieveLatestVersionErr: "無法取得版本資訊",
OnLatestVersionErr: "已更新至最新版本",
MajorVersionErr: "新版本({{.newVersion}})不支援當前版本({{.currentVersion}})更改",
CouldNotFindBinaryErr: "找不到 {{.url}} 執行檔",
UpdateFailedErr: "更新失敗:{{.errMessage}}",
ConfirmQuitDuringUpdateTitle: "正在更新中",
ConfirmQuitDuringUpdate: "正在進行更新,是否結束?",
MergeToolTitle: "合併工具",
MergeToolPrompt: "是否開啟 'git mergetool'?",
IntroPopupMessage: traditionalChineseIntroPopupMessage,
DeprecatedEditConfigWarning: traditionalChineseDeprecatedEditConfigWarning,
GitconfigParseErr: `Gogit 無法解析你的 gitconfig 檔案,因為存在未引用的 '\' 字符,刪除它們應該可以解決這個問題。`,
EditFile: `編輯檔案`,
OpenFile: `開啟檔案`,
IgnoreFile: `添加到 .gitignore`,
ExcludeFile: `添加到 .git/info/exclude`,
RefreshFiles: `重新整理檔案`,
Merge: `合併到當前檢出的分支`,
ConfirmQuit: `是否結束?`,
SwitchRepo: `切換到最近使用的版本庫`,
AllBranchesLogGraph: `顯示所有分支日誌`,
UnsupportedGitService: `不支援的 git 服務`,
CreatePullRequest: `建立拉取請求`,
CopyPullRequestURL: `複製拉取請求的 URL 到剪貼板`,
NoBranchOnRemote: `這個分支在遠端不存在。需要先將其推送至遠端。`,
Fetch: `擷取`,
NoAutomaticGitFetchTitle: `手動 git 擷取`,
NoAutomaticGitFetchBody: `lazygit 無法在私有庫使用 "git 擷取";在檔案面板中使用 'f' 手動執行 "git 擷取"`,
FileEnter: `選擇檔案中的單個程式碼塊/行,或展開/折疊目錄`,
FileStagingRequirements: `只能選擇跟踪檔案中的單個行`,
StageSelectionTooltip: `切換現有行的狀態 (已預存/未預存)`,
DiscardSelection: `刪除變更 (git reset)`,
ToggleRangeSelect: `切換拖曳選擇`,
ToggleSelectHunk: `切換選擇程式碼塊`,
ToggleSelectionForPatch: `向 (或從) 補丁中添加/刪除行`,
EditHunk: `編輯程式碼塊`,
ToggleStagingView: `切換至另一個面板 (已預存/未預存更改)`,
ReturnToFilesPanel: `返回檔案面板`,
FastForward: `從上游快進此分支`,
FastForwarding: "的擷取和快進中",
FoundConflictsTitle: "自動合併失敗",
ViewMergeRebaseOptions: "查看合併/變基選項",
NotMergingOrRebasing: "你當前既不在變基也不在合併中",
AlreadyRebasing: "無法在變基期間執行此操作",
RecentRepos: "最近的版本庫",
MergeOptionsTitle: "合併選項",
RebaseOptionsTitle: "變基選項",
CommitSummaryTitle: "提交摘要",
CommitDescriptionTitle: "提交描述",
CommitDescriptionSubTitle: "按 tab 鍵聚焦",
LocalBranchesTitle: "本地分支",
SearchTitle: "搜尋",
TagsTitle: "標籤",
MenuTitle: "功能表",
RemotesTitle: "遠端",
RemoteBranchesTitle: "遠端分支",
PatchBuildingTitle: "主面板 (補丁生成)",
InformationTitle: "資訊",
SecondaryTitle: "次要",
ReflogCommitsTitle: "日誌",
GlobalTitle: "全域快捷鍵",
ConflictsResolved: "所有合併衝突都已解決。是否繼續?",
Continue: "確認",
Keybindings: "鍵盤快捷鍵",
RebasingTitle: "將 '{{.checkedOutBranch}}' 變基至 '{{.ref}}'",
SimpleRebase: "簡單變基",
InteractiveRebase: "互動變基",
InteractiveRebaseTooltip: "開始一個互動變基,以中斷開始,這樣你可以在繼續之前更新TODO提交",
ConfirmMerge: "是否將 '{{.selectedBranch}}' 合併至 '{{.checkedOutBranch}}' ?",
FwdNoUpstream: "無法快進無上游分支",
FwdNoLocalUpstream: "無法快進尚未在本地註冊的遠端分支",
FwdCommitsToPush: "無法快進帶有尚未推送的提交的分支",
ErrorOccurred: "發生錯誤!請在此詢問錯誤:",
NoRoom: "無足夠的空間",
YouAreHere: "你在這",
YouDied: "你死了!",
RewordNotSupported: "在互動變基期間改寫提交目前不支援",
ChangingThisActionIsNotAllowed: "不允許更改此類變基待辦事項",
CherryPickCopy: "複製提交 (揀選)",
PasteCommits: "貼上提交 (揀選)",
SureCherryPick: "是否將複製的提交揀選到此分支?",
CherryPick: "揀選 (Cherry-pick)",
Donate: "贊助",
AskQuestion: "諮詢",
PrevLine: "選擇上一行",
NextLine: "選擇下一行",
PrevHunk: "選擇上一段",
NextHunk: "選擇下一段",
PrevConflict: "選擇上一個衝突",
NextConflict: "選擇下一個衝突",
SelectPrevHunk: "選擇上一段",
SelectNextHunk: "選擇下一段",
ScrollDown: "向下捲動",
ScrollUp: "向上捲動",
ScrollUpMainWindow: "向上捲動主面板",
ScrollDownMainWindow: "向下捲動主面板",
AmendCommitTitle: "修改提交",
AmendCommitPrompt: "是否使用預存檔案修改提交?",
DropCommitTitle: "刪除提交",
DropCommitPrompt: "是否刪除此提交?",
PullingStatus: "拉取",
PushingStatus: "推送",
FetchingStatus: "擷取",
SquashingStatus: "壓縮中",
FixingStatus: "修復中",
DeletingStatus: "刪除中",
MovingStatus: "移動中",
RebasingStatus: "變基中",
MergingStatus: "合併中",
LowercaseRebasingStatus: "變基", // lowercase because it shows up in parentheses
LowercaseMergingStatus: "合併", // lowercase because it shows up in parentheses
AmendingStatus: "修改中",
CherryPickingStatus: "揀選中",
UndoingStatus: "復原中",
RedoingStatus: "重做中",
CheckingOutStatus: "檢出中",
CommittingStatus: "提交中",
RevertingStatus: "還原中",
CommitFiles: "提交檔案",
SubCommitsDynamicTitle: "提交 (共 %s項)",
CommitFilesDynamicTitle: "差異檔案 (共 %s項)",
RemoteBranchesDynamicTitle: "遠端分支 (共 %s項)",
ViewItemFiles: "檢視所選項目的檔案",
CommitFilesTitle: "提交檔案",
CheckoutCommitFileTooltip: "檢出檔案",
DiscardFileChangesTitle: "捨棄檔案更改",
DiscardFileChangesPrompt: "是否捨棄此提交?如果這個檔案是在此提交中創建的,它將被刪除",
DisabledForGPG: "此功能不適用於 GPG 加密",
CreateRepo: "未在 git 版本庫中。是否建立新版本庫? (y/n): ",
BareRepo: "你嘗試在裸版本庫中開啟 Lazygit,但 Lazygit 尚未支援裸版本庫。是否開啟最新版本庫? (y/n) ",
InitialBranch: "分支名稱?(留空使用 git 的預設值):",
NoRecentRepositories: "必須在 git 版本庫中開啟 lazygit。沒有有效的最近版本庫。退出。",
IncorrectNotARepository: "無效 `notARepository` 輸入。輸入應為「prompt」、「create」、「skip」、或「quit」。",
AutoStashTitle: "是否自動收藏?",
AutoStashPrompt: "必須收藏並拾起變更才得以繼續操作。是否自動執行?(Enter/Esc)",
StashPrefix: "自動收藏 ",
Cancel: "取消",
DiscardAllChanges: "刪除所有變更",
DiscardUnstagedChanges: "刪除未預存變更",
DiscardAllChangesToAllFiles: "刪除工作目錄",
DiscardAnyUnstagedChanges: "刪除未預存變更",
DiscardUntrackedFiles: "刪除未追蹤檔案",
DiscardStagedChanges: "刪除已預存變更",
HardReset: "強制重設",
ViewResetOptions: "檢視重設選項",
CreateFixupCommitTooltip: "為此提交建立修復提交",
SquashAboveCommits: "壓縮上方所有「fixup」提交(自動壓縮)",
SquashAboveCommitsTooltip: "是否壓縮上方 {{.commit}} 所有「fixup」提交?",
CreateFixupCommit: "建立修復提交",
ExecuteCustomCommand: "執行自訂命令",
CustomCommand: "自訂命令:",
CommitChangesWithoutHook: "沒有預提交 hook 就提交更改",
SkipHookPrefixNotConfigured: "你尚未配置略過 hook 的提交訊息前綴,請在設定中設置 `git.skipHookPrefix = 'WIP'`",
ResetTo: `重設至`,
PressEnterToReturn: "按 Enter 返回到 lazygit",
ViewStashOptions: "檢視收藏選項",
StashAllChanges: "收藏所有變更",
StashStagedChanges: "收藏已預存變更",
StashAllChangesKeepIndex: "收藏所有變更並保留預存區",
StashUnstagedChanges: "收藏未預存變更",
StashIncludeUntrackedChanges: "收藏所有變更,包括未追蹤檔案",
StashOptions: "收藏選項",
NotARepository: "錯誤:必須在 git 版本庫中執行",
Jump: "跳轉至面板",
ScrollLeftRight: "左右捲動",
ScrollLeft: "向左捲動",
ScrollRight: "向右捲動",
DiscardPatch: "捨棄補丁",
DiscardPatchConfirm: "你只能從單一提交或收藏項目建立一個補丁。是否捨棄當前補丁?",
CantPatchWhileRebasingError: "在合併或變基狀態下,你不能建立或運行補丁命令",
ToggleAddToPatch: "切換檔案是否包含在補丁中",
ToggleAllInPatch: "切換所有檔案是否包含在補丁中",
UpdatingPatch: "正在更新補丁",
ViewPatchOptions: "檢視自訂補丁選項",
PatchOptionsTitle: "補丁選項",
NoPatchError: "尚未建立補丁。要開始建立補丁,請在提交檔案上使用空格或輸入以添加特定行",
EnterCommitFile: "輸入檔案以將選定的行添加至補丁(或切換目錄折疊)",
ExitCustomPatchBuilder: `退出自訂補丁建立器`,
EnterUpstream: `輸入上游為 '<remote> <branchname>'`,
InvalidUpstream: "無效的上游。必須符合 '<remote> <branchname>' 的格式",
ReturnToRemotesList: `返回遠端列表`,
NewRemote: `新增遠端`,
NewRemoteName: `新遠端名稱:`,
NewRemoteUrl: `新遠端 URL:`,
EditRemoteName: `輸入更新 {{.remoteName}} 遠端名稱:`,
EditRemoteUrl: `輸入更新 {{.remoteName}} 遠端 URL:`,
RemoveRemote: `移除遠端`,
RemoveRemotePrompt: "你確定要移除遠端?",
DeleteRemoteBranch: "刪除遠端分支",
DeleteRemoteBranchMessage: "你確定要刪除遠端分支?",
SetAsUpstreamTooltip: "將此分支設為當前分支之上游",
SetUpstream: "設定所選分支之上游",
UnsetUpstream: "取消設定選定分支之上游",
SetUpstreamTitle: "設定上游分支",
SetUpstreamMessage: "你確定要將 '{{. selected}}' 設為 '{{.checkedOut}}' 的上游分支?",
EditRemoteTooltip: "編輯遠端",
TagCommit: "打標籤到提交",
TagMenuTitle: "建立標籤",
TagNameTitle: "標籤名稱",
TagMessageTitle: "標籤訊息",
AnnotatedTag: "附註標籤",
LightweightTag: "輕量標籤",
PushTagTitle: "推送標籤 '{{.tagName}}' 至遠端:",
PushTag: "推送標籤",
NewTag: "建立標籤",
FetchRemoteTooltip: "擷取遠端",
FetchingRemoteStatus: "正在擷取遠端",
CheckoutCommit: "檢出提交",
SureCheckoutThisCommit: "你確定要檢出這個提交?",
GitFlowOptions: "顯示 git-flow 選項",
NotAGitFlowBranch: "這似乎不是一個 git flow 分支",
NewGitFlowBranchPrompt: "{{.branchType}} 名稱:",
IgnoreTracked: "忽略已追蹤檔案",
IgnoreTrackedPrompt: "你確定要忽略一個已追蹤的檔案?",
ExcludeTracked: "排除已追蹤檔案",
ViewResetToUpstreamOptions: "檢視上游重設選項",
NextScreenMode: "下一個螢幕模式(常規/半螢幕/全螢幕)",
PrevScreenMode: "上一個螢幕模式",
StartSearch: "搜尋",
StartFilter: "搜尋",
Panel: "面板",
KeybindingsLegend: "說明:`<c-b>` 表示 Ctrl+B、`<a-b>` 表示 Alt+B,`B`表示 Shift+B",
RenameBranch: "重新命名分支",
BranchUpstreamOptionsTitle: "上游分支設定",
ViewBranchUpstreamOptionsTooltip: "檢視有關上游分支的設定(例如重設至上游)",
UpstreamNotSetError: "目標分支沒有上游分支(或其上游分支未儲存於本地)",
ViewBranchUpstreamOptions: "檢視上游設定",
NewBranchNamePrompt: "為分支輸入新名稱",
RenameBranchWarning: "此分支正在追蹤遠端分支。此操作僅會重新命名本地分支名稱,而不是遠端分支的名稱。是否繼續?",
OpenKeybindingsMenu: "開啟選單",
ResetCherryPick: "重設選定的揀選 (複製) 提交",
NextTab: "下一個索引標籤",
PrevTab: "上一個索引標籤",
CantUndoWhileRebasing: "在變基時無法復原",
CantRedoWhileRebasing: "在變基時無法取消復原",
MustStashWarning: "將補丁提取到索引中需要收藏並取消收藏你的變更。如果出現問題,你可以從收藏中訪問你的檔案。是否繼續?",
MustStashTitle: "必須收藏",
ConfirmationTitle: "確認面板",
PrevPage: "上一頁",
NextPage: "下一頁",
GotoTop: "捲動到頂部",
GotoBottom: "捲動到底部",
FilteringBy: "篩選方式",
ResetInParentheses: "(已重設)",
OpenFilteringMenu: "檢視篩選路徑選項",
FilterBy: "篩選路徑",
ExitFilterMode: "停止按路徑篩選",
FilterPathOption: "輸入要依路徑篩選的路徑",
EnterFileName: "輸入路徑:",
FilteringMenuTitle: "篩選",
MustExitFilterModeTitle: "命令不可用",
MustExitFilterModePrompt: "在按路徑篩選的模式下,該命令不可用。是否退出按路徑篩選的模式?",
Diff: "差異",
EnterRefToDiff: "輸入欲比較之 Ref",
EnterRefName: "輸入 Ref:",
ExitDiffMode: "退出差異模式",
DiffingMenuTitle: "差異比較",
SwapDiff: "反轉差異方向",
ViewDiffingOptions: "開啟差異比較選單",
NotEnoughSpace: "無足夠空間顯示面板",
DiffTitle: "差異",
FilesTitle: "檔案",
BranchesTitle: "分支",
CommitsTitle: "提交",
StashTitle: "收藏 (Stash)",
SnakeTitle: "貪食蛇",
EasterEgg: "彩蛋",
UnstagedChanges: "未預存變更",
StagedChanges: "已預存變更",
MainTitle: "主要",
MergeConfirmTitle: "合併",
StagingTitle: "主面板(預存)",
MergingTitle: "主面板(合併)",
NormalTitle: "主面板(一般)",
LogTitle: "版本記錄",
CommitSummary: "提交摘要",
CredentialsUsername: "使用者名稱",
CredentialsPassword: "密碼",
CredentialsPassphrase: "SSH 金鑰密語",
CredentialsPIN: "SSH 金鑰 PIN 碼",
PassUnameWrong: "密碼、密語或使用者名稱錯誤",
Commit: "提交變更",
AmendLastCommit: "修改上次提交",
AmendLastCommitTitle: "修改上次提交",
SureToAmend: "是否確定要修改上次提交?之後你可以從提交面板中再次更改此次提交的訊息。",
NoCommitToAmend: "沒有可以修改的提交。",
CommitChangesWithEditor: "使用 git 編輯器提交變更",
StatusTitle: "狀態",
Menu: "選單",
Execute: "執行",
Stage: "切換預存",
ToggleStagedAll: "全部預存/取消預存",
ToggleTreeView: "顯示檔案樹狀視圖",
OpenMergeTool: "開啟外部合併工具 (git mergetool)",
Refresh: "重新整理",
Push: "推送",
Pull: "拉取",
Scroll: "捲動",
MergeConflictsTitle: "合併衝突",
Checkout: "檢出",
FileFilter: "篩選檔案 (預存/未預存)",
FilterStagedFiles: "僅顯示預存的檔案",
FilterUnstagedFiles: "僅顯示未預存的檔案",
ResetFilter: "重設篩選",
NoChangedFiles: "沒有變更的檔案",
SoftReset: "軟重設",
AlreadyCheckedOutBranch: "你已經檢出這個分支了",
SureForceCheckout: "是否強制檢出?這將會使你失去本地的所有更改",
ForceCheckoutBranch: "強制檢出分支",
BranchName: "分支名稱",
NewBranchNameBranchOff: "新的分支名稱 (根據 '{{.branchName}}' 分支創建)",
CantDeleteCheckOutBranch: "無法刪除已檢出的分支!",
ForceDeleteBranchMessage: "'{{.selectedBranchName}}' 分支尚未完全合併。是否刪除?",
RebaseBranch: "將已檢出的分支變基至此分支",
CantRebaseOntoSelf: "無法將分支變基至自己",
CantMergeBranchIntoItself: "無法將一個分支合併至自己",
ForceCheckout: "強制檢出",
CheckoutByName: "根據名稱檢出",
NewBranch: "新分支",
NoBranchesThisRepo: "這個版本庫中沒有分支",
CommitWithoutMessageErr: "沒有提交訊息,無法提交",
Close: "關閉",
CloseCancel: "關閉/取消",
Confirm: "確認",
Quit: "結束",
NoCommitsThisBranch: "這個分支沒有提交",
UpdateRefHere: "在這裡更新 '{{.ref}}' 分支",
CannotSquashOrFixupFirstCommit: "沒有可以壓縮的提交",
Fixup: "修復 (Fixup)",
SureFixupThisCommit: "是否對此提交進行 '修復' ? 其將被合併於以下之提交中",
SureSquashThisCommit: "是否要把這個提交壓縮到下面的提交中?",
Squash: "壓縮 (Squash)",
PickCommitTooltip: "挑選提交 (於變基過程中)",
RevertCommit: "還原提交",
Reword: "改寫提交",
DropCommit: "刪除提交",
MoveDownCommit: "向下移動提交",
MoveUpCommit: "向上移動提交",
EditCommitTooltip: "編輯提交",
AmendCommitTooltip: "使用已預存的更改修正提交",
ResetAuthor: "重設作者",
SetAuthor: "設定作者",
AmendCommitAttribute: "設定/重設提交作者",
SetAuthorPromptTitle: "設定作者(格式:「姓名 <電子郵件>」)",
SureResetCommitAuthor: "為了符合已配置的使用者,此作者的提交欄位以及時間戳將被更新。是否繼續?",
RewordCommitEditor: "使用編輯器改寫提交",
Error: "錯誤",
PickHunk: "挑選程式碼片段",
PickAllHunks: "挑選所有程式碼片段",
Undo: "復原",
UndoReflog: "復原",
RedoReflog: "取消復原",
UndoTooltip: "將使用 reflog 確任 git 指令以復原。這不包括工作區更改;只考慮提交。",
RedoTooltip: "將使用 reflog 確任 git 指令以重作。這不包括工作區更改;只考慮提交。",
DiscardAllTooltip: "捨棄 '{{.path}}' 預存/未預存更改。",
DiscardUnstagedTooltip: "捨棄 '{{.path}}' 未預存更改。",
Pop: "還原",
Drop: "捨棄",
Apply: "套用",
NoStashEntries: "沒有收藏記錄",
StashDrop: "放棄收藏記錄",
SureDropStashEntry: "是否捨棄這條收藏記錄?",
StashPop: "還原收藏記錄",
SurePopStashEntry: "是否從收藏中還原這個記錄?",
StashApply: "套用收藏記錄",
SureApplyStashEntry: "是否套用這個收藏記錄?",
NoTrackedStagedFilesStash: "你沒有被追蹤的、預存的檔案可進行收藏",
NoFilesToStash: "沒有檔案可以進行收藏",
StashChanges: "安置現有變更到收藏中",
RenameStash: "重新命名收藏",
RenameStashPrompt: "重新命名收藏:{{.stashName}}",
OpenConfig: "開啟設定檔案",
EditConfig: "編輯設定檔案",
ForcePush: "強制推送",
ForcePushPrompt: "你的分支與遠端分支分岔。按 'ESC' 取消,或按 'Enter' 強制推送。",
ForcePushDisabled: "你的分支與遠端分支分岔,你已禁用強制推送",
UpdatesRejectedAndForcePushDisabled: "更新被拒絕,你已禁用強制推送",
CheckForUpdate: "檢查更新",
CheckingForUpdates: "正在檢查更新...",
UpdateAvailableTitle: "有可用的更新!",
UpdateAvailable: "下載並安裝版本 {{.newVersion}}?",
UpdateInProgressWaitingStatus: "更新中",
UpdateCompletedTitle: "更新已完成!",
UpdateCompleted: "更新已成功安裝。為了使其生效,請重新啟動 lazygit。",
FailedToRetrieveLatestVersionErr: "無法取得版本資訊",
OnLatestVersionErr: "已更新至最新版本",
MajorVersionErr: "新版本({{.newVersion}})不支援當前版本({{.currentVersion}})更改",
CouldNotFindBinaryErr: "找不到 {{.url}} 執行檔",
UpdateFailedErr: "更新失敗:{{.errMessage}}",
ConfirmQuitDuringUpdateTitle: "正在更新中",
ConfirmQuitDuringUpdate: "正在進行更新,是否結束?",
MergeToolTitle: "合併工具",
MergeToolPrompt: "是否開啟 'git mergetool'?",
IntroPopupMessage: traditionalChineseIntroPopupMessage,
DeprecatedEditConfigWarning: traditionalChineseDeprecatedEditConfigWarning,
GitconfigParseErr: `Gogit 無法解析你的 gitconfig 檔案,因為存在未引用的 '\' 字符,刪除它們應該可以解決這個問題。`,
EditFile: `編輯檔案`,
OpenFile: `開啟檔案`,
IgnoreFile: `添加到 .gitignore`,
ExcludeFile: `添加到 .git/info/exclude`,
RefreshFiles: `重新整理檔案`,
Merge: `合併到當前檢出的分支`,
ConfirmQuit: `是否結束?`,
SwitchRepo: `切換到最近使用的版本庫`,
AllBranchesLogGraph: `顯示所有分支日誌`,
UnsupportedGitService: `不支援的 git 服務`,
CreatePullRequest: `建立拉取請求`,
CopyPullRequestURL: `複製拉取請求的 URL 到剪貼板`,
NoBranchOnRemote: `這個分支在遠端不存在。需要先將其推送至遠端。`,
Fetch: `擷取`,
NoAutomaticGitFetchTitle: `手動 git 擷取`,
NoAutomaticGitFetchBody: `lazygit 無法在私有庫使用 "git 擷取";在檔案面板中使用 'f' 手動執行 "git 擷取"`,
FileEnter: `選擇檔案中的單個程式碼塊/行,或展開/折疊目錄`,
FileStagingRequirements: `只能選擇跟踪檔案中的單個行`,
StageSelectionTooltip: `切換現有行的狀態 (已預存/未預存)`,
DiscardSelection: `刪除變更 (git reset)`,
ToggleRangeSelect: `切換拖曳選擇`,
ToggleSelectHunk: `切換選擇程式碼塊`,
ToggleSelectionForPatch: `向 (或從) 補丁中添加/刪除行`,
EditHunk: `編輯程式碼塊`,
ToggleStagingView: `切換至另一個面板 (已預存/未預存更改)`,
ReturnToFilesPanel: `返回檔案面板`,
FastForward: `從上游快進此分支`,
FastForwarding: "的擷取和快進中",
FoundConflictsTitle: "自動合併失敗",
ViewMergeRebaseOptions: "查看合併/變基選項",
NotMergingOrRebasing: "你當前既不在變基也不在合併中",
AlreadyRebasing: "無法在變基期間執行此操作",
RecentRepos: "最近的版本庫",
MergeOptionsTitle: "合併選項",
RebaseOptionsTitle: "變基選項",
CommitSummaryTitle: "提交摘要",
CommitDescriptionTitle: "提交描述",
CommitDescriptionSubTitle: "按 tab 鍵聚焦",
LocalBranchesTitle: "本地分支",
SearchTitle: "搜尋",
TagsTitle: "標籤",
MenuTitle: "功能表",
RemotesTitle: "遠端",
RemoteBranchesTitle: "遠端分支",
PatchBuildingTitle: "主面板 (補丁生成)",
InformationTitle: "資訊",
SecondaryTitle: "次要",
ReflogCommitsTitle: "日誌",
GlobalTitle: "全域快捷鍵",
ConflictsResolved: "所有合併衝突都已解決。是否繼續?",
Continue: "確認",
Keybindings: "鍵盤快捷鍵",
RebasingTitle: "將 '{{.checkedOutBranch}}' 變基至 '{{.ref}}'",
SimpleRebase: "簡單變基",
InteractiveRebase: "互動變基",
InteractiveRebaseTooltip: "開始一個互動變基,以中斷開始,這樣你可以在繼續之前更新TODO提交",
ConfirmMerge: "是否將 '{{.selectedBranch}}' 合併至 '{{.checkedOutBranch}}' ?",
FwdNoUpstream: "無法快進無上游分支",
FwdNoLocalUpstream: "無法快進尚未在本地註冊的遠端分支",
FwdCommitsToPush: "無法快進帶有尚未推送的提交的分支",
ErrorOccurred: "發生錯誤!請在此詢問錯誤:",
NoRoom: "無足夠的空間",
YouAreHere: "你在這",
YouDied: "你死了!",
RewordNotSupported: "在互動變基期間改寫提交目前不支援",
ChangingThisActionIsNotAllowed: "不允許更改此類變基待辦事項",
CherryPickCopy: "複製提交 (揀選)",
PasteCommits: "貼上提交 (揀選)",
SureCherryPick: "是否將複製的提交揀選到此分支?",
CherryPick: "揀選 (Cherry-pick)",
Donate: "贊助",
AskQuestion: "諮詢",
PrevLine: "選擇上一行",
NextLine: "選擇下一行",
PrevHunk: "選擇上一段",
NextHunk: "選擇下一段",
PrevConflict: "選擇上一個衝突",
NextConflict: "選擇下一個衝突",
SelectPrevHunk: "選擇上一段",
SelectNextHunk: "選擇下一段",
ScrollDown: "向下捲動",
ScrollUp: "向上捲動",
ScrollUpMainWindow: "向上捲動主面板",
ScrollDownMainWindow: "向下捲動主面板",
AmendCommitTitle: "修改提交",
AmendCommitPrompt: "是否使用預存檔案修改提交?",
DropCommitTitle: "刪除提交",
DropCommitPrompt: "是否刪除此提交?",
PullingStatus: "拉取",
PushingStatus: "推送",
FetchingStatus: "擷取",
SquashingStatus: "壓縮中",
FixingStatus: "修復中",
DeletingStatus: "刪除中",
MovingStatus: "移動中",
RebasingStatus: "變基中",
MergingStatus: "合併中",
LowercaseRebasingStatus: "變基", // lowercase because it shows up in parentheses
LowercaseMergingStatus: "合併", // lowercase because it shows up in parentheses
AmendingStatus: "修改中",
CherryPickingStatus: "揀選中",
UndoingStatus: "復原中",
RedoingStatus: "重做中",
CheckingOutStatus: "檢出中",
CommittingStatus: "提交中",
RevertingStatus: "還原中",
CommitFiles: "提交檔案",
SubCommitsDynamicTitle: "提交 (共 %s項)",
CommitFilesDynamicTitle: "差異檔案 (共 %s項)",
RemoteBranchesDynamicTitle: "遠端分支 (共 %s項)",
ViewItemFiles: "檢視所選項目的檔案",
CommitFilesTitle: "提交檔案",
CheckoutCommitFileTooltip: "檢出檔案",
DiscardFileChangesTitle: "捨棄檔案更改",
DiscardFileChangesPrompt: "是否捨棄此提交?如果這個檔案是在此提交中創建的,它將被刪除",
DisabledForGPG: "此功能不適用於 GPG 加密",
CreateRepo: "未在 git 版本庫中。是否建立新版本庫? (y/n): ",
BareRepo: "你嘗試在裸版本庫中開啟 Lazygit,但 Lazygit 尚未支援裸版本庫。是否開啟最新版本庫? (y/n) ",
InitialBranch: "分支名稱?(留空使用 git 的預設值):",
NoRecentRepositories: "必須在 git 版本庫中開啟 lazygit。沒有有效的最近版本庫。退出。",
IncorrectNotARepository: "無效 `notARepository` 輸入。輸入應為「prompt」、「create」、「skip」、或「quit」。",
AutoStashTitle: "是否自動收藏?",
AutoStashPrompt: "必須收藏並拾起變更才得以繼續操作。是否自動執行?(Enter/Esc)",
StashPrefix: "自動收藏 ",
Cancel: "取消",
DiscardAllChanges: "刪除所有變更",
DiscardUnstagedChanges: "刪除未預存變更",
DiscardAllChangesToAllFiles: "刪除工作目錄",
DiscardAnyUnstagedChanges: "刪除未預存變更",
DiscardUntrackedFiles: "刪除未追蹤檔案",
DiscardStagedChanges: "刪除已預存變更",
HardReset: "強制重設",
ViewResetOptions: "檢視重設選項",
CreateFixupCommitTooltip: "為此提交建立修復提交",
SquashAboveCommits: "壓縮上方所有「fixup」提交(自動壓縮)",
SquashAboveCommitsTooltip: "是否壓縮上方 {{.commit}} 所有「fixup」提交?",
CreateFixupCommit: "建立修復提交",
ExecuteCustomCommand: "執行自訂命令",
CustomCommand: "自訂命令:",
CommitChangesWithoutHook: "沒有預提交 hook 就提交更改",
SkipHookPrefixNotConfigured: "你尚未配置略過 hook 的提交訊息前綴,請在設定中設置 `git.skipHookPrefix = 'WIP'`",
ResetTo: `重設至`,
PressEnterToReturn: "按 Enter 返回到 lazygit",
ViewStashOptions: "檢視收藏選項",
StashAllChanges: "收藏所有變更",
StashStagedChanges: "收藏已預存變更",
StashAllChangesKeepIndex: "收藏所有變更並保留預存區",
StashUnstagedChanges: "收藏未預存變更",
StashIncludeUntrackedChanges: "收藏所有變更,包括未追蹤檔案",
StashOptions: "收藏選項",
NotARepository: "錯誤:必須在 git 版本庫中執行",
Jump: "跳轉至面板",
ScrollLeftRight: "左右捲動",
ScrollLeft: "向左捲動",
ScrollRight: "向右捲動",
DiscardPatch: "捨棄補丁",
DiscardPatchConfirm: "你只能從單一提交或收藏項目建立一個補丁。是否捨棄當前補丁?",
CantPatchWhileRebasingError: "在合併或變基狀態下,你不能建立或運行補丁命令",
ToggleAddToPatch: "切換檔案是否包含在補丁中",
ToggleAllInPatch: "切換所有檔案是否包含在補丁中",
UpdatingPatch: "正在更新補丁",
ViewPatchOptions: "檢視自訂補丁選項",
PatchOptionsTitle: "補丁選項",
NoPatchError: "尚未建立補丁。要開始建立補丁,請在提交檔案上使用空格或輸入以添加特定行",
EnterCommitFile: "輸入檔案以將選定的行添加至補丁(或切換目錄折疊)",
ExitCustomPatchBuilder: `退出自訂補丁建立器`,
EnterUpstream: `輸入上游為 '<remote> <branchname>'`,
InvalidUpstream: "無效的上游。必須符合 '<remote> <branchname>' 的格式",
ReturnToRemotesList: `返回遠端列表`,
NewRemote: `新增遠端`,
NewRemoteName: `新遠端名稱:`,
NewRemoteUrl: `新遠端 URL:`,
EditRemoteName: `輸入更新 {{.remoteName}} 遠端名稱:`,
EditRemoteUrl: `輸入更新 {{.remoteName}} 遠端 URL:`,
RemoveRemote: `移除遠端`,
RemoveRemotePrompt: "你確定要移除遠端?",
DeleteRemoteBranch: "刪除遠端分支",
DeleteRemoteBranchMessage: "你確定要刪除遠端分支?",
SetAsUpstreamTooltip: "將此分支設為當前分支之上游",
SetUpstream: "設定所選分支之上游",
UnsetUpstream: "取消設定選定分支之上游",
SetUpstreamTitle: "設定上游分支",
SetUpstreamMessage: "你確定要將 '{{. selected}}' 設為 '{{.checkedOut}}' 的上游分支?",
EditRemoteTooltip: "編輯遠端",
TagCommit: "打標籤到提交",
TagMenuTitle: "建立標籤",
TagNameTitle: "標籤名稱",
TagMessageTitle: "標籤訊息",
AnnotatedTag: "附註標籤",
LightweightTag: "輕量標籤",
PushTagTitle: "推送標籤 '{{.tagName}}' 至遠端:",
PushTag: "推送標籤",
NewTag: "建立標籤",
FetchRemoteTooltip: "擷取遠端",
FetchingRemoteStatus: "正在擷取遠端",
CheckoutCommit: "檢出提交",
SureCheckoutThisCommit: "你確定要檢出這個提交?",
GitFlowOptions: "顯示 git-flow 選項",
NotAGitFlowBranch: "這似乎不是一個 git flow 分支",
NewGitFlowBranchPrompt: "{{.branchType}} 名稱:",
IgnoreTracked: "忽略已追蹤檔案",
IgnoreTrackedPrompt: "你確定要忽略一個已追蹤的檔案?",
ExcludeTracked: "排除已追蹤檔案",
ViewResetToUpstreamOptions: "檢視上游重設選項",
NextScreenMode: "下一個螢幕模式(常規/半螢幕/全螢幕)",
PrevScreenMode: "上一個螢幕模式",
StartSearch: "搜尋",
StartFilter: "搜尋",
Panel: "面板",
KeybindingsLegend: "說明:`<c-b>` 表示 Ctrl+B、`<a-b>` 表示 Alt+B,`B`表示 Shift+B",
RenameBranch: "重新命名分支",
BranchUpstreamOptionsTitle: "上游分支設定",
ViewBranchUpstreamOptionsTooltip: "檢視有關上游分支的設定(例如重設至上游)",
UpstreamNotSetError: "目標分支沒有上游分支(或其上游分支未儲存於本地)",
ViewBranchUpstreamOptions: "檢視上游設定",
NewBranchNamePrompt: "為分支輸入新名稱",
RenameBranchWarning: "此分支正在追蹤遠端分支。此操作僅會重新命名本地分支名稱,而不是遠端分支的名稱。是否繼續?",
OpenKeybindingsMenu: "開啟選單",
ResetCherryPick: "重設選定的揀選 (複製) 提交",
NextTab: "下一個索引標籤",
PrevTab: "上一個索引標籤",
CantUndoWhileRebasing: "在變基時無法復原",
CantRedoWhileRebasing: "在變基時無法取消復原",
MustStashWarning: "將補丁提取到索引中需要收藏並取消收藏你的變更。如果出現問題,你可以從收藏中訪問你的檔案。是否繼續?",
MustStashTitle: "必須收藏",
ConfirmationTitle: "確認面板",
PrevPage: "上一頁",
NextPage: "下一頁",
GotoTop: "捲動到頂部",
GotoBottom: "捲動到底部",
FilteringBy: "篩選方式",
ResetInParentheses: "(已重設)",
OpenFilteringMenu: "檢視篩選路徑選項",
FilterBy: "篩選路徑",
ExitFilterMode: "停止按路徑篩選",
FilterPathOption: "輸入要依路徑篩選的路徑",
EnterFileName: "輸入路徑:",
FilteringMenuTitle: "篩選",
MustExitFilterModeTitle: "命令不可用",
MustExitFilterModePrompt: "在按路徑篩選的模式下,該命令不可用。是否退出按路徑篩選的模式?",
Diff: "差異",
EnterRefToDiff: "輸入欲比較之 Ref",
EnterRefName: "輸入 Ref:",
ExitDiffMode: "退出差異模式",
DiffingMenuTitle: "差異比較",
SwapDiff: "反轉差異方向",
ViewDiffingOptions: "開啟差異比較選單",
// the actual view is the extras view which I intend to give more tabs in future but for now we'll only mention the command log part
OpenCommandLogMenu: "開啟命令記錄選單",
ShowingGitDiff: "顯示輸出:",

View File

@ -0,0 +1,81 @@
package sync
import (
"github.com/jesseduffield/lazygit/pkg/config"
. "github.com/jesseduffield/lazygit/pkg/integration/components"
)
var ForcePushRemoteBranchNotStoredLocally = NewIntegrationTest(NewIntegrationTestArgs{
Description: "Push a branch whose remote branch is not stored locally, requiring a force push",
ExtraCmdArgs: []string{},
Skip: false,
SetupConfig: func(config *config.AppConfig) {},
SetupRepo: func(shell *Shell) {
shell.EmptyCommit("one")
shell.EmptyCommit("two")
shell.Clone("some-remote")
// remove the 'two' commit so that we have something to pull from the remote
shell.HardReset("HEAD^")
shell.SetConfig("branch.master.remote", "../some-remote")
shell.SetConfig("branch.master.pushRemote", "../some-remote")
shell.SetConfig("branch.master.merge", "refs/heads/master")
shell.CreateFileAndAdd("file1", "file1 content")
},
Run: func(t *TestDriver, keys config.KeybindingConfig) {
t.Views().Commits().
Lines(
Contains("one"),
)
t.Views().Status().Content(Contains("? repo → master"))
// We're behind our upstream now, so we expect to be asked to force-push
t.Views().Files().IsFocused().Press(keys.Universal.Push)
t.ExpectPopup().Confirmation().
Title(Equals("Force push")).
Content(Equals("Your branch has diverged from the remote branch. Press <esc> to cancel, or <enter> to force push.")).
Confirm()
// Make a new local commit
t.Views().Files().IsFocused().Press(keys.Files.CommitChanges)
t.ExpectPopup().CommitMessagePanel().Type("new").Confirm()
t.Views().Commits().
Lines(
Contains("new"),
Contains("one"),
)
// Pushing this works without needing to force push
t.Views().Files().IsFocused().Press(keys.Universal.Push)
// Now add the clone as a remote just so that we can check if what we
// pushed arrived there correctly
t.Views().Remotes().Focus().
Press(keys.Universal.New)
t.ExpectPopup().Prompt().
Title(Equals("New remote name:")).Type("some-remote").Confirm()
t.ExpectPopup().Prompt().
Title(Equals("New remote url:")).Type("../some-remote").Confirm()
t.Views().Remotes().Lines(
Contains("some-remote").IsSelected(),
).
PressEnter()
t.Views().RemoteBranches().IsFocused().Lines(
Contains("master").IsSelected(),
).
PressEnter()
t.Views().SubCommits().IsFocused().Lines(
Contains("new"),
Contains("one"),
)
},
})

View File

@ -276,6 +276,7 @@ var tests = []*components.IntegrationTest{
sync.ForcePush,
sync.ForcePushMultipleMatching,
sync.ForcePushMultipleUpstream,
sync.ForcePushRemoteBranchNotStoredLocally,
sync.ForcePushTriangular,
sync.Pull,
sync.PullAndSetUpstream,