Git 对树枝感到困惑

Git 对树枝感到困惑,git,logic,Git,Logic,转发自。 我还是不明白 我有一个名为“miscChanges”的分支,其中我对某些页面进行了更改(我尚未提交)。现在,当我尝试签出“master”分支时,我收到消息“…文件将被签出覆盖。胡说八道。 我不想在“miscChanges”分支上提交我的更改,因为我还没有完成。 在这种情况下,合乎逻辑的处理方式是什么?您需要首先提交更改。尝试git add-A(它添加当前目录中的所有更改,包括新文件和删除的文件),然后git commit 基本上,git是在警告您,当您签出主分支时,它将覆盖工作目录中的

转发自。
我还是不明白
我有一个名为“miscChanges”的分支,其中我对某些页面进行了更改(我尚未提交)。现在,当我尝试签出“master”分支时,我收到消息“…文件将被签出覆盖。胡说八道。
我不想在“miscChanges”分支上提交我的更改,因为我还没有完成。

在这种情况下,合乎逻辑的处理方式是什么?

您需要首先提交更改。尝试
git add-A
(它添加当前目录中的所有更改,包括新文件和删除的文件),然后
git commit


基本上,git是在警告您,当您签出主分支时,它将覆盖工作目录中的所有文件,包括您未提交的更改。

首先,要回答为什么会收到错误消息,当您在git中签出分支时,它会更改磁盘上的文件以匹配分支的状态。这将覆盖您正在处理的内容,因此它警告您

第二,回答你应该怎么做——如果你很匆忙,你可以只做“git stash”,它会在你查看另一个分支时暂时保存你的更改。(你以后必须用谷歌搜索如何取消搁置)更完整的处理方法是创建一个新分支(“git checkout-b new_branch”,如果我记得的话),并在查看master时提交对该分支所做的更改。您始终可以将该临时分支拉回到或合并到其他更改中,并删除该临时分支


还要记住,git是分布式源代码控制。您对Mischanges分支的更改只有在您推送之前才会被其他人看到,因此从技术上讲,您可以提交一些不完整的内容,并在推送之前进行修复,尽管您的历史记录中会有一个功能不完整的状态。如果您在完成该功能后返回Mischanges并执行“git commit--amend…”,则可以避免这种情况。

分支只是指向现有提交ID的指针(引用)。更改当前分支意味着选择不同的指针

这意味着未提交的更改不会保留在上一个分支上,因为没有存储这些更改的位置。因此,在更改分支时,git会尝试将这些更改保留在新的代码库中。更具体地说,工作树中与旧分支上上次提交状态不同的任何文件都将在签出后保留在工作树中。但是,如果这些文件在旧分支和新分支之间存在差异,git会抱怨不兼容的更改:它无法将修改后的文件保留在工作树中,因为原始文件不同

有三种方法可以解决这个问题:

  • 执行临时提交,稍后将放弃:
  • git提交-a-m tmp
  • git签出主机
  • 。。。做你的工作的主人
  • git签出错误更改
  • git复位头~
  • 执行一项临时提交,稍后再进行改进:
  • git提交-a-m tmp
  • git签出主机
  • 。。。做你的工作的主人
  • git签出错误更改
  • 。。。在miscChanges分支上做更多工作
  • git提交——修改
  • 使用:
  • git stash save“分支更改中的工作”
  • git签出主机
  • 。。。做你的工作的主人
  • git签出错误更改
  • git隐藏流行音乐
  • 如果保存了多个存储,则可以查找应弹出的存储:

    git stash list
    # Find the right stash number, in the form stash@{N}
    git stash pop stash@{3}
    

    如果你还不想提交你的更改,你必须对它们做些什么。您可以执行
    git stash
    ,更改分支,执行任何需要的操作,然后更改回“miscChanges”分支并执行
    git stash apply

    谢谢您的详细解释!