git status(没有提交,工作目录清理),但是提交的更改

时间:2016-05-17 07:00:47

标签: git github

我发现了很多类似主题的问题,但我没有找到关于这个问题的任何实际指导:为什么[DataMember(EmitDefaultValue = false)]告诉我git status,即使我在本地分支机构做了修改也很难?

以下是我遵循的步骤:

  • nothing to commit, working directory clean [On branch master - 初始提交,无需提交(创建/复制文件并使用“git add”跟踪)]
  • git init
  • git remote add https://github.com/username/project.git
  • git pull origin master
  • touch test
  • git add test
  • git commit -m "Adding file for test purposes only." [On branch master - 无需提交,工作目录清理]

如果我执行git status,则修改将提交给远程分支。我只是想在修改后执行“git status”,并在我的本地分支上接收必须被推送到项目远程分支的信息。

有人能告诉我发生了什么事吗?直截了当,请:(。

先谢谢SO社区!

9 个答案:

答案 0 :(得分:18)

您当地的分支机构不了解远程分支机构。如果你不告诉git你的本地分支()应该与远程对手( 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.

答案 1 :(得分:1)

默认情况下,

git status输出会告诉您三件事:

  1. 你在哪个分店
  2. 本地分支与远程分支相关的状态是什么
  3. 如果您有任何未提交的文件
  4. 当你执行git commit时,它会提交到你的本地存储库,因此#3显示没有任何提交,但是,如果你已经设置了跟踪分支,#2应该显示你需要推或拉。

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

      

    master ... origin / master [ahead 1]

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

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

答案 2 :(得分:1)

问题是您没有指定遥控器的名称: 代替

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

您应该使用:

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

答案 3 :(得分:1)

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

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

这使我能够成功上传项目。

答案 4 :(得分:0)

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

答案 5 :(得分:0)

只需执行以下步骤

  1. 删除 .git 文件夹

  2. 添加git仓库

    $ git init

    $ git add origin master repo.git

  3. 然后拉或推文件

完成!!!

答案 6 :(得分:0)

此解决方案可能不适合大多数情况,但在以下情况下可以救命;您正在进行重大更改,那么 git commit 可以正常工作,但是当您对一个文件(例如 CSS 文件)进行细微更改时,git commit 将无法工作。

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

答案 7 :(得分:0)

按照以下步骤提交

1.创建新分支以保护您的文件

git checkout --orphan latest_branch

2.添加到新分支

git add -A

3.提交

git commit -am "commit message"

4.检查git状态

git status

5.files 或正确的尝试推入这一步

git push -f origin main

现在您的文件是安全的

如果您不想要特定的分支,请清除您的分支并创建您想要的分支

例如:master 或 main

6.删除分支

git branch -D main

7.重命名当前分支为main

git branch -m main

8.最后,强制更新你的仓库

git push -f origin main

答案 8 :(得分:-6)

删除您的 .git 文件夹,并使用 git init 重新初始化 git,在我的情况下这是可行的,因为 git add 命令暂存文件夹和文件在 .git 文件夹中,如果您在提交后关闭 CLI,则暂存区将出现双文件夹,使 git 系统抛出此问题。