Git - 当分支BranchA时,如何重置我的新分支BranchB,使其没有任何BranchA内容?
问题描述:
我在BranchA上做了很多工作。Git - 当分支BranchA时,如何重置我的新分支BranchB,使其没有任何BranchA内容?
我现在想创建一个新的本地分支BranchB,并从GitHub下拉这个远程分支。
但是,执行git checkout -b BranchB仍然会对BranchA做出所有更改。
如何重置此分支,使其没有任何内容,因此我可以从GitHub中抽取干净的BranchB?
谢谢。
答
假设BranchB在服务器上,只是做git checkout BranchB
(没有-b
选项)。这将创建BranchB并让它自动跟踪origin/BranchB。如果您已在本地创建了“错误的”BranchB,请务必先用git branch -d BranchB
删除它。
答
您可以创建一个从历史记录中的某一点开始使用此命令的一个分支:
git checkout -b BranchB <sha1>
此命令执行两件事情:
- 将创建一个名为BranchB本地分支,它开始from <sha1>
- HEAD用你的工作树切换到这个分支
然后你可以把和跟踪:
git push origin BranchB --set-upstream
注意<SHA1>可能是:
- 产地/主
- 产地/主〜1
- BranchA〜2
- 实际上,任何提交的sha1
如果你已经有了一个“坏”的本地或远程的分支,它的名字是BranchB,你可以将它们删除:
git push origin :BranchB # Deletes the remote branch origin/BranchB
git branch -d BranchB # Deletes the local branch BranchB (if merged, no risk to loose data)
git branch -D BranchB # Deletes the local branch BranchB (force for not merged branches)