繁体   English   中英

Git - 处理错误的分支 - 如何将更改复制到现有主题分支

[英]Git - working on wrong branch - how to copy changes to existing topic branch

我一直在做一个项目,但不幸的是,我忘记切换到我的分支,因此一直在做 master

如何将我在这里完成的工作(3 个文件)从 master 复制到我的分支(例如称为branch123 )而不提交到 master?

听起来你需要的是以下内容:

git stash
git checkout branch123
git stash apply

然后你应该回到你自己的分支而不接触主分支。

这是一个古老的问题,但它是谷歌“在错误的分支上工作”的顶级问题。 我认为更好的答案是简单地检查您想要处理的分支机构。 不需要藏匿任何东西:

git checkout branch123

checkout的默认行为是不覆盖工作目录中的已修改文件,因此您不会丢失任何内容。 基于我在这里找到的东西

编辑:只有在工作目录中修改的文件在masterbranch123都相同时,此方法才有效。 Jefromi在对已接受答案的评论中实际指出了这一点,但我第一次看到它时并不明白他在说什么。

git stash是你需要的。

可以在Git-Tools-Stashing中找到完整的解释

由于可以创建一个新分支,但在签出文件时无法检出现有分支,我发现以下技巧使用临时分支工作:

这种情况至少适用于VS 2015 Git插件,但很可能适用于任何git工具。

  1. 签出并对master中的文件进行更改(ups!,错误分支)
  2. 从master创建一个新的分支“temp”(或您选择的任何未使用的名称)。 现在,签出的文件将在temp中检出,而不是在master中检出。
  3. 检查temp的更改(master未触及)
  4. 现在一切都已签入,可以查看现有分支。 查看想要的分支(我想要进行更改的分支)3.5 Git Rebase
  5. 将temp合并到有用的分支。 现在更改位于正确的分支中。
  6. 删除临时分支,因为不再需要它

编辑:我发现你必须在执行合并之前执行temp分支的rebase(git rebase --onto)。 否则,master中的更改将包含在合并中。 上面的额外步骤3.5。 有关rebase的更多信息,请访问: https//git-scm.com/book/en/v2/Git-Branching-Rebasing

Github台式机

在 Github 桌面中,当创建新分支或移动到具有未提交更改的不同分支时,系统会询问您是要保留更改还是它们移动到新分支:

在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM