Cách xóa cam kết Git trong khi vẫn giữ các thay đổi

Cách xóa cam kết Git trong khi vẫn giữ các thay đổi
Cách xóa cam kết Git trong khi vẫn giữ các thay đổi

Tổng quan về đảo ngược cam kết Git

Trong phát triển phần mềm, việc quản lý kiểm soát phiên bản bằng Git là điều cần thiết. Đôi khi, các nhà phát triển thực hiện các cam kết tạm thời để lưu trạng thái công việc của họ trước khi chuyển nhánh cho các nhiệm vụ như trình diễn hoặc thử nghiệm các tính năng khác. Cách thực hành này giữ cho quy trình làm việc linh hoạt nhưng có thể dẫn đến những thay đổi tạm thời mà không trở thành vĩnh viễn.

Điều này đưa ra nhu cầu về các kỹ thuật để hoàn nguyên các cam kết mà không làm mất công việc đã hoàn thành. Nếu bạn đã thực hiện các thay đổi tạm thời và cần quay lại mà không ảnh hưởng đến tiến độ dự án của mình thì việc hiểu cách hoàn tác các cam kết này trong khi vẫn giữ lại các sửa đổi là rất quan trọng.

Yêu cầu Sự miêu tả
git reset --soft HEAD^ Hoàn tác cam kết cuối cùng trong nhánh hiện tại, nhưng các thay đổi vẫn được giữ nguyên (tức là sẵn sàng để được thực hiện lại).
git reset HEAD~1 Di chuyển nhánh hiện tại trở lại bằng một lần xác nhận, loại bỏ hiệu quả lần xác nhận cuối cùng nhưng để lại các thay đổi trong thư mục làm việc.
git add . Thêm tất cả các tệp đã thay đổi trong thư mục hiện tại vào khu vực tổ chức, chuẩn bị cho chúng được chuyển giao.
git commit -m "Your message here" Tạo một cam kết mới với tất cả các thay đổi hiện đang được thực hiện và bao gồm thông báo cam kết do người dùng cung cấp.
git push origin development-branch Đẩy các cam kết từ 'nhánh phát triển' cục bộ sang nhánh từ xa tương ứng.
git push origin development-branch -f Đẩy mạnh các cam kết đến nhánh từ xa, có khả năng ghi đè các thay đổi trong kho lưu trữ từ xa. Sử dụng một cách thận trọng.

Giải thích về tập lệnh đảo ngược Git

Các tập lệnh được cung cấp trước đó được thiết kế để quản lý và đảo ngược các thay đổi trong kho Git mà không làm mất các sửa đổi được thực hiện đối với cơ sở mã. Các git reset --soft HEAD^ lệnh là quan trọng, vì nó hoàn tác cam kết gần đây nhất trên nhánh hiện tại trong khi vẫn giữ tất cả các thay đổi ở trạng thái theo giai đoạn. Điều này đặc biệt hữu ích khi một cam kết được thực hiện sớm hoặc chỉ đơn giản là một trình giữ chỗ tạm thời. Khả năng hoàn nguyên một cam kết trong khi vẫn giữ lại các sửa đổi tệp cho phép nhà phát triển đánh giá lại và cam kết lại các thay đổi nếu cần.

Sau khi thiết lập lại, các lệnh như git add .git commit -m "New commit message" được sử dụng để sắp xếp lại và thực hiện các thay đổi bằng thông báo cam kết phù hợp hơn. Chuỗi hành động này đảm bảo rằng cam kết tạm thời không can thiệp vào lịch sử của nhánh trong khi vẫn duy trì tính toàn vẹn của công việc được thực hiện. Ngoài ra, git push được sử dụng để cập nhật kho lưu trữ từ xa bằng cam kết mới, thay thế kho lưu trữ tạm thời nếu buộc đẩy git push -f được coi là cần thiết dựa trên các tiêu chuẩn hợp tác của dự án.

Hoàn nguyên các cam kết Git tạm thời mà không làm mất dữ liệu

Sử dụng giao diện dòng lệnh Git

git checkout development-branch
git reset --soft HEAD^
# Now the changes are staged but the last commit is undone.
git status
# Shows staged changes. You can now modify if necessary, or commit again.
git add .
git commit -m "New commit after undoing temporary commit"
git log
# Confirm the new commit history.
git push origin development-branch

Xử lý các cam kết tạm thời trong Git để bảo toàn các thay đổi mã

Áp dụng lệnh Git để kiểm soát phiên bản linh hoạt

git checkout development-branch
git reset HEAD~1
# This command undoes the last commit and leaves the changes in your working directory.
git status
# You can see the changes are not staged for commit.
git add .
git commit -m "Recommitting the preserved changes"
git log
# Check to make sure the history is as expected.
git push origin development-branch -f

Kỹ thuật Git nâng cao cho những thay đổi tạm thời

Mở rộng khả năng của Git để xử lý các thay đổi tạm thời một cách hiệu quả, điều quan trọng là phải hiểu khái niệm 'stashing'. Git stash là một công cụ mạnh mẽ giúp lưu tạm thời các thay đổi chưa được cam kết mà không cần phải đưa chúng vào lịch sử phiên bản. Tính năng này hữu ích khi các nhà phát triển cần nhanh chóng chuyển đổi ngữ cảnh giữa các nhánh mà không phải thực hiện công việc còn dang dở. Stash bảo tồn cả những thay đổi theo giai đoạn và không theo giai đoạn và có thể được khôi phục sau đó, điều này lý tưởng để xử lý những thay đổi trọng tâm không mong muốn trong quá trình phát triển.

Một khía cạnh quan trọng khác là hiểu được ý nghĩa của việc đẩy lực bằng git push -f. Lệnh này có thể ghi đè lên lịch sử trong kho lưu trữ từ xa, rất hữu ích khi cần sửa các cam kết được thực hiện do lỗi hoặc tạm thời. Tuy nhiên, nó nên được sử dụng một cách thận trọng vì nó có thể dẫn đến việc các thành viên khác trong nhóm bị mất cam kết nếu không được truyền đạt đúng cách. Hiểu được các kỹ thuật nâng cao này cho phép các nhà phát triển duy trì lịch sử dự án rõ ràng và hiệu quả trong môi trường cộng tác.

Câu hỏi thường gặp về Thay đổi tạm thời của Git

  1. Mục đích của việc này là gì git reset --soft HEAD^?
  2. Lệnh này được sử dụng để hoàn tác lần xác nhận cuối cùng trong nhánh hiện tại của bạn, nhưng nó vẫn giữ các thay đổi theo giai đoạn.
  3. Làm cách nào để lưu những thay đổi mà tôi không muốn thực hiện ngay lập tức?
  4. Bạn có thể dùng git stash để lưu trữ tạm thời những thay đổi chưa được cam kết của bạn.
  5. Có thể khôi phục các thay đổi đã được lưu trữ không?
  6. Có, bằng cách sử dụng số 8 bạn có thể áp dụng lại các thay đổi đã được lưu trữ trước đó và xóa chúng khỏi danh sách lưu trữ.
  7. Rủi ro khi sử dụng là gì git push -f?
  8. Việc ép buộc có thể ghi đè lên các thay đổi trong kho lưu trữ từ xa, có khả năng gây mất tác phẩm cho người khác nếu không sử dụng cẩn thận.
  9. Tôi có thể hoàn tác một kho lưu trữ git không?
  10. Việc hoàn tác một stash có thể được thực hiện bằng cách lưu lại các thay đổi hoặc đơn giản là không áp dụng stash.

Suy nghĩ cuối cùng về việc quản lý các cam kết tạm thời trong Git

Quản lý hiệu quả các cam kết tạm thời trong Git cho phép các nhà phát triển duy trì lịch sử dự án rõ ràng và đảm bảo rằng tất cả các thay đổi đều được tính đến, ngay cả khi các ưu tiên thay đổi. Bằng cách tận dụng các lệnh như git reset, git stash và git push, nhà phát triển có thể điều khiển qua nhiều tình huống phát triển khác nhau mà không làm mất đi những thay đổi quan trọng. Những công cụ này rất cần thiết cho bất kỳ nhà phát triển nào muốn nâng cao phương pháp kiểm soát phiên bản của họ và đảm bảo rằng dự án của họ vẫn có thể thích ứng với những nhu cầu phát triển đang thay đổi.