我如何将我最近的承诺转移到一个新的分支机构,并在这些承诺完成之前重新定义主? 例如:
master A - B - C - D - E
为此:
newbranch C - D - E
/
master A - B
我如何将我最近的承诺转移到一个新的分支机构,并在这些承诺完成之前重新定义主? 例如:
master A - B - C - D - E
为此:
newbranch C - D - E
/
master A - B
当前回答
使用Emacs' git porcelain Magit,您可以通过击中b s(magit-branch-spinoff)。您将被要求为您的新分支输入一个名称,一旦您击中,voila。
《魔法文档》:
这个命令创建并检查一个新的分支开始并跟踪当前分支. 该分支反过来重新设置到最后一个分支它与其上流共享. 如果当前分支没有上流或没有不冲动的分支,那么新的分支是创建的任何情况下,以前的当前分支没有被触摸。
其他回答
使用Emacs' git porcelain Magit,您可以通过击中b s(magit-branch-spinoff)。您将被要求为您的新分支输入一个名称,一旦您击中,voila。
《魔法文档》:
这个命令创建并检查一个新的分支开始并跟踪当前分支. 该分支反过来重新设置到最后一个分支它与其上流共享. 如果当前分支没有上流或没有不冲动的分支,那么新的分支是创建的任何情况下,以前的当前分支没有被触摸。
git reset HEAD~3
git stash
git checkout newbranch
git stash pop
如果你的主要目标是旋转回主 你想保持文件变更 你不关心错误的命令上的消息 你没有推,但 你想这很容易记住 你不想要如临时/新分支, 查找和复制命令, 和其他头痛等并发症
这是什么不做
目标
OP表示,目标是“在这些承诺完成之前重新掌握”而不失去变化,而这个解决方案就是这样。
不要这样做,如果你推了大师的变化
如果你只是重新编写你的本地大师没有影响,当它被推向上流,但推一个重新编写的历史给合作伙伴可能会导致头痛。
從其他文章中採取一些想法,避免任何與重新安裝有關的事情,並且非常偏見,我的解決方案是:
git 分支 # 更改可在新分支 git 推 # 上传,您可能需要与“--set-upstream”混淆,例如 git 推 --set-upstream https:/// 检查新分支在 git 通过 GUI 破坏现行目录从 git 存储库重新克隆
我不自豪,但我保留了我的数据。
對於那些想知道為什麼它工作(正如我開始的那樣):
你想回到C,然后移动D和E到新分支。
A-B-C-D-E (HEAD)
↑
master
在Git分支新Branch之后:
newBranch
↓
A-B-C-D-E (HEAD)
↑
master
此分類上一篇: git reset --hard HEAD~2:
newBranch
↓
A-B-C-D-E (HEAD)
↑
master
因为一个分支只是一个指标,大师指向最后一个承诺。当你做了新的Branch,你只是做一个新的指标到最后一个承诺. 然后使用Git重新设置你移动了大师指标回两个承诺. 但因为你没有移动新的Branch,它仍然指向承诺它最初做了。
只有在这种情况下:
Branch one: A B C D E F J L M
\ (Merge)
Branch two: G I K N
我表演了:
git branch newbranch
git reset --hard HEAD~8
git checkout newbranch
我希望承诺我会成为头,但承诺是现在的。
要确保在历史上登上正确的位置,就更容易与承诺的哈希工作。
git branch newbranch
git reset --hard #########
git checkout newbranch