60

我有一个非常基本的 github 设置,其中包含一个自述文件、一个目录和另一个目录,其中包含一个 html 文件。在 github 上,我只能查看自述文件和第一个文件夹,但看不到它的内容,我收到了这条消息

tc349 ryntc3$ git add *
tc349 ryntc3$ git status
On branch master
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:   week1 (modified content)

no changes added to commit (use "git add" and/or "git commit -a")

我觉得如果我要添加所有要上演的内容,那应该不是问题。有什么帮助吗?

4

13 回答 13

68

你有没有尝试过

git add .

这会递归到子目录中,而我认为 * 不会。

这里

于 2012-05-23T14:24:11.557 回答
43

警告!这将删除您的子模块的整个 Git 历史记录。仅当您意外创建子模块时才这样做。在大多数情况下,当然不是您想要做的。

我认为您必须进入week1文件夹并删除.git文件夹:

sudo rm -Rf .git

然后返回顶级文件夹并执行:

git add .

然后提交并推送代码。

于 2012-11-08T09:56:43.303 回答
34

就我而言,我需要一个

 git add files
 git commit -am 'what I changed'
 git push

需要提交上的“a”。

于 2015-11-19T06:47:55.933 回答
29

week1子模块吗?

请注意命令输出中的相关部分git status

(提交或丢弃子模块中未跟踪或修改的内容)

尝试cd week1发出另一个以查看您对子模块git status所做的更改。week1

有关子模块如何在 Git 中工作的更多信息,请参阅http://git-scm.com/book/en/Git-Tools-Submodules 。

于 2012-06-10T22:03:53.307 回答
9

警告!这将删除您的子模块的整个 Git 历史记录。仅当您意外创建子模块时才这样做。在大多数情况下,当然不是您想要做的。

在我的情况下,有一个子目录有一个.git目录。

我所做的只是.git从我的子目录中删除该目录。

于 2016-11-29T04:28:10.897 回答
3

我遇到了同样的问题。我最终进入了“未准备提交”的子目录,并从那里添加、提交和推送。之后,上一级到主目录并能够正确推送。

于 2016-03-24T15:13:46.130 回答
3

就我而言,问题是我要推送的子文件夹是 git 文件夹本身

所以我做了以下

  1. 进入您要推送的子文件夹并运行:
rm -rf .git
  1. 然后运行这个:
 git rm --cached <subfolderName>
  1. 然后来到主项目文件夹并运行它(确保在文件夹名称后添加/)
    git add <folderName>/
    git commit -m "Commit message"
    git push -f origin <branchName>

于 2020-08-29T18:13:18.987 回答
2

对我来说,我必须提交其中的子目录,.git因为父文件夹和子文件夹都有遥控器可以推送到。然后提交并推送父目录。

于 2016-01-14T03:39:15.057 回答
2

此命令可能会解决问题:

git添加-A

所有文件和子目录都将被添加以进行跟踪。

希望能帮助到你

于 2019-04-03T01:21:17.403 回答
2

如果它是一个子模块,您需要 cd 进入它,然后使用git add . && git commit -m 'Your message'

从那里你可以 cd 出来并推送到你想要的任何分支。

于 2019-08-16T09:27:40.250 回答
1

无论我做什么,我都会收到相同的消息。

为了解决这个问题,我删除了 .gitignore 并且我没有得到 Github 更改不再为提交消息暂存。在我运行 git add 时它允许我提交一次之前。然后它会带来同样的信息。

我不确定为什么 .gitignore 文件会导致问题,但我在本地机器上添加了并且很可能没有正确同步它。

于 2013-11-19T18:41:41.373 回答
1

相信这是因为您有一个子存储库“子模块”,其中包含尚未暂存和提交的更改。

有一个类似的问题,我的 IDE 一直报告未提交的更改,并且运行 stage ( git add .) 和 commit ( git commit -m "message") 命令没有效果。事后想想,这可能是因为子存储库有需要暂存和提交的更改,而不是父存储库。

解决问题的步骤

  1. cd进入子模块(有一个名为 的隐藏文件夹.git)并执行命令以暂存(git add .)和提交(git commit -m "Update child repo"
  2. cd ..回到父仓库,执行命令stage( git add .)和commit( git commit -m "Update parent repo")

没有帮助的建议

  • sudo rm -Rf .git== 不要使用此命令 == 它会永久删除子模块存储库历史记录(GIT 的目的)
  • git add -A=== 添加了未跟踪的文件,但没有解决问题
于 2019-10-14T07:33:36.003 回答
1

我尝试了整个 Stackoverflow 上的所有建议。没有任何东西,包括 -a 或 -am 或任何帮助。

如果您也一样,请执行此操作。

所以,问题是,git 认为你的一些子目录是你根项目中的子项目。至少,就我而言,它不是那样的。它只是普通的子目录。不是个别项目。

移动未在某个临时位置推送的常规子目录。

从该目录中删除隐藏的 .git 文件夹。

cd到根目录。

git init再次。

git add .再次。

git commit -m "removed notPushableDirectory temporarily"

git push -f origin master

我们将不得不强制它,因为 git 会看到远程 git 和您的本地结构之间的冲突。请记住,我们制造了这个冲突。所以,不要担心强迫它。

现在,它将将该子目录作为子目录推送,而不是作为根项目中的子模块或子项目。

于 2019-01-09T23:32:58.887 回答