Giải pháp: xóa --cached
từ git rm -r --cached submodule/name
. Scripted để tham khảo.git rm -r --cách không loại bỏ thư mục con và nội dung
Tôi đang cố xóa một mô-đun con git dựa trên this SO answer, nhưng mô-đun con không bị xóa.
Tôi thêm mô-đun con, cam kết các thay đổi, sau đó xóa nó bằng cách sử dụng git rm -r --cached $path/to/submodule
(trừ dấu sau /), cam kết các thay đổi, nhưng mô-đun con vẫn ở đó.
Tôi có thể sử dụng rm -rf submodules/lift_sbt_24
để xóa thư mục và nội dung, nhưng tại sao không phải là git rm -r --cached
làm điều đó?
(xóa các phần có liên quan từ .gitmodules hoạt động tốt, không có vấn đề, do đó không đề cập ở đây)
Đây là git 1.7.5.4 trên Ubuntu 11.10, fwiw. Ví dụ hoàn chỉnh:
$> git submodule add [email protected]:lift-stack/lift_24_sbt.git submodules/lift_24_sbt
Adding submodule from repo [email protected]:lift-stack/lift_24_sbt.git as submodules/lift_24_sbt
Cloning into submodules/lift_24_sbt...
remote: Counting objects: 619, done.
remote: Compressing objects: 100% (375/375), done.
remote: Total 619 (delta 172), reused 593 (delta 147)
Receiving objects: 100% (619/619), 1.74 MiB | 112 KiB/s, done.
Resolving deltas: 100% (172/172), done.
$> git status
# On branch master
# Your branch is ahead of 'origin/master' by 1 commits.
#
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# modified: .gitmodules
# new file: submodules/lift_24_sbt
#
$> git add -a
$> git commit 'added submodules/lift_24_sbt'
[master 9894113] update
2 files changed, 4 insertions(+), 0 deletions(-)
create mode 160000 submodules/lift_24_sbt
$> git rm -r --cached submodules/lift_24_sbt
rm 'submodules/lift_24_sbt'
$> git status
# On branch master
# Your branch is ahead of 'origin/master' by 1 commits.
#
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# deleted: submodules/lift_24_sbt
#
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# submodules/lift_24_sbt/
$> git add -a
$> git commit -m 'deleted submodules/lift_24_sbt'
# On branch master
# Your branch is ahead of 'origin/master' by 1 commits.
#
nothing to commit (working directory clean)
$> ls -al submodules/lift_24_sbt/
total 1060
drwxr-xr-x 5 kurtosis kurtosis 4096 2012-04-18 17:26 ./
drwxrwxr-x 6 kurtosis kurtosis 4096 2012-04-18 17:26 ../
drwxrwxr-x 8 kurtosis kurtosis 4096 2012-04-18 17:32 .git/
drwxrwxr-x 2 kurtosis kurtosis 4096 2012-04-18 17:26 project/
drwxrwxr-x 3 kurtosis kurtosis 4096 2012-04-18 17:26 src/
-rw-rw-r-- 1 kurtosis kurtosis 931 2012-04-18 17:26 build.sbt
-rw-rw-r-- 1 kurtosis kurtosis 463 2012-04-18 17:26 .gitignore
-rw-rw-r-- 1 kurtosis kurtosis 91 2012-04-18 17:26 README.md
-rwxrwxr-x 1 kurtosis kurtosis 110 2012-04-18 17:26 sbt*
-rw-rw-r-- 1 kurtosis kurtosis 131 2012-04-18 17:26 sbt.bat
-rw-rw-r-- 1 kurtosis kurtosis 1041753 2012-04-18 17:26 sbt-launch.jar
$> git --version
git version 1.7.5.4
Cảm ơn và có nghĩa là 'git add -A' và' git commit -m'. Đã xóa - được tách khỏi 'git rm -r $ 1' và [kịch bản lệnh] (https://github.com/byrongibson/scripts/blob/master/git-rm-submodule.sh). Có lẽ không khôn ngoan để làm điều này trong một kịch bản, nhưng nó ít hữu ích như là một tài liệu tham khảo từng bước một. – Kurtosis