如何修复git中的“修改内容,未跟踪内容”?

时间:2018-05-04 05:47:54

标签: git git-submodules

目标是提交一个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

8 个答案:

答案 0 :(得分:12)

我要做的是运行:

git rm -rf --cached myuntrackedfolder

这告诉git忘记它(因为它已被正式跟踪)。

然后我使用了:

git add myuntrackedfolder 

添加它,我很好。

答案 1 :(得分:4)

解决方案包括从带有“已修改的内容,未跟踪的内容”标签的目录中删除.git /,从这些目录中删除--cached文件,然后在这些目录上再次运行git add

分步解决方案:

  1. 从log4cplus和../lib/notification/cppzmq中删除.git/。
  2. 从初始化git存储库的父目录中,运行命令:      git rm -rf --cached log4cplus/ && git rm -rf --cached ../lib/notifications/cppzmq
  3. 将目录再次添加并提交到您的分支。
  4. 推送到您的分支。

快乐的编码。

答案 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),并键入了常用命令:

  1. git add .
  2. git commit -m "Comment text"
  3. 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 解决了这个问题。