我错误地在主分支上进行了更改,而不是在我的新分支上。我想把它们移到新分支上。问题是我已经完成了提交,但我还没有看到它在master上。当我想做推送时...我已经看到了。有没有办法返回并将更改从主分支移至分支,而无需重做我曾经做过的所有操作?
它的样子是这样的:
* d4452d9 (HEAD, master) Added saving images for viewing
| * 129aa64 (branch2) Added interiors_folder in config file
| * ae892d8 Added images of interior
|/
* c08a8d4 (origin/branch1, branch1) Before new branch
* b7b9dd5 (origin/master) Removed printing
我想要这样的:
* d4452d9 (HEAD, branch1) Added saving images for viewing
| * 129aa64 (branch2) Added interiors_folder in config file
| * ae892d8 Added images of interior
|/
* c08a8d4 (origin/branch1, branch1) Before new branch
* b7b9dd5 (origin/master) Removed printing
最佳答案
看起来实际的提交结构就是您想要的,只是分支指向错误的提交。确保工作树中没有重要的更改,并首先阅读完整的答案,以检查更改是否真正达到您想要的效果。然后,执行以下操作:
git checkout branch1
git reset --hard master
这将更改branch1,使其指向与master相同的提交,这就是我们想要的位置。 --hard
参数告诉 git 还检查该提交的工作树和索引,这样我们就不会出现未提交的更改。这意味着所有未提交的更改都将被覆盖。这就是为什么我说工作树应该摆脱重要的变化......
无论如何,我们不必对 master 分支做同样的事情:
git checkout master
git reset --hard origin/master
我假设这就是您现在希望主人指出的地方,因为您没有在问题中指定它。您也可以删除本地 master 分支,然后从 origin/master 再次检查它以获得相同的结果。
关于Git:如何将修改从主分支转移到分支?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24012125/