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

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

我怎么能复制的工作(3个文件),我已经在这里从master,到我的分支(称为,例如branch123)没有提交到master?

123344 次浏览

听起来你只需要以下这些:

git stash
git checkout branch123
git stash apply

然后你应该回到你自己的分支上,而不需要触及主分支。

公认的答案是最彻底的,但有一个特殊的情况,你可以简化。如果你在工作目录中修改的文件在masterbranch123中都是相同的,你可以简单地做

git checkout branch123

不需要隐藏任何东西,因为checkout的默认行为是不覆盖工作目录中的修改文件,所以你不会丢失任何东西。(实际上这是Cascabel首先在评论中提到的)

正如其他人在评论中提到的,如果branch123还不存在,你可以这样做

git checkout -b branch123

基于我发现在这里

由于可以创建一个新的分支,但不可能签出一个现有的分支,同时有文件签出,我发现下面的技巧使用临时分支工作:

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

  1. 签出并更改master中的文件(ups!),错误的分支)
  2. 从master中创建一个新分支“temp”(或任何您选择的未使用的名称)。签出的文件现在将签出在临时,而不是在主。
  3. 检入对temp的更改(主节点未受影响)
  4. 现在所有东西都被签入,并且可以签出一个现有的分支。签出想要的分支(我想要开始进行更改的分支) 3.5 Git Rebase
  5. 将temp合并到所需的分支。现在更改在正确的分支中。
  6. 删除临时分支,因为它不再需要了

编辑:我发现你必须在执行合并之前执行临时分支的rebase (git rebase—onto)。否则,master中的更改将包含在合并中。以上额外的3.5步。更多关于rebase的信息请点击这里: https://git-scm.com/book/en/v2/Git-Branching-Rebasing < / p >

git stash是你需要的。

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

Github桌面

在Github Desktop中,当创建一个新分支或移动到一个未提交更改的不同分支时,你会被问到是想离开更改还是移动更改到新分支:

enter image description here