git - 推送后我无法提交
问题描述
将 repo 推送到 github 后我无法提交。我基本上想做的是从一个 github 存储库中克隆一些代码,进行一些更改并将代码推送到另一个 github 存储库。我做了一些本地存储库,克隆了代码,将代码推送到另一个 GH 远程存储库,一切都很好,现在当我对本地存储库进行一些更改并尝试“添加”时。然后 'commit -m' 我收到了这条消息。
编辑:
在'git add -A'之后:
有什么想法吗?
解决方案
你有一个子模块。
具体来说,您的输出包括以下内容(我必须重新输入,因此可能有拼写错误——如果可以使用纯文本,请尽量不要使用屏幕截图;这样可以避免手动复制粘贴错误):
Changes not staged for commit: ... modified: FakeApiReqresTest (modified content)
括号中的短语(modified content)
告诉我们这FakeApiReqresTest
不是文件。
有问题的子模块是另一个 Git 存储库。这个其他 Git 存储库有一个修改过的工作树,即它的工作树中的内容尚未提交。超级项目存储库只能记录每个超级项目提交在子模块 Git 存储库中的一个特定提交的哈希 ID。该git add
命令在超级项目中运行,将根据当前在子模块中签出的提交,将正确的提交哈希 ID 放入超级项目 Git 索引/暂存区域。(这令人困惑吗?即使我写了它,对我来说也是如此。)
这归结为一个事实,你必须首先:
- 进入子模块;
- 查看或检查您在此处所做的文件或更改;
- 决定是否应该添加和提交或消除它们;
- 然后酌情添加并提交或根除。
结果是:
- 子模块中的新提交(然后您应该将其提交
git push
到任何地方:记住这样做时子模块通常处于“分离的 HEAD”状态,因此您必须处理一个额外的皱纹),或git push
- 子模块的不同工作树
或者甚至两者兼而有之。如果您在执行此操作时最终更改了子模块的工作树,那么在继续之前重新测试整个超级项目通常是明智的。
一旦您在子模块中实际提交了正确的提交,并且子模块本身是“干净的”,您现在就可以在超级项目中使用子模块提交到超级项目的索引/工作树了。这可能会通过更新超级项目索引中的gitlink为您提供“暂存更改” 。git status
git add
git add
用于实现所需结果的示例命令
至少在没有仔细阅读和思考它们的情况下,不要复制粘贴这些内容。 您应该使用哪些命令取决于很多事情。
# enter the submodule
cd FakeApiReqresTest
# inspect this Git repository; add and commit
git status
git diff
git add -u
git diff --cached
git commit
<enter appropriate commit message>
# send new commits upstream before using them in superproject
git push origin HEAD:somebranch
# update the superproject's gitlink
cd ..
git add FakeApiReqresTest
# verify, commit, etc
git status
git submodule status
git diff --cached
git commit
<enter appropriate commit message>
推荐阅读
- python - 加速 Pandas 删除“nan”和空格、内存问题
- excel - Excel 运行时错误“1004”:对象“_Global”的方法“范围”失败
- sql - 如何在 PARTITION 中使用 LAG 和 NUMTOYMINTERVAL?
- python - 对象的多个实例覆盖 Python dict
- batch-file - xcopy 和 Robocopy 删除目标文件
- javascript - 跨度元素未显示
- mysql - 外部标头功能上的堆栈转储生成 - 链接器选项是否错误?
- symfony - 可以为 Symfony 表单中的映射实体字段/属性提供自定义名称吗?
- python - 是否有 python 函数可以在特定变量具有特定值的情况下运行计数?
- c - 一代 Rijndael S-box