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

v8wbuo2f  于 2022-11-27  发布在  Git
关注(0)|答案(9)|浏览(511)

目标是提交一个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?
并且不能完全理解它。另外,logc 4plus/.gitmodules包含以下内容:

[submodule "threadpool"]

        path = threadpool
        url = https://github.com/log4cplus/ThreadPool.git

[submodule "catch"]

        path = catch
        url = https://github.com/philsquared/Catch.git
ars1skjm

ars1skjm1#

我所做的就是跑:

git rm -rf --cached myuntrackedfolder

这会告诉git忘记它(因为它被正式跟踪)。
然后我用:

git add myuntrackedfolder

然后我就可以走了。

fgw7neuy

fgw7neuy2#

从子文件夹中删除.git。这对我很有效。

ni65a41a

ni65a41a3#

解决方案包括从带有“modified content,untracked content”标签的目录中删除.git/,从这些目录中删除--cached文件,然后在这些目录上再次运行git add
逐步解决方案:
1.从log4cplus和../lib/notification/cppzmq中删除.git/
1.从初始化git仓库的父目录中,运行命令:

git rm -rf --cached log4cplus/ && git rm -rf --cached ../lib/notifications/cppzmq

1.再次将目录添加并提交到分支。
1.推到你的分支。

0x6upsns

0x6upsns4#

由于某种原因,这些单独的回购文件已经改变了文件。有几种方法来处理它,这取决于它们实际上是什么。
你可以导航到每个存储库并查看哪些文件被更改了。然后你可以提交、创建一个新的分支或删除这些更改。
如果这些存储库是单独的项目,您希望跟踪但又不想弄乱它们,那么您可以让父存储库简单地忽略这些子模块中的更改,方法是:

git update-index --assume-unchanged $DIRECTORY

(其中$DIRECTORY是要忽略更改的子模块)。

hmtdttj4

hmtdttj45#

我也遇到过这样的问题,确实让我很困扰,我通过运行git submodule update解决了。

4si2a6ki

4si2a6ki6#

log 4cplus是您的子模块,它具有已修改和未跟踪的内容。

  • 修改内容:转到子模块“log 4cplus”提交修改后的更改
  • 未跟踪的内容:表示您在子模块中添加了新文件或新文件夹,但您还没有开始跟踪它们,例如git add〈newfile/newfolder〉。如果您想忽略未跟踪的文件,请将它们添加到. gitignore中。

现在你应该可以将提交从子模块更新到主仓库或外部仓库了。请注意,删除子模块中的.git文件并不是一个解决方案。

neekobn8

neekobn87#

这里发生的是,你在你的根文件夹文件夹,你想把你所有的子文件夹推到git仓库。所以一个git文件被创建。如果你得到一个不可跟踪的文件错误,原因是你的子目录中也有一个git仓库。你可以通过命令----〉rmdir -Force -Recurse从不可跟踪的文件夹删除git仓库。git此命令将删除您的untracebale或untracked目录中的本地git存储库,然后再次转到您的根文件夹并键入相同的命令。重新初始化git存储库并完成!!!

xggvc2p6

xggvc2p68#

我解决了这个问题,在子文件夹中移动,这是什么不跟踪和运行
这些命令:git add . git commit -m“我的提交”
然后返回到主文件夹并再次运行这些命令

vvppvyoh

vvppvyoh9#

我已经关闭了编辑器(Visual Studio),并输入了常用命令:

  1. git add .
  2. git commit -m "Comment text"
  3. git push -u origin master
    这对我很有效。

相关问题