【问题标题】:Git - Switching to the other branches shows the modification from previous branch [duplicate]Git - 切换到其他分支显示来自上一个分支的修改[重复]
【发布时间】:2021-04-07 14:41:03
【问题描述】:

我在分支a 并在index.php 文件中进行了一些修改。例如我添加//test 然后切换到分支b。我打开index.php 文件,看到index.php 文件中有//test,这是我在分支a 中添加的。这是一个错误还是我犯了一个错误?如何区分不同分支的代码?

【问题讨论】:

标签: git


【解决方案1】:

这里没有错误在起作用,您观察到的是 Git 在使用脏工作目录切换分支时的典型行为。实际上,如果您的某些本地更改与新签出的分支发生冲突,Git 会警告您这一点。例如,如果您的某些更改会丢失或被覆盖,Git 会阻止检出新分支的尝试。

这里的最佳做法是,如果您的工作目录发生更改,则不要在分支中移动。相反,请考虑提交您的工作,或者可能进行隐藏。然后,一旦你的工作目录是干净的,检查新的分支。

【讨论】:

  • 1) 我正在使用 PHPStorm,切换时没有警告。 2)我还没有完成任务,所以我认为提交不是一个好的选择。
  • @kodfire 第二点,这根本不是真的。你总是可以回到第一个分支并修改提交。首先,您可能根本不会收到任何警告。如果签出新分支可以与工作目录中的更改兼容,那么 Git 很乐意静默签出。
【解决方案2】:

git 只管理存储库中的文件。在您的分支上提交(脏)文件或将其隐藏。

【讨论】:

  • 更准确地说,Git 管理当前在 Git 索引中的文件的工作树副本,或者在签出某些特定提交时必须进入 Git 的索引(和您的工作树)。请注意,默认的git stash 在这里没有帮助,因为git stash 只保存已知的(in-the-index)文件。 git stash -ugit stash -a 会,但我建议 Git 新手避免使用这些,并且通常也避免使用 git stash
  • 我认为 op 暗示 index.php 在索引中只是脏的。另外,我将把我的答案留在我认为最适合 op 的这个级别,并支持您的评论。
  • 是的,我自己已经对你的答案投了赞成票,我主要想指出还有更深层次的事情发生。 :-) 但你是对的,我认为 index.php 此时必须在索引中。
【解决方案3】:

因此,如果您有尚未提交的更改,它们将不会受到切换分支的影响。当然,如果切换分支与您的更改不兼容,git checkout 将拒绝这样做。

git add 是一个用于暂存更改的命令,然后您将提交该命令。它不会将这些更改记录到存储库的历史记录中。它只是将它们放入暂存区(索引); git commit 然后使用该暂存区的内容来创建提交。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-08-03
    • 2019-03-17
    • 2010-12-15
    • 1970-01-01
    • 2022-12-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多