Github未提交的更改消息

laik7k3q  于 2023-11-15  发布在  Git
关注(0)|答案(1)|浏览(152)

我正在尝试使用我创建的虚拟文件夹和实际的生产git repo来学习git。我不明白在什么情况下会抛出以下错误:

error: Your local changes to the following files would be overwritten by checkout:
        index.html
Please commit your changes or stash them before you switch branches.
Aborting

字符串
下面是我在虚拟git文件夹上执行的操作序列:

PS C:\Users\thepav\Desktop\git project> git status
On branch feature-a
Your branch is up to date with 'origin/feature-a'.

Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
        modified:   index.html

no changes added to commit (use "git add" and/or "git commit -a")

    PS C:\Users\thepav\Desktop\git project> git checkout main
    error: Your local changes to the following files would be overwritten by checkout:
            index.html
    Please commit your changes or stash them before you switch branches.
    Aborting


我试图通过修改一个文件在Prod git repo中重现同样的行为,但这是我得到的:

$ git status
On branch develop
Your branch is up to date with 'origin/develop'.

Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
        modified:   application/ice.ini.php

no changes added to commit (use "git add" and/or "git commit -a")
$ git checkout master
M       application/ice.ini.php
Switched to branch 'master'


问题是为什么prod git repo不会抛出错误?

moiiocjp

moiiocjp1#

在第一种情况下,您在本地修改了index.html,但在当前分支中的index.html版本之间的存储库中也存在差异(feature-a)和要切换到的分支(main). git checkout应该用分支main的版本替换本地index.html,但这会破坏本地更改(它们还没有在提交中持久化)。这就是为什么它会显示警告并中止 checkout 。
在第二个场景中,本地修改的文件(application/ice.ini.php)在存储库中的分支之间没有区别,并且在 checkout 时不会修改。
git checkout上,Git将HEAD引用改为指向目标分支,然后将旧分支和新分支之间的差异应用于索引和本地工作树。
早在2019年,在version 2.23上,Git引入了两个新命令,git switchgit restore。它们每个都做了git checkout的一些事情。它们被引入是因为git checkout做了太多不相关的事情,这取决于它是如何被调用的。
建议使用git switch切换分支。

  • (除了命令行的差异之外,git switch的工作方式与使用分支名称调用git checkout的工作方式相同,并且不使用文件路径作为参数。问题中描述的行为没有改变。只是更容易理解其用途。)*

相关问题