git-push-time 1.0.3 → 1.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/workflows/npm-publish.yml +33 -0
- package/README.md +215 -134
- package/bin/index.js +337 -1004
- package/lib/commands/edit-time.js +141 -0
- package/lib/commands/fix.js +113 -0
- package/lib/commands/github.js +439 -0
- package/lib/commands/pull.js +89 -0
- package/lib/commands/push.js +673 -0
- package/lib/config.js +220 -0
- package/lib/fix.js +286 -260
- package/lib/git.js +492 -452
- package/lib/github.js +322 -0
- package/lib/prompt-helpers.js +62 -0
- package/lib/secrets.js +92 -87
- package/lib/ui.js +804 -728
- package/lib/utils.js +120 -106
- package/package.json +35 -32
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# This workflow will run tests using node and then publish a package to GitHub Packages when a release is created
|
|
2
|
+
# For more information see: https://docs.github.com/en/actions/publishing-packages/publishing-nodejs-packages
|
|
3
|
+
|
|
4
|
+
name: Node.js Package
|
|
5
|
+
|
|
6
|
+
on:
|
|
7
|
+
release:
|
|
8
|
+
types: [created]
|
|
9
|
+
|
|
10
|
+
jobs:
|
|
11
|
+
build:
|
|
12
|
+
runs-on: ubuntu-latest
|
|
13
|
+
steps:
|
|
14
|
+
- uses: actions/checkout@v4
|
|
15
|
+
- uses: actions/setup-node@v4
|
|
16
|
+
with:
|
|
17
|
+
node-version: 20
|
|
18
|
+
- run: npm ci
|
|
19
|
+
- run: npm test
|
|
20
|
+
|
|
21
|
+
publish-npm:
|
|
22
|
+
needs: build
|
|
23
|
+
runs-on: ubuntu-latest
|
|
24
|
+
steps:
|
|
25
|
+
- uses: actions/checkout@v4
|
|
26
|
+
- uses: actions/setup-node@v4
|
|
27
|
+
with:
|
|
28
|
+
node-version: 20
|
|
29
|
+
registry-url: https://registry.npmjs.org/
|
|
30
|
+
- run: npm ci
|
|
31
|
+
- run: npm publish
|
|
32
|
+
env:
|
|
33
|
+
NODE_AUTH_TOKEN: ${{secrets.npm_token}}
|
package/README.md
CHANGED
|
@@ -1,134 +1,215 @@
|
|
|
1
|
-
# 🚀 Git Push Time
|
|
2
|
-
|
|
3
|
-
Một công cụ Dòng lệnh (CLI) mạnh
|
|
4
|
-
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
## ✨ Tính năng nổi bật
|
|
8
|
-
|
|
9
|
-
-
|
|
10
|
-
-
|
|
11
|
-
-
|
|
12
|
-
-
|
|
13
|
-
-
|
|
14
|
-
-
|
|
15
|
-
-
|
|
16
|
-
-
|
|
17
|
-
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
###
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
```
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
```
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
1
|
+
# 🚀 Git Push Time & GitHub CLI (`git-push-time`)
|
|
2
|
+
|
|
3
|
+
Một công cụ Dòng lệnh (CLI) mạnh mẽ, hiện đại và toàn diện giúp bạn **đẩy dự án lên Git siêu tốc**, **kết nối GitHub tạo Repository trực tiếp**, **tùy chỉnh lùi thời gian commit (Backdate)** và **tự động bảo vệ chống lộ Key/Secret (GitHub GH013)**.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## ✨ Tính năng nổi bật
|
|
8
|
+
|
|
9
|
+
- 🐙 **Kết nối GitHub & Tạo Repository trực tiếp**:
|
|
10
|
+
- Tạo nhanh repository mới trên GitHub (Public / Private) chỉ trong 3 giây ngay trên terminal.
|
|
11
|
+
- Tự động liên kết remote và đẩy code của dự án lên repo mới vừa tạo.
|
|
12
|
+
- Hỗ trợ lưu trữ Personal Access Token (PAT) an toàn, tự nhận diện token từ `gh CLI` hoặc biến môi trường `GITHUB_TOKEN`.
|
|
13
|
+
- Xem thông tin tài khoản GitHub (Profile), danh sách repository cá nhân và chọn repo trực tiếp không cần copy-paste link.
|
|
14
|
+
- ⚡ **Đẩy dự án siêu tốc**: Tự động hóa toàn bộ quy trình `git init`, `git remote`, `git add .`, `git commit`, `git push`.
|
|
15
|
+
- ⏰ **Tùy chỉnh thời gian commit (Git Backdate)**:
|
|
16
|
+
- Lùi ngày/giờ bằng cú pháp tự nhiên: `-2d` (2 ngày trước), `-5h` (5 giờ trước), `-1w` (1 tuần trước), `-30m` (30 phút trước).
|
|
17
|
+
- Hoặc nhập mốc thời gian cụ thể: `2024-01-15 14:30:00`.
|
|
18
|
+
- Ghi chuẩn xác cả `GIT_AUTHOR_DATE` và `GIT_COMMITTER_DATE`.
|
|
19
|
+
- 🛡️ **Zero-Leak Secret Shield**:
|
|
20
|
+
- Quét trước các file nhạy cảm (`.env`, `.npmrc`, private keys, API keys).
|
|
21
|
+
- Tự động gỡ khỏi stage và bổ sung vào `.gitignore` an toàn mà không làm mất file trên máy của bạn.
|
|
22
|
+
- Tự động squash làm sạch lịch sử unpushed nếu từng vô tình commit key bí mật.
|
|
23
|
+
- 🎨 **Giao diện Terminal UI hiện đại**:
|
|
24
|
+
- Thiết kế Dashboard trực quan hiển thị thư mục, branch, trạng thái GitHub.
|
|
25
|
+
- Hỗ trợ nút `« Quay lại` ở tất cả các bước (hoặc gõ `..`).
|
|
26
|
+
- Hộp thoại màu sắc chuẩn Cyberpunk / DevTools sắc nét, không dùng emoji dư thừa.
|
|
27
|
+
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
## 📦 Cài đặt
|
|
31
|
+
|
|
32
|
+
### Cách 1: Cài đặt toàn cục (Khuyên dùng)
|
|
33
|
+
```bash
|
|
34
|
+
npm install -g git-push-time
|
|
35
|
+
```
|
|
36
|
+
Sau khi cài đặt, bạn có thể gọi lệnh `git-push-time`, `githubcli` hoặc `git-custom-push` ở bất kỳ thư mục nào!
|
|
37
|
+
|
|
38
|
+
### Cách 2: Chạy trực tiếp với `npx`
|
|
39
|
+
```bash
|
|
40
|
+
npx git-push-time
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
## 🧭 Quy trình hoạt động (Workflow)
|
|
46
|
+
|
|
47
|
+
```text
|
|
48
|
+
git-push-time github login
|
|
49
|
+
│
|
|
50
|
+
▼
|
|
51
|
+
🌐 GitHub Login (OAuth Device Flow / Personal Access Token)
|
|
52
|
+
│
|
|
53
|
+
▼
|
|
54
|
+
🔑 Mở trình duyệt xác nhận mã User Code & Cấp quyền
|
|
55
|
+
│
|
|
56
|
+
▼
|
|
57
|
+
✅ Đăng nhập thành công!
|
|
58
|
+
│
|
|
59
|
+
▼
|
|
60
|
+
git-push-time
|
|
61
|
+
│
|
|
62
|
+
├── 📁 1. Chọn folder project
|
|
63
|
+
│
|
|
64
|
+
├── 👤 2. Chọn GitHub account
|
|
65
|
+
│
|
|
66
|
+
├── 📦 3. Chọn repository (chọn có sẵn / tạo mới trực tiếp / dán URL)
|
|
67
|
+
│
|
|
68
|
+
├── 🌿 4. Chọn branch
|
|
69
|
+
│
|
|
70
|
+
├── 💬 5. Nhập commit message
|
|
71
|
+
│
|
|
72
|
+
├── ⏰ 6. Chọn commit time (ngay bây giờ / backdate lùi giờ / ngày cụ thể)
|
|
73
|
+
│
|
|
74
|
+
└── 🚀 7. Push (quét secret, commit & đẩy lên remote)
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
---
|
|
78
|
+
|
|
79
|
+
## 🛠️ Hướng dẫn sử dụng
|
|
80
|
+
|
|
81
|
+
### 1. Bảng điều khiển tương tác (Interactive Dashboard)
|
|
82
|
+
Mở terminal tại thư mục dự án và chạy:
|
|
83
|
+
```bash
|
|
84
|
+
git-push-time
|
|
85
|
+
```
|
|
86
|
+
Menu tương tác chính sẽ xuất hiện với các phân mục rõ ràng:
|
|
87
|
+
- `» [PUSH] | Đẩy code lên Git (kèm chọn folder, backdate & chống lộ secret)`
|
|
88
|
+
- `» [GITHUB] | Quản lý GitHub & Tạo repository mới`
|
|
89
|
+
- `» [PULL] | Cập nhật code mới về máy (Fast-forward / Rebase)`
|
|
90
|
+
- `» [TIME] | Sửa thời gian commit lịch sử`
|
|
91
|
+
- `» [FIX] | Quét & gỡ sạch secret khỏi repo`
|
|
92
|
+
- `x [THOÁT] | Kết thúc chương trình`
|
|
93
|
+
|
|
94
|
+
---
|
|
95
|
+
|
|
96
|
+
### 2. Tính năng GitHub & Tạo Repository
|
|
97
|
+
|
|
98
|
+
#### Tạo Repository mới trên GitHub ngay lập tức:
|
|
99
|
+
```bash
|
|
100
|
+
git-push-time github create
|
|
101
|
+
```
|
|
102
|
+
Hệ thống sẽ hỏi bạn:
|
|
103
|
+
1. **Tên Repository** (Mặc định tự lấy theo tên folder hiện tại).
|
|
104
|
+
2. **Mô tả dự án**.
|
|
105
|
+
3. **Quyền riêng tư**: Public hoặc Private.
|
|
106
|
+
4. **Hỏi đẩy code ngay**: Nếu chọn Có, CLI sẽ tự động liên kết remote và đẩy toàn bộ source code của bạn lên repo vừa tạo!
|
|
107
|
+
|
|
108
|
+
#### Xem thông tin tài khoản GitHub đang kết nối:
|
|
109
|
+
```bash
|
|
110
|
+
git-push-time github whoami
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
#### Liệt kê các Repository trên tài khoản GitHub của bạn:
|
|
114
|
+
```bash
|
|
115
|
+
git-push-time github repos
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
#### Đăng nhập bằng Personal Access Token (PAT):
|
|
119
|
+
```bash
|
|
120
|
+
git-push-time github login
|
|
121
|
+
```
|
|
122
|
+
*(Token cần có quyền `repo` để tạo và quản lý repository)*.
|
|
123
|
+
|
|
124
|
+
#### Đăng xuất:
|
|
125
|
+
```bash
|
|
126
|
+
git-push-time github logout
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
---
|
|
130
|
+
|
|
131
|
+
### 3. Đẩy dự án bằng tham số dòng lệnh (Command Line Flags)
|
|
132
|
+
|
|
133
|
+
#### Ví dụ 1: Lùi thời gian commit 2 ngày trước
|
|
134
|
+
```bash
|
|
135
|
+
git-push-time -r https://github.com/username/my-repo.git -d "-2d" -m "Initial commit"
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
#### Ví dụ 2: Đặt ngày giờ commit cụ thể trong quá khứ
|
|
139
|
+
```bash
|
|
140
|
+
git-push-time -r https://github.com/username/my-repo.git -d "2024-01-15 14:30:00" -m "Add core features"
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
#### Ví dụ 3: Đẩy tự động không hỏi lại (-y) và tự gỡ secret (--fix)
|
|
144
|
+
```bash
|
|
145
|
+
git-push-time -r https://github.com/username/my-repo.git -d "-5h" -m "Update docs" -b main -y --fix
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
#### Ví dụ 4: Chỉ push đúng 1 thư mục con (khi đứng ở thư mục gốc ngoài cùng)
|
|
149
|
+
```bash
|
|
150
|
+
git-push-time -r https://github.com/username/my-repo.git -m "Init" --dir ./my-app -y
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
---
|
|
154
|
+
|
|
155
|
+
### 4. Các lệnh độc lập khác
|
|
156
|
+
|
|
157
|
+
#### Quét và tự động làm sạch Secret:
|
|
158
|
+
```bash
|
|
159
|
+
git-push-time fix
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
#### Cập nhật code mới từ remote:
|
|
163
|
+
```bash
|
|
164
|
+
git-push-time pull
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
#### Sửa đổi thời gian commit cũ trong lịch sử:
|
|
168
|
+
```bash
|
|
169
|
+
git-push-time edit-time
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
---
|
|
173
|
+
|
|
174
|
+
## 📊 Bảng định dạng thời gian hỗ trợ
|
|
175
|
+
|
|
176
|
+
| Định dạng ví dụ | Ý nghĩa |
|
|
177
|
+
| :--- | :--- |
|
|
178
|
+
| `now` hoặc để trống | Thời gian hiện tại |
|
|
179
|
+
| `-2d` hoặc `2d` | Lùi lại 2 ngày |
|
|
180
|
+
| `-5h` hoặc `5h` | Lùi lại 5 giờ |
|
|
181
|
+
| `-30m` hoặc `30m` | Lùi lại 30 phút (m = minute) |
|
|
182
|
+
| `-1w` hoặc `1w` | Lùi lại 1 tuần |
|
|
183
|
+
| `-3M` / `-3mo` / `-3month` | Lùi lại 3 tháng (M = month, phân biệt hoa/thường với m = minute) |
|
|
184
|
+
| `2024-01-15 14:30:00` | Ngày 15/01/2024 lúc 14 giờ 30 phút |
|
|
185
|
+
| `2024-01-15` | Ngày 15/01/2024 |
|
|
186
|
+
|
|
187
|
+
---
|
|
188
|
+
|
|
189
|
+
## 🏛️ Cấu trúc mã nguồn
|
|
190
|
+
|
|
191
|
+
```
|
|
192
|
+
cli/
|
|
193
|
+
├── bin/
|
|
194
|
+
│ └── index.js # CLI Entrypoint & Commander Dispatcher
|
|
195
|
+
├── lib/
|
|
196
|
+
│ ├── config.js # Quản lý config & GitHub Token local
|
|
197
|
+
│ ├── github.js # Tương tác GitHub REST API (verify, repos, create)
|
|
198
|
+
│ ├── git.js # Các tác vụ Git cốt lõi
|
|
199
|
+
│ ├── secrets.js # Quét phát hiện secret trong code & stage
|
|
200
|
+
│ ├── fix.js # Thuật toán gỡ secret & squash unpushed
|
|
201
|
+
│ ├── utils.js # Validate url & parse custom datetime
|
|
202
|
+
│ ├── prompt-helpers.js # Interactive prompt helpers có nút Back '..'
|
|
203
|
+
│ ├── ui.js # Design System: Banner, Dashboard, Box & Badges
|
|
204
|
+
│ └── commands/
|
|
205
|
+
│ ├── push.js # Wizard push thông minh tích hợp GitHub
|
|
206
|
+
│ ├── github.js # Lệnh & Menu quản lý GitHub / Tạo repo
|
|
207
|
+
│ ├── pull.js # Lệnh pull code (--ff-only, --rebase)
|
|
208
|
+
│ ├── edit-time.js # Lệnh sửa thời gian commit lịch sử
|
|
209
|
+
│ └── fix.js # Lệnh quét & sửa secret độc lập
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
---
|
|
213
|
+
|
|
214
|
+
## 📄 License
|
|
215
|
+
Phát hành theo giấy phép **MIT**.
|