git 状态(无需提交,工作目录干净),但是已提交更改

git status (nothing to commit, working directory clean), however with changes commited

我发现了很多类似主题的问题,但我没有找到任何关于这个问题的实用指导:为什么 git status 通知我 nothing to commit, working directory clean,即使很难我已经在我的本地进行了修改分支?

以下是我遵循的步骤:

如果我做git push,修改会提交到远程分支。我只想在修改后执行"git status",并收到我在本地分支上有更改必须推送到项目远程分支的信息。

谁能告诉我发生了什么事?请开门见山。

在此先感谢 SO 社区!

git status 输出默认告诉你三件事:

  1. 你在哪个分行
  2. 您的本地分支相对于远程分支的状态如何
  3. 如果您有任何未提交的文件

当您执行 git commit 时,它提交到您的本地存储库,因此 #3 没有显示要提交的内容,但是,如果您设置了跟踪分支,#2 应该显示您需要推送或拉取。

如果您发现 git status 的输出冗长且难以理解,请尝试使用 git status -sb 这不那么冗长并且会清楚地显示您是否需要推或拉。在您的情况下,输出将类似于:

master...origin/master [ahead 1]

git status 非常有用,在您描述的工作流程中执行 git status -sb:触摸文件后、添加文件后和提交文件后,查看输出中的差异,它将使您更清楚地了解未跟踪、跟踪和提交的文件。

更新#1
如果在读取 git 状态输出时存在误解,则此答案适用。但是,正如所指出的那样,在 OP 的情况下,上游设置不正确。为此, 是正确的。

您的本地分支不知道远程分支。如果你不告诉 git 你的本地分支 (master) 应该将自己与远程分支 (origin/master 在这种情况下);那么 git status 不会告诉你你的分支和远程分支之间的区别。所以你应该使用:

git branch --set-upstream-to origin/master

或使用短选项:

git branch -u origin/master

这个选项--set-upstream-to(或简称-u)是在git 1.8中引入的.0.

设置此选项后; git status 将向您展示类似的内容:

# Your branch is ahead of 'origin/master' by 1 commit.

问题是您没有指定遥控器的名称: 而不是

git remote add https://github.com/username/project.git

你应该使用:

git remote add origin https://github.com/username/project.git

我遇到了同样的问题,因为我在工作目录中有 2 个 .git 文件夹。

您的问题可能是由同一件事引起的,因此我建议您检查是否有多个 .git 文件夹,如果有,请删除其中一个。

这让我成功上传了项目。

其他人没有提到的小提示:git 如果您在项目文件夹中添加空文件夹,则不会记录更改。就是这样,我添加了具有随机名称的空文件夹以检查它是否正在记录更改,但事实并非如此。 但是当我开始在其中添加文件时,它就开始这样做了。 干杯。

删除你的 .git 文件夹,然后用 git init 重新初始化 git,在我的例子中是工作,因为 git 添加 命令暂存文件夹和 .git 文件夹中的文件,如果在提交后关闭 CLI,将会暂存区中的双文件夹使 git 系统抛出此问题。

只需执行以下步骤

  1. 删除 .git 文件夹

  2. 添加 git 存储库

    $ git init

    $ git add origin master repo.git

  3. 然后拉取或推送文件

完成!!!

此解决方案可能不适用于大多数情况,但在以下情况下它是救命稻草;您正在进行重大更改,然后 git commit 可以正常工作,但是当您对一个文件(比如 CSS 文件)进行轻微更改时,git commit 将无法正常工作。

我遇到了这个问题,我通过在 GitHub 上进行更改并在 运行 git pull 上提交到我的本地存储库来解决这个问题。

按照这些步骤进行提交

1.making 保护文件的新分支

git checkout --orphan latest_branch

2.add 进入新分支

git add -A

3.commit

git commit -am "commit message"

4.checkgit状态

git status

5.files或正确尝试在这一步

git push -f origin main

现在您的文件是安全的

如果你不想要特定的分支,请清除你的分支,然后创建你想要的分支

例如:master 或 main

6.Delete分行

git branch -D main

7.Rename当前分支到main

git branch -m main

8.Finally,强制更新您的存储库

git push -f origin main

对我来说 $ git fetch 有效。它有助于将数据加载到 master