Reset submodule to checkout state in git

  sonic0002        2020-09-05 08:30:57       23,322        0          English  简体中文  繁体中文  ภาษาไทย  Tiếng Việt 

Đôi khi sẽ có một mô-đun con hoặc một số mô-đun con trong một kho lưu trữ git, trong một số trường hợp, mô-đun con có thể không đồng bộ với trạng thái checkout vì một số tệp trong mô-đun con có thể bị thay đổi bất ngờ. Làm thế nào để đặt lại mô-đun con về trạng thái checkout ban đầu?

Hãy lấy một ví dụ rằng chúng ta có một kho lưu trữ git A và có một mô-đun con gọi là ruby-gems bên trong nó. Giả sử mô-đun con ở nguồn từ xa có commit a.

Và trên môi trường cục bộ của chúng ta, kho lưu trữ A có một commit mới nhất của mô-đun con gây ra một số khác biệt.

$ git diff
diff --git a/web-api/ruby-gems b/web-api/ruby-gems
index 0359dc84d..8a711275a 160000
--- a/web-api/ruby-gems
+++ b/web-api/ruby-gems
@@ -1 +1 @@
-Subproject commit 0359dc84d22adf0e131165b72b3209318605dfe3
+Subproject commit 8a711275a4c34bd8cc22b07894931fa1743c5707

Bây giờ chúng ta muốn đặt lại commit mô-đun con của kho lưu trữ A về 0359dc84d22adf0e131165b72b3209318605dfe3 để không có sự khác biệt giữa kho lưu trữ cục bộ và từ xa.

$ git status
On branch master
Your branch is up to date with 'origin/master'.

Changes not staged for commit:
  (use "git add ..." to update what will be committed)
  (use "git restore ..." to discard changes in working directory)
	modified:   web-api/ruby-gems (new commits)

no changes added to commit (use "git add" and/or "git commit -a")

Nó có thể không hoạt động nếu chúng ta chỉ chạy git reset --hard, trong trường hợp này, chúng ta có thể chạy lệnh git submodule để đặt lại mô-đun con về trạng thái checkout của nó.

$ git submodule update --init
Submodule path 'web-api/ruby-gems': checked out '0359dc84d22adf0e131165b72b3209318605dfe3'

Từ đầu ra ở trên, trạng thái mô-đun con được đưa trở lại trạng thái checkout của nó. Có thể kiểm tra nó bằng lệnh bên dưới sau đó.

$ git status
On branch master
Your branch is up to date with 'origin/master'.

nothing to commit, working tree clean

Nếu có nhiều mô-đun con và muốn đặt lại trạng thái tất cả các mô-đun con về trạng thái checkout, có thể chạy lệnh bên dưới.

git submodule foreach --recursive git submodule update --init

Chúc lập trình vui vẻ.

GIT RESET  GIT SUBMODULE 

       

  RELATED


  0 COMMENT


No comment for this article.



  RANDOM FUN

When user requirement changes