0

我正在分支'br3'上工作。我有 3 个修改过的文件。我想将它们提交到不同的分支,例如'br1'。我知道只有在树中没有修改过的文件时才能安全地更改分支,所以我需要:

  • 复制文件、还原更改、更改分支、粘贴文件
  • 存储文件,更改分支,取消存储它们

我从未尝试过第二种选择,我不确定它是否会奏效。会吗?或者有比我上面概述的更好的选择?

4

3 回答 3

3

我知道只有在树中没有修改过的文件时才能安全地更改分支,

这不是真的。如果更改将干净地应用,它将正常工作。如果没有,您会被告知并有机会修复它们。

您的第二个选择可能是最安全的:

$ git stash
$ git checkout br1
$ git stash apply
$ git add ...
$ git commit ...

但很可能只是:

$ git checkout br1
$ git add ... 
$ git commit ...

会工作得很好。

于 2013-08-27T18:23:59.280 回答
2

您可以执行所谓的“合并签出”,它会尝试将您在工作树中所做的任何更改合并到目标分支中。

git checkout --merge br1

如果有任何冲突,那么您必须像合并分支时一样解决它们。

我强烈建议git stash && git stash apply先运行,因为这将确保您可以将工作目录返回到其当前状态,以防合并严重失败以至于您必须重置。如果发生这种情况并且您确实存储了更改,则可以像这样恢复工作目录,然后重试:

git reset --hard
git checkout br3
git stash apply
于 2013-08-27T18:31:45.093 回答
1

存储和应用是一种解决方案

git stash
git checkout TARGET_BRANCH
git apply
#review and if i like it
git stash drop

在此处阅读更多信息:http: //git-scm.com/book/en/Git-Tools-Stashing

另一个是基于差异的,也许是您已经在另一个仓库中打开的另一个分支(存储不会从一个仓库转到另一个仓库)。或者甚至在不同的盒子上!

git diff HEAD > ~/mypatch
cd SOME_OTHER_REPO 
#(or mail it to the other box or what have you and extract to ~/mypatch)
git checkout other_branch
git apply ~/mypatch
于 2013-08-27T18:44:01.660 回答