【问题标题】:github changes not staged for commitgithub 更改未上演提交
【发布时间】:2012-05-23 14:04:50
【问题描述】:

我有一个非常基本的 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")

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

【问题讨论】:

    标签: git github version-control git-commit git-add


    【解决方案1】:

    你试过了吗

    git add .
    

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

    here

    【讨论】:

    • 当我 git status 或 git commit 时仍然给我留下相同的信息
    • 这是我们可以看到的公共 git repo 吗?
    • 是否有任何隐藏的 .git、.gitmodules 或 .gitignore 文件在您意料之外的地方?
    • 这对我不起作用。必须进入每个子模块的文件夹,然后使用git add .git commit -m ""
    【解决方案2】:

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

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

    sudo rm -Rf .git
    

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

    git add .
    

    然后进行提交并推送代码。

    【讨论】:

    • Gahhh.. 不敢相信这是因为子文件夹中的 .git 文件夹。我是正式的白痴...谢谢!
    • @Downpour046 感谢您的观察。它真的帮助了我很多
    • use git rm -r cached week1 从 git 中删除子文件夹。然后git add .
    【解决方案3】:

    就我而言,我需要一个

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

    需要提交上的“a”。

    【讨论】:

    • 这解决了我的问题“提交时需要'a'”
    • 这解决了我的问题。我去了每个子目录并添加了文件。它帮助我解决了问题
    【解决方案4】:

    week1 是子模块吗?

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

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

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

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

    【讨论】:

      【解决方案5】:

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

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

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

      【讨论】:

      • 这应该带有警告。有人最终可能会删除他们的整个子模块 git 历史记录(这是使用 GIT 的主要原因)。
      【解决方案6】:

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

      【讨论】:

        【解决方案7】:

        在我的情况下,问题是我要推送的子文件夹是 git 文件夹本身

        所以我做了以下

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

        【讨论】:

          【解决方案8】:

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

          【讨论】:

            【解决方案9】:

            这个命令可以解决问题:

            git add -A

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

            希望对你有帮助

            【讨论】:

            • 请在您的回答中添加更多描述和解释。
            • @Ros5292 git add -A 添加所有已跟踪和未跟踪文件的更改。通常我使用git add . 但我有同样的问题“子文件夹上的未跟踪文件不会被添加”,所以该命令解决了你可以使用git add -h的问题更多信息!
            【解决方案10】:

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

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

            【讨论】:

            • git add . 是个坏主意,它还会包含可能不需要的文档并将它们推送到您的存储库中
            【解决方案11】:

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

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

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

            【讨论】:

              【解决方案12】:

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

              如果你也一样,那就这样做吧。

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

              将没有被推送到某个临时位置的常规子目录移动。

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

              cd 到根目录。

              git init 再次。

              git add . 再次。

              git commit -m "removed notPushableDirectory temporarily"

              git push -f origin master

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

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

              【讨论】:

                【解决方案13】:

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

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

                解决问题的步骤

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

                没有帮助的建议

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

                【讨论】:

                  【解决方案14】:

                  使用 Git 版本 2.x.x(当前版本)

                  运行此命令以完美地暂存所有更改:

                  git add -A
                  

                  然后,运行以下命令:

                  git commit -m "Update"
                  

                  此外,请记住,当收到消息“Changes not staged for commit”时,只需运行我上面已经说过的这个命令即可完美地暂存所有更改:

                  git add -A
                  

                  如果运行这些命令,所有更改都不会完美上演:

                  git add .
                  
                  git add --ignore-removal .
                  
                  git add -u  
                  

                  这张表显示了我上面在Git Version 2.x.x(Current Version)中提到的命令的区别:

                  Command New Files Modified Files Deleted Files Description
                  git add -A ✔️ ✔️ ✔️ Stage all (new, modified, deleted) files
                  git add . ✔️ ✔️ ✔️ Stage all (new, modified, deleted) files in current folder
                  git add --ignore-removal . ✔️ ✔️ Stage new and modified files only
                  git add -u ✔️ ✔️ Stage modified and deleted files only

                  【讨论】:

                    猜你喜欢
                    • 2016-03-02
                    • 2022-11-26
                    • 2019-07-31
                    • 2014-09-18
                    • 2014-09-11
                    • 2012-06-25
                    • 2011-08-20
                    • 1970-01-01
                    • 1970-01-01
                    相关资源
                    最近更新 更多