我在Mac High Sierra上使用Git。我注意到我的目录进行了一些更改...
localhost:currency_calculator davea$ 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: currency-calculator (modified content, untracked content)
no changes added to commit (use "git add" and/or "git commit -a")
所以我尝试使用以下命令来提交那些更改
localhost:currency_calculator davea$ git add .
localhost:currency_calculator davea$ git commit -m 'Added directory.'
On branch master
Changes not staged for commit:
modified: currency-calculator (modified content, untracked content)
no changes added to commit
但是由于某种原因,以上操作无效,并且我无法将所做的更改推送到我的主遥控器上。
localhost:currency_calculator davea$ git push origin master
Everything up-to-date
我还需要做什么?
答案 0 :(得分:3)
您有一个子模块:
modified: currency-calculator (modified content, untracked content)
注释“已修改的内容”和“未跟踪的内容”是您的Git向子模块Git询问其 git status
的结果,然后汇总其内容(存在未提交的文件)和未跟踪的文件)放在一行中。
您必须:
将更新的文件提交到子模块中。也就是说,输入子模块(cd currency-calculator
)并执行在Git存储库中执行的所有常规操作以添加和提交文件。
如果需要提交未跟踪的文件,请确保添加它们。请注意,子模块存储库可能位于“分离的HEAD”上,因此在提交该子模块之前,您可能需要将其HEAD重新附加到某个分支名称,如有必要,可能创建一个分支。 / p>
将所有此类提交提交到充当该Git存储库作为子模块的服务器(以便其他人可以获取它们)。
这就是为什么要在步骤1中将子模块放在分支上的原因:推送分支比从分离的HEAD推送要容易得多。 (在这里可以使用独立的HEAD,但我将不赘述。)
步骤2可以推迟一点;见下文。
现在所需的提交在子模块中本地存在,更新索引中 gitlink 中的哈希ID,然后提交结果。
在这种情况下,您可以这样做:
git add currency-calculator
git commit
在超级项目存储库的适当部分。
在超级项目中使用git push
将使用本地子模块中的哈希ID的新提交传递到超级项目的origin
Git。
完成此操作后,克隆超级项目存储库然后运行git submodule update --init
的任何人都将必须能够访问在步骤3中所做的提交中保存的子模块提交哈希ID。为此,该提交哈希ID将需要位于您在步骤2中运行git push
的存储库中。因此,当某人< em> else 使用您在步骤3中所做的超级项目提交。
请注意,此舞蹈至少涉及四个 Git存储库:
origin
Git; origin
Git。每个Git存储库都可以通过git commit
或git push
来获取新的提交,因此总共要运行四个这样的命令:两个git commit
和两个{{1} }。