aedev.net
  • Trang chủ
  • AI
  • Mobile
  • Flutter
  • React Native
  • Backend
  • DevOps
  • Hướng dẫn
No Result
View All Result
SAVED POSTS
aedev.net
  • Trang chủ
  • AI
  • Mobile
  • Flutter
  • React Native
  • Backend
  • DevOps
  • Hướng dẫn
No Result
View All Result
aedev.net
No Result
View All Result
Minh họa dùng SSH key để kết nối GitHub an toàn

Git worktree: sửa hotfix khi nhánh hiện tại đang làm dở

Suong Nguyen by Suong Nguyen
22/10/2026
in Hướng dẫn
0
585
SHARES
3.2k
VIEWS
Summarize with ChatGPTShare to Facebook

Bạn đang refactor một tính năng, có cả file đã sửa và file mới chưa commit. Đúng lúc đó cần sửa lỗi đăng nhập trên nhánh phát hành. Một worktree bổ sung cho phép mở thư mục khác để làm hotfix, trong khi thư mục hiện tại vẫn giữ công việc đang dở.

Hướng dẫn dùng các lệnh Git worktree cơ bản, đối chiếu tài liệu chính thức ngày 22/10/2026. Tên nhánh, đường dẫn và remote trong ví dụ là lựa chọn cho tình huống minh họa; cần thay bằng giá trị đúng của repository đang dùng.

Worktree chia sẻ gì và tách gì?

Các worktree liên kết dùng chung repository và lịch sử Git. Mỗi thư mục có working tree, index và HEAD phục vụ lần checkout của nó. Nhờ đó, bạn có thể sửa các file trên hai nhánh trong hai thư mục mà không phải liên tục chuyển nhánh trong cùng một thư mục.

Tuy nhiên, chúng không phải hai bản sao hoàn toàn độc lập. Những thao tác thay đổi lịch sử hoặc ref dùng chung vẫn cần được hiểu rõ. Một file .env, thư mục dependency hay database cục bộ cũng không tự được sao chép sang worktree mới.

1. Ghi nhận trạng thái trước khi tạo

Chạy trong thư mục repository đang làm dở:

git --version
git status --short
git branch --show-current
git worktree list
git remote -v

status giúp bạn nhận biết những thay đổi nào phải còn nguyên sau khi tạo hotfix. worktree list cho biết một nhánh có thể đã được mở ở thư mục khác. Không cần commit tạm chỉ để đi qua bước này, nhưng vẫn nên hiểu file mới nào chưa được Git theo dõi.

Trong phần tiếp theo, giả sử repository có remote origin và nhánh gốc cần sửa là origin/main. Nếu sản phẩm phát hành từ một nhánh release khác, dùng đúng nhánh đó. Chọn sai điểm xuất phát có thể khiến hotfix mang theo những thay đổi chưa có trong bản đang chạy.

2. Mở thư mục dành cho hotfix

git fetch origin
git worktree add -b hotfix/login-timeout ../app-hotfix origin/main
git -C ../app-hotfix status --short
git -C ../app-hotfix branch --show-current
git worktree list

Lệnh add -b tạo nhánh mới tại điểm xuất phát đã chỉ định, rồi checkout nó vào thư mục anh em ../app-hotfix. Sau đó, xác nhận tên nhánh trước khi sửa code. Nếu nhánh hotfix/login-timeout đã tồn tại, dừng để kiểm tra thay vì đổi sang một tùy chọn có thể reset nhánh đó.

Mở một cửa sổ editor hoặc terminal tại thư mục mới. Với dự án Node.js, việc cài dependency và cấu hình biến môi trường vẫn phải được thực hiện cho thư mục đó theo hướng dẫn repository. Không copy secret từ nơi khác theo thói quen, và không giả định hai dev server có thể dùng cùng cổng hoặc cùng database mà không ảnh hưởng nhau.

3. Sửa và kiểm tra đúng phạm vi

Thực hiện thay đổi tối thiểu cho lỗi cần sửa. Chạy bộ kiểm tra phù hợp của dự án, xem diff và xác nhận không lẫn file môi trường hoặc dữ liệu sinh ra. Ví dụ kiểm tra trạng thái:

git -C ../app-hotfix diff
git -C ../app-hotfix status --short
git status --short

Lệnh cuối vẫn chạy ở worktree ban đầu, giúp đối chiếu công việc dở trước đó. Một worktree sạch ở nhánh hotfix không có nghĩa worktree gốc phải sạch; hai trạng thái này được nhìn ở hai thư mục khác nhau.

Sau khi đã rà soát, commit theo quy ước dự án và gửi hotfix qua quy trình review/release của team. Worktree không tự quyết định cách merge, cherry-pick hay triển khai. Các bước đó phụ thuộc nhánh phát hành và chính sách repository, nên không có một lệnh push phù hợp cho mọi trường hợp.

4. Dọn thư mục khi công việc đã được lưu

Trước khi dọn, bảo đảm commit và mọi dữ liệu cần giữ đã được lưu đúng nơi. Từ worktree gốc:

git -C ../app-hotfix status --short
git worktree remove ../app-hotfix
git worktree list

Mặc định, Git từ chối xóa worktree còn thay đổi hoặc file chưa theo dõi. Hãy xem nguyên nhân thay vì dùng --force cho qua. Một file log thử nghiệm có thể bỏ được, nhưng một file cấu hình chưa lưu hoặc dữ liệu cần giữ phải được xử lý có chủ đích.

Xóa worktree không tự xóa nhánh hotfix. Chỉ dọn nhánh theo quy trình team sau khi đã xác nhận công việc được tích hợp hoặc lưu giữ. Cũng nên dùng git worktree remove thay vì xóa thư mục bằng trình quản lý file để metadata được quản lý nhất quán.

Các vướng mắc thường gặp

Nếu Git báo nhánh đã checkout ở nơi khác, xem git worktree list và dùng thư mục đó hoặc tạo một nhánh mới đúng mục đích. Rào chắn này giúp tránh hai thư mục cùng cập nhật trạng thái của một nhánh theo cách khó kiểm soát.

Nếu cần giữ worktree trên ổ tháo rời, tìm hiểu git worktree lock và unlock trước khi tháo ổ hoặc dọn metadata. Nếu đã di chuyển thư mục ngoài Git, kiểm tra tài liệu repair; prune dùng để dọn metadata của worktree không còn tồn tại, không phải lệnh thay thế cho việc bảo toàn dữ liệu.

Kết luận

Worktree hữu ích khi bạn cần đổi ngữ cảnh mà vẫn muốn nhìn rõ mỗi công việc trong một thư mục riêng. Thói quen quan trọng là kiểm tra điểm xuất phát, nhánh đang checkout, cấu hình runtime và trạng thái cần giữ trước khi dọn.

Nguồn tham khảo

  • Git: git-worktree
  • Git: git-switch và trạng thái nhánh

Tags: GitQuy trình phát triểnWorktree
SummarizeShare234
Suong Nguyen

Suong Nguyen

Related Stories

Minh họa pipeline CI/CD từ commit đến deploy cho team nhỏ

Git bisect: tìm commit gây lỗi bằng một bài kiểm tra nhỏ

by Suong Nguyen
21/10/2026
0

Khoanh vùng commit làm hỏng hành vi bằng git bisect, phân biệt lỗi cần tìm với commit không thể kiểm tra và kết thúc phiên điều tra đúng...

Minh họa ứng dụng React Native kết nối nhiều SDK như analytics, maps, authentication, payment và push notification

Tích hợp SDK trong React Native: quy trình thực chiến từ cài đặt đến release

by admin
28/08/2026
2

Hướng dẫn tích hợp SDK trong React Native: cấu hình Android, iOS, API key, permission, adapter, Analytics, Crashlytics, Maps, Payment, Auth và checklist release.

Minh họa Firebase Cloud Messaging gửi push notification tới ứng dụng React Native trên Android và iOS

Hướng dẫn tích hợp Firebase Cloud Messaging (FCM) vào React Native từ A-Z

by admin
02/08/2026
0

Hướng dẫn tích hợp Firebase Cloud Messaging vào React Native từ A-Z: Android, iOS/APNs, quyền notification, FCM token, foreground, background và backend.

Minh họa các hook nâng cao trong React Native kết nối với ứng dụng mobile

Các hook nâng cao trong React Native: dùng đúng để code gọn và tối ưu hiệu năng

by admin
30/07/2026
0

Hướng dẫn chi tiết các hook nâng cao trong React Native: useReducer, useContext, useMemo, useCallback, useRef, transition, custom hook và tối ưu hiệu năng.

0 0 votes
Article Rating
Subscribe
Login
Notify of
guest
guest
0 Comments
Oldest
Newest Most Voted
AE Dev

AE Dev mang đến các bài viết về lập trình, mobile app, backend, frontend, WordPress và công nghệ, phù hợp cho developer muốn học hỏi và cập nhật kiến thức thực tế.

Recent Posts

  • React Native: tránh bàn phím che form với KeyboardAvoidingView và ScrollView
  • Phỏng vấn JavaScript: giải thích event loop, microtask và async/await
  • Deep link mobile an toàn: đúng domain chưa đủ, còn route và quyền đọc

Categories

  • AI
  • Backend
  • Đánh giá
  • DevOps
  • Flutter
  • Hướng dẫn
  • Lập trình Mobile
  • Phỏng vấn
  • React Native
  • Uncategorized

Weekly Newsletter

  • Buy JNews
  • Support Forum
  • Pre-sale Question
  • Contact Us

© 2026 AE Dev - Blog công nghệ, lập trình và chia sẻ kiến thức IT.

Welcome Back!

Login to your account below

Forgotten Password?

Retrieve your password

Please enter your username or email address to reset your password.

Log In
No Result
View All Result
  • Trang chủ
  • AI
  • Mobile
  • React Native
  • Backend
  • DevOps
  • Hướng dẫn
  • Flutter

© 2026 AE Dev - Blog công nghệ, lập trình và chia sẻ kiến thức IT.

wpDiscuz
0
0
Would love your thoughts, please comment.x
()
x
| Reply