Git - 在错误的分支上工作 - 如何将更改复制到现有主题分支

时间:2011-05-11 12:21:16

标签: git

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

如何将我在这里完成的工作(3个文件)从master转移到我的分支(例如,名为 branch123 ),而无需掌握?

4 个答案:

答案 0 :(得分:479)

听起来你只需要以下内容:

git stash
git checkout branch123
git stash apply

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

答案 1 :(得分:44)

这是一个古老的问题,但它在谷歌的“处理错误的分支”方面处于领先地位。我认为更好的答案是简单地检查您想要正在处理的分支。不需要藏匿任何东西:

git checkout branch123

checkout的默认行为是不覆盖工作目录中的修改文件,因此不会丢失任何内容。基于我发现的here

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

答案 2 :(得分:6)

git stash就是您所需要的。

可以在Git-Tools-Stashing

中找到完整的说明

答案 3 :(得分:0)

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

此方案至少适用于VS 2015 Git插件,但很可能适用于任何git工具。

  1. 结帐并更改主文件中的文件(ups!,错误的分支)
  2. 创建一个新的分支" temp" (或您选择的任何未使用的名称)来自主人。现在,签出的文件将在临时文件中签出,而不是在主文件中签出。
  3. 检查对temp的更改(master未触及)
  4. 现在一切都已签入,可以查看现有分支。查看想要的分支(我想要进行更改的分支) 3.5 Git Rebase
  5. 将temp合并到所需分支。现在,更改位于正确的分支中。
  6. 删除不再需要的临时分支
  7. 编辑:我发现在执行合并之前你必须执行temp分支的rebase(git rebase --onto)。否则,master中的更改将包含在合并中。上面的额外步骤3.5。在这里进一步了解rebase: https://git-scm.com/book/en/v2/Git-Branching-Rebasing