【问题标题】:Confused about branches对分支感到困惑
【发布时间】:2012-09-18 09:43:03
【问题描述】:

confused about git branches and master interaction转发。
我还是不明白!
我有 1 个名为“miscChanges”的分支,其中我对某些页面进行了更改(我尚未提交)。现在,当我尝试签出“主”分支时,我收到消息“...文件将被覆盖退房。等等等等。
我不想在“miscChanges”分支上提交我的更改,因为我还没有完成。
在这种情况下,逻辑上的处理方式是什么?

【问题讨论】:

    标签: git logic


    【解决方案1】:

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

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

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

    1. 做一个临时提交,你稍后会丢弃它:
      1. git commit -a -m tmp
      2. git checkout master
      3. ...在master上做你的工作...
      4. git checkout miscChanges
      5. git reset HEAD~
    2. 做一个临时提交,你稍后会改进:
      1. git commit -a -m tmp
      2. git checkout master
      3. ...在master上做你的工作...
      4. git checkout miscChanges
      5. ...在 miscChanges 分支上做更多工作...
      6. git commit --amend
    3. 使用stash
      1. git stash save 'work in progress on branch miscChanges'
      2. git checkout master
      3. ...在master上做你的工作...
      4. git checkout miscChanges
      5. git stash pop

    如果你保存了多个 stash,你可以查看应该弹出哪一个:

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

    【讨论】:

    • 感谢您的详细解释!
    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

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

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

      【讨论】:

        【解决方案4】:

        如果您还不想提交更改,则必须对它们做一些事情。你可以做一个git stash,改变分支,做任何你需要的事情,然后回到你的“miscChanges”分支并做git stash apply

        【讨论】:

          猜你喜欢
          • 2022-06-13
          • 2012-08-22
          • 2020-05-23
          • 1970-01-01
          • 2012-06-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-09-13
          相关资源
          最近更新 更多