2cc492bb88
GET /git/refs lists local branches (upstream, ahead/behind, last commit, merged, held by a worktree, protected), remote branches grouped by remote and tags (target, annotated message/tagger/date). New writes in server/lib/git-refs.js, dispatched from git-ops.js: branch-rename, branch-upstream (set/unset), tag-create (light/annotated), tag-delete (confirm), tag-push (one tag to origin, no --tags, no force), and branch-create with a looked-up from + switch on a clean tree. Every ref is looked up, never passed through; repo-wide writes are repo-root only (ESUBDIR) and refused during any operation (EMERGING). Client: git/BranchManager + TagManager dialog opened from the git bar's tags icon, en+vi (gitRefs namespace), keyboard navigable. # Conflicts: # CLAUDE.md # client/src/components/lanes/LaneGitBar.tsx # docs/API.md # server/__tests__/lanes-api.test.js # server/routes/lanes.js
77 lines
4.1 KiB
JSON
77 lines
4.1 KiB
JSON
{
|
|
"openPanel": "Nhánh và tag",
|
|
"openPanelHint": "Nhánh và tag: đổi tên, tạo nhánh từ commit hoặc tag bất kỳ, upstream, merge, xóa, tag",
|
|
"title": "Nhánh và tag",
|
|
"branches": "Nhánh",
|
|
"tags": "Tag",
|
|
"close": "Đóng",
|
|
"searchBranches": "Tìm nhánh",
|
|
"searchTags": "Tìm tag",
|
|
"loading": "Đang tải…",
|
|
"unavailable": "Thư mục này không phải là kho git.",
|
|
"local": "Trên máy",
|
|
"remote": "Remote · {{remote}}",
|
|
"noMatch": "Không có nhánh nào khớp.",
|
|
"truncated": "Chỉ hiện 1000 mục đầu của mỗi loại.",
|
|
"merging": "Đang có merge, cherry-pick hoặc revert dở: hãy hoàn tất hoặc hủy nó trước khi đổi nhánh hay tag.",
|
|
"current": "đang dùng",
|
|
"protected": "được bảo vệ",
|
|
"worktree": "worktree",
|
|
"gone": "upstream đã mất",
|
|
"ahead": "đi trước",
|
|
"behind": "đi sau",
|
|
"inSync": "đã đồng bộ",
|
|
"newFrom": "Tạo nhánh từ đây",
|
|
"newBranchName": "Tên nhánh mới",
|
|
"switchToIt": "Chuyển sang nhánh đó",
|
|
"switchDirty": "Hãy commit hoặc bỏ các thay đổi rồi mới chuyển nhánh được.",
|
|
"create": "Tạo",
|
|
"rename": "Đổi tên",
|
|
"renameHint": "Đổi tên nhánh này (thiết lập upstream đi theo)",
|
|
"renameTo": "Tên mới",
|
|
"setUpstream": "Đặt upstream",
|
|
"upstreamHint": "Theo dõi một nhánh remote: số commit đi trước/đi sau, pull và push sẽ dựa vào nó",
|
|
"pickUpstream": "Chọn nhánh remote",
|
|
"noRemoteBranches": "Chưa fetch nhánh remote nào",
|
|
"unsetUpstream": "Bỏ upstream",
|
|
"apply": "Áp dụng",
|
|
"merge": "Merge",
|
|
"mergeInto": "Merge vào {{current}}",
|
|
"mergeHint": "Merge nhánh này vào {{current}} (cần cây làm việc sạch)",
|
|
"mergeConfirm": "Merge {{branch}} vào {{current}}? Nếu có xung đột, bạn xử lý trong bảng Thay đổi hoặc hủy merge.",
|
|
"delete": "Xóa",
|
|
"deleteHint": "Xóa nhánh trên máy này (git branch -d)",
|
|
"deleteConfirm": "Xóa nhánh {{branch}} trên máy? Nhánh đã merge hết nên không mất commit nào.",
|
|
"deleteUnmerged": "Xóa nhánh {{branch}} trên máy? Nhánh chưa merge vào nhánh hiện tại, nên git sẽ từ chối trừ khi upstream của nó đã có đủ mọi commit.",
|
|
"why.current": "Bạn đang ở nhánh này nên không xóa được.",
|
|
"why.protected": "Nhánh được bảo vệ: không đổi tên hay xóa ở đây được.",
|
|
"why.worktree": "Đang được mở ở worktree khác: {{path}}",
|
|
"why.unmerged": "Chưa merge vào nhánh hiện tại: git sẽ không xóa trừ khi upstream của nó đã có đủ mọi commit.",
|
|
"errLogin": "Remote cần đăng nhập. Hãy bấm Fetch hoặc Push trên thanh git một lần để đăng nhập (tick Ghi nhớ), rồi thử lại.",
|
|
"errSubdir": "Nhánh và tag thuộc về cả kho: hãy làm việc này từ một workspace ở thư mục gốc của kho.",
|
|
"tagNew": "Tạo tag",
|
|
"tagName": "Tên tag, ví dụ v1.2.0",
|
|
"tagFrom": "Đặt trên (nhánh, tag hoặc mã commit) — để trống là HEAD",
|
|
"tagMessage": "Nội dung (không bắt buộc — có nội dung thì là tag có chú thích)",
|
|
"tagCreateLight": "Tạo tag",
|
|
"tagCreateAnnotated": "Tạo tag có chú thích",
|
|
"cancel": "Hủy",
|
|
"noTags": "Chưa có tag nào.",
|
|
"annotated": "có chú thích",
|
|
"tagPush": "Đẩy lên origin",
|
|
"tagPushHint": "Chỉ đẩy đúng tag này (không dùng --tags, không ghi đè)",
|
|
"tagPushConfirm": "Đẩy tag {{tag}} lên remote?",
|
|
"tagDelete": "Xóa tag",
|
|
"tagDeleteHint": "Chỉ xóa tag này trên máy",
|
|
"tagDeleteConfirm": "Xóa tag {{tag}} trên máy? Không hoàn tác được ở đây; bản đã đẩy lên remote vẫn còn.",
|
|
"done.create": "Đã tạo nhánh {{branch}}",
|
|
"done.rename": "Đã đổi tên thành {{branch}}",
|
|
"done.setUpstream": "Giờ đang theo dõi {{upstream}}",
|
|
"done.unsetUpstream": "Đã bỏ upstream",
|
|
"done.merge": "Đã merge {{branch}}",
|
|
"done.delete": "Đã xóa nhánh {{branch}}",
|
|
"done.tagCreate": "Đã tạo tag {{tag}}",
|
|
"done.tagPush": "Đã đẩy tag {{tag}}",
|
|
"done.tagDelete": "Đã xóa tag {{tag}}"
|
|
}
|