【发布时间】:2015-10-16 00:56:48
【问题描述】:
不幸的是,我在一个分支中提交了几个文件,但我的意图是在另一个新分支中提交这些文件。到目前为止,我还没有将那个文件推送到那个分支中。 那么请告诉我如何在我的新分支中移动提交的文件?
任何建议将不胜感激。
【问题讨论】:
-
感谢您的宝贵帮助。我从stackoverflow.com/questions/2941517/… 得到了答案。这里
标签: github
不幸的是,我在一个分支中提交了几个文件,但我的意图是在另一个新分支中提交这些文件。到目前为止,我还没有将那个文件推送到那个分支中。 那么请告诉我如何在我的新分支中移动提交的文件?
任何建议将不胜感激。
【问题讨论】:
标签: github
您可以使用git reset --soft HEAD^ 取消提交您的文件,然后使用git stash 隐藏您的更改。然后您可以使用git checkout your-target-branch 检查您更改的正确目标分支,然后您可以执行git stash pop 来获取隐藏的更改,并允许您在正确的分支中添加/提交/推送。
【讨论】:
您可以在新提交所在的位置创建一个新分支:
git checkout -b aNewBranch
x--X--y--y (aBranch, newBranch)
您可以将之前的分支重置为正确的提交(执行git log 以获得正确的SHA1,实际上可能是origin/aBanch,因为您还没有推送它)
git branch -f aBranch <sha1>
x--X (aBranch)
\
--y--y (newBranch)
【讨论】:
假设当前分支是A。从这个分支创建一个新分支。
git checkout A
git branch B
现在分支 B 包含您在分支 A 中提交的更改。剩下要做的就是从分支 A 中删除更改。这可以按如下方式完成:
git reflog
这将为您提供 repo 经历的所有更改的列表。选择您希望分支 A 恢复到的 HEAD 值。
git reset --hard HEAD<i>
这会做你打算做的。
【讨论】: