0
0
Lập trình
TT

Cách Đặt Lại Kho Git Từ Xa Để Phù Hợp Với Trạng Thái Cục Bộ

Đăng vào 7 tháng trước

• 4 phút đọc

Hướng Dẫn Đặt Lại Kho Git Từ Xa Để Phù Hợp Với Trạng Thái Cục Bộ

Làm việc với Git và GitHub rất tuyệt vời cho đến khi một lỗi hoặc commit không mong muốn được đẩy lên kho từ xa. Đôi khi, bạn cần khôi phục lại những sai lầm đó và buộc kho từ xa khớp với trạng thái cục bộ đã được sửa. Điều này cần phải được thực hiện một cách cẩn thận để tránh gây rối cho các cộng tác viên và mất mát dữ liệu quan trọng.

Bài hướng dẫn này sẽ hướng dẫn bạn cách an toàn và hiệu quả nhất để đặt lại kho từ xa về một commit cụ thể trong kho cục bộ của bạn, đồng thời nhấn mạnh những biện pháp phòng ngừa quan trọng.

Mục Lục

  1. Sao Lưu Trạng Thái Hiện Tại
  2. Lấy Thay Đổi Mới Nhất Từ Kho Từ Xa
  3. Đặt Lại Nhánh Cục Bộ Về Commit Mong Muốn
  4. Đẩy Lại Để Ghi Đè Lịch Sử Kho Từ Xa
  5. Cảnh Báo Quan Trọng và Thực Tiễn Tốt Nhất
  6. Tóm Tắt

Sao Lưu Trạng Thái Hiện Tại

Trước khi thực hiện bất kỳ thay đổi nào có thể ghi đè lịch sử, hãy sao lưu nhánh cục bộ hiện tại của bạn. Điều này giúp bạn tránh mất dữ liệu do sự cố và cho phép bạn khôi phục lại các thay đổi nếu cần.

bash Copy
git branch backup-before-force-push

Lệnh này tạo ra một nhánh mới backup-before-force-push để bảo tồn trạng thái hiện tại của bạn.


Lấy Thay Đổi Mới Nhất Từ Kho Từ Xa

Hãy chắc chắn rằng kho Git cục bộ của bạn có thông tin mới nhất từ kho từ xa:

bash Copy
git fetch origin

Lệnh này cập nhật tất cả các nhánh theo dõi từ xa mà không thay đổi nhánh cục bộ hoặc thư mục làm việc của bạn.


Đặt Lại Nhánh Cục Bộ Về Commit Mong Muốn

Xác định hash commit mà bạn muốn đặt lại (trạng thái tốt cuối cùng đã biết). Sau đó, đặt lại nhánh cục bộ của bạn một cách cứng về commit đó:

bash Copy
git reset --hard <good-commit-hash>

Thay thế <good-commit-hash> bằng ID commit thực tế. Lệnh này sẽ di chuyển con trỏ nhánh của bạn và làm cho thư mục làm việc của bạn khớp chính xác với commit đã chỉ định.


Đẩy Lại Để Ghi Đè Lịch Sử Kho Từ Xa

Bây giờ mà nhánh cục bộ của bạn đã ở commit đúng, bạn cần đẩy lại để cập nhật kho từ xa:

bash Copy
git push --force-with-lease origin main

Lệnh này ghi đè nhánh từ xa main bằng trạng thái nhánh cục bộ của bạn.

  • --force-with-lease an toàn hơn so với một lệnh ghi đè đơn giản vì nó kiểm tra xem nhánh từ xa đã thay đổi kể từ lần bạn lấy về gần nhất, ngăn bạn ghi đè lên công việc của người khác một cách vô tình.

  • Thay thế main bằng tên nhánh của bạn nếu khác.


Cảnh Báo Quan Trọng và Thực Tiễn Tốt Nhất

  • Giao tiếp với nhóm: Nếu làm việc với cộng tác viên, hãy thông báo cho họ trước khi ghi lại lịch sử. Họ sẽ cần đồng bộ hóa lại kho cục bộ của mình sau đó để tránh xung đột.

  • Sao lưu các thay đổi quan trọng: Kiểm tra kỹ lưỡng rằng bạn đã lưu giữ bất kỳ công việc nào không nên bị mất, vì git reset --hard và đẩy lại sẽ loại bỏ các thay đổi từ cả kho cục bộ và từ xa.

  • Ghi đè cẩn thận: Việc ghi đè lịch sử có thể gây nhầm lẫn nếu không được thực hiện cẩn thận, vì vậy hãy sử dụng --force-with-lease bất cứ khi nào có thể.

  • Chuẩn bị cho cộng tác viên đặt lại nhánh cục bộ của họ: Bất kỳ ai đã kéo các commit trước đó sẽ cần phải đặt lại hoặc clone lại để đồng bộ với lịch sử đã được ghi lại.


Tóm Tắt

Đặt lại kho Git từ xa để khớp với trạng thái cục bộ sạch sẽ bao gồm:

  1. Sao lưu nhánh cục bộ hiện tại của bạn
  2. Lấy các thay đổi mới nhất từ kho từ xa
  3. Đặt lại nhánh cục bộ của bạn về một commit đã biết là tốt
  4. Đẩy lại nhánh đã được cập nhật của bạn lên kho từ xa bằng --force-with-lease

Bằng cách làm theo các bước này một cách cẩn thận và giao tiếp hiệu quả, bạn có thể an toàn khôi phục lại các sai lầm đã được đẩy lên GitHub và duy trì lịch sử dự án sạch sẽ.


Cách tiếp cận này đảm bảo rằng kho cục bộ và từ xa của bạn hoàn toàn khớp nhau trong khi giảm thiểu rủi ro liên quan đến việc ghi đè lịch sử chung.

Nếu không chắc chắn, hãy luôn tạo bản sao lưu và phối hợp với nhóm của bạn!


Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào