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

问题描述 投票:0回答:11

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

我在这里阅读了类似问题的答案:

如何跟踪未跟踪的内容? ,

并不能完全理解它。 logc4plus/.gitmodules 还包含以下内容:

[submodule "threadpool"]

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

[submodule "catch"]

        path = catch
        url = https://github.com/philsquared/Catch.git
git git-submodules
11个回答
121
投票

我所做的就是跑步:

git rm -rf --cached myuntrackedfolder

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

然后我用:

git add myuntrackedfolder 

添加它,我就可以开始了。


74
投票

从子文件夹中删除

.git
。这对我有用。


8
投票

解决方案包括从带有“已修改内容、未跟踪内容”标签的目录中删除

.git/
,从这些目录中删除归档的
--cached
,然后再次在这些目录上运行
git add

逐步解决方案:

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

6
投票

由于某种原因,这些单独的存储库已更改文件。有几种方法可以处理它,具体取决于它们的实际情况。

您可以导航到每个存储库并查看更改了哪些文件。然后您可以提交、创建新分支或删除更改。

如果这些存储库是您想要跟踪但不想弄乱的单独项目,您可以使用以下方法让您的父存储库简单地忽略这些子模块中的更改:

git update-index --assume-unchanged $DIRECTORY

(其中

$DIRECTORY
是您要忽略更改的子模块)。


3
投票

我也遇到过这样的问题,确实很困扰我。 我通过运行

git submodule update
解决了这个问题。


1
投票

这里发生的情况是,您位于根文件夹中,并且想要将所有子文件夹推送到 git 存储库。因此会创建一个 git 文件。如果您收到无法跟踪或未跟踪的文件错误,原因是您的子目录中的某些文件还有一个git存储库。您可以通过命令从未跟踪或无法跟踪的文件夹中删除git存储库 ---->rmdir -Force -Recurse .git 此命令将删除 untracebale 或 untracked 目录中的本地 git 存储库,并再次转到根文件夹并键入相同的命令。 重新初始化 git repo 并完成!!!


1
投票

log4cplus 是您的子模块,已修改且未跟踪内容。

  • 修改内容:转到您的子模块“log4cplus”提交您修改的更改
  • 未跟踪的内容:表示您已在子模块中添加了尚未开始跟踪的新文件或新文件夹,即 git add 。如果您想忽略未跟踪的文件,请将它们添加到 .gitignore 中。

现在您应该能够将子模块的提交更新到主存储库或外部存储库。 请注意,删除子模块中的 .git 文件并不是解决方案。


1
投票

我遇到了同样的问题,我有这样的文件夹结构,

/project
  ---> /client
  ---> /server 

客户端文件夹未被跟踪,因为它本身就是一个 git 存储库。 我按照以下步骤解决了问题

1) remove .git file from client folder
2) run the command "git rm -rf --cached client"
3) git add client
4) git push -u origin main 

0
投票

我通过移入不跟踪和运行的子文件夹解决了问题

这些命令: git 添加 . git commit -m“我的提交”

然后返回主文件夹并再次运行这些命令


0
投票
  1. 转到您的子模块:
    cd your_submodule
  2. 清洁:
    git clean -fdx .

就是这样。无需手动删除任何敏感文件或重新下载任何内容。


-5
投票

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

  1. git add .
  2. git commit -m "Comment text"
  3. git push -u origin master

这对我有用。

© www.soinside.com 2019 - 2024. All rights reserved.