2008-11-10 29 views
5

Sau một thời gian tôi muốn cập nhật repo git của tôi, và sau đó một cái gì đó đã đi sai. Cách thích hợp ra khỏi tình huống này là gì?Làm thế nào để cập nhật một repo git có chứa một submodule?

[email protected]:~/src/psi/ $ git status 
iris: needs merge 
# On branch master 
# Changes to be committed: 
# (use "git reset HEAD <file>..." to unstage) 
# 
# modified: src/common.cpp 
# 
# Changed but not updated: 
# (use "git add <file>..." to update what will be committed) 
# 
# unmerged: iris 
# 
# Untracked files: 
# (use "git add <file>..." to include in what will be committed) 
# 
# gupdate.sh 
[email protected]:~/src/psi/ $ git submodule status 
+cf237ef8f3d9dc058dbde47e6973e6388608ce60 iris (heads/master) 
+cf237ef8f3d9dc058dbde47e6973e6388608ce60 iris (heads/master) 
+cf237ef8f3d9dc058dbde47e6973e6388608ce60 iris (heads/master) 
[email protected]:~/src/psi/ $ cd iris 
[email protected]:~/src/psi/iris/ $ cat .git/HEAD 
cf237ef8f3d9dc058dbde47e6973e6388608ce60 

Trả lời

5

Khi nói đến git submodules, hầu hết các vấn đề bạn gặp phải có thể được giải quyết bằng cách:

1. deleting the submodule (rm -r iris) 
2. recreating it again (git submodule update) 

Rõ ràng nếu bạn đã thực hiện những thay đổi địa phương để submodule của bạn này sẽ xóa chúng vĩnh viễn, vì vậy nếu bạn có các thay đổi cục bộ đảm bảo bạn đã đẩy chúng trước tiên.

+1

Thú vị đủ, tôi đã thử nó và không thực sự giúp đỡ, nó vẫn nói rằng 'iris' là unmerged sau khi tôi đã cập nhật nó từ đầu. Và đáng ngạc nhiên nhất, vấn đề biến mất sau 'git add iris'. – mblsha

+1

cách này hoạt động, nhưng tại sao lại là cách chính xác để xử lý việc này? –

3

Tôi đã đăng tương tự question đây trên stackoverflow và kết thúc trả lời nó bản thân mình, nhưng tôi thấy rằng sử dụng git reset HEAD iris làm việc cho vấn đề của tôi với xung đột submodule.

Các vấn đề liên quan