如何用一个git分支替换另一个git分支?

hsgswve4  于 2022-12-10  发布在  Git
关注(0)|答案(2)|浏览(346)

有时候我会 checkout 一个测试分支来看看rebase / whatever是否有效,但是这会让我陷入这样一种情况:我有一些分支feat-234,还有一些分支test,我想用test替换feat-234
工作流程示例:

# on branch feat-234
git checkout -b test
git rebase main 
# apply fixes required to make rebase work

此时,我想使用test而不是feat-234,因为我想做的事情已经成功了。

编辑1

我在分支test上尝试执行以下操作:

  • git branch -D feat-234,删除feat-234
  • 第234号

我不认为这工作,虽然我认为我已经失去了所有的远程信息,是在feat-234.

omqzjyyz

omqzjyyz1#

在验证了test确实是您想要的特性分支之后:

git checkout feat-234
git reset --hard test

你可能还需要用--force来推送,因为你并不是简单地向分支添加提交。

pnwntuvh

pnwntuvh2#

我想对您的工作流程提出一个小的调整,它可能比您建议的流程稍微干净一些:
1.当你想测试合并或重定基时,在你决定要保留分支之前,不要使用分支:
git switch --detach #请注意,如果需要,可以添加起始提交或分支名称
这就相当于像你一样转移到另一个test分支,但你只是还没有命名分支,如果你不喜欢结果,你可能永远也不会命名分支。这样你也不必在完成时删除任何测试分支。现在做你要做的测试,在你的例子中可能是git rebase main
1.如果你喜欢这个结果,并希望你的当前分支为feat-234,只需:
git switch -C feat-234
这将创建一个名为feat-234的新分支,就像-c一样,但是如果分支已经存在,则用大写的-C替换该分支,在本例中是这样的。远程跟踪信息也将保留。

相关问题