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)