目标是提交一个git分支。分支的“git status”输出为:
On branch zeromq_new
Your branch is up to date with 'origin/zeromq'.
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
(commit or discard the untracked or modified content in submodules)
modified: log4cplus (modified content, untracked content)
modified: ../lib/notification/cppzmq (modified content)
目录结构如下所示:
HySecureGateway
├──fes
│ └──log4cplus
│ ├──.git
│ ├──.gitattributes
│ ├──.gitignore
│ ├──.gitmodules
│ ├──catch
│ │ ├──.git
│ │ ├──.gitattributes
│ │ ├──.github
│ │ ├──.gitignore
│ │ └──.github
│ │ ├──issue_template.md
│ │ └──pull_request_template.md
│ └──threadpool
│ └──.github
└──lib
└──notification
└──cppzmq
├──.git
└──.gitignore
我在这里读到了一个类似问题的答案:
How to track untracked content?,
并且完全无法理解。 logc4plus / .gitmodules也包含:
[submodule "threadpool"]
path = threadpool
url = https://github.com/log4cplus/ThreadPool.git
[submodule "catch"]
path = catch
url = https://github.com/philsquared/Catch.git
答案 0 :(得分:12)
我要做的是运行:
git rm -rf --cached myuntrackedfolder
这告诉git忘记它(因为它已被正式跟踪)。
然后我使用了:
git add myuntrackedfolder
添加它,我很好。
答案 1 :(得分:4)
解决方案包括从带有“已修改的内容,未跟踪的内容”标签的目录中删除.git /,从这些目录中删除--cached文件,然后在这些目录上再次运行git add
。
分步解决方案:
git rm -rf --cached log4cplus/ && git rm -rf --cached ../lib/notifications/cppzmq
快乐的编码。
答案 2 :(得分:4)
从子文件夹中删除.git。那对我有用。
答案 3 :(得分:0)
子模块独立于它们所在的仓库。git status
告诉您这些子模块从签出时以某种方式被更改。在每个包含此消息的子模块中执行git status
之前,您不会知道这是什么。
如果您进入每个子模块并在cppzmq和log4cplus中都执行git status
,则可以在每个子模块中执行git status
以找出不同的内容。此时,您可以根据需要提交更改,然后更新子模块指向的位置。
答案 4 :(得分:0)
由于某些原因,这些单独的存储库已更改文件。有多种处理方法,具体取决于它们的实际情况。
您可以导航到每个存储库,并查看更改了哪些文件。然后,您可以提交,创建新分支或摆脱更改。
如果这些存储库是您要跟踪但又不会引起混乱的单独项目,则可以使父存储库仅使用以下命令忽略这些子模块中的更改:
git update-index --assume-unchanged $DIRECTORY
(其中$ DIRECTORY是要忽略更改的子模块)
答案 5 :(得分:0)
我关闭了编辑器(Visual Studio),并键入了常用命令:
git add .
git commit -m "Comment text"
git push -u origin master
这对我有用。
答案 6 :(得分:0)
这里发生的事情是您位于根文件夹文件夹中,并且您想将所有子级推送到git存储库中,因此创建了一个git文件,并且如果遇到无法追踪或无法追踪的文件错误,原因可能是您的子目录也有一个git存储库。您可以通过以下命令从未跟踪或无法跟踪的文件夹中删除git存储库 ----> rmdir -Force -Recurse .git 此命令将删除您的untracebale或未跟踪的目录中的本地git repo,然后再次转到您的根文件夹并键入相同的命令。 重新初始化git repo及其完成!!
答案 7 :(得分:0)
我也遇到过这样的问题,确实很困扰我。
我通过运行 git submodule update
解决了这个问题。