使用另一个本地分支替换一个本地分支,并保留跟踪。

6
我有两个本地分支,它们跟踪不同的代码库:
  • local-live(跟踪我们的生产环境repo)
  • local-staging(跟踪一个测试环境repo)
我们设置了“持续部署”,因此当我将我的“local-staging”推送到测试环境时,更改将更新。 我想让测试环境反映现在生产环境上的代码(目前不是这种情况)。
如何使用“local-live”分支中的代码替换我的“local-staging”分支? 我想要清除所有的测试环境更改,使其反映现在的生产环境。 我希望我的“local-staging”仍然跟踪测试环境repo(即从测试环境执行“git push”将按预期进行)。
希望这很清楚。 谢谢。
2个回答

8

您想进行硬重置。

git checkout local-staging
git reset --hard local-live

我认为 "git reset" 命令中的最后一个参数应该是您想要重置到的提交。它也适用于分支名称吗? - RayLoveless
@RayL 是的,绝对没问题。试一下吧。如果有效,请接受答案.. :) - Pankaj Singhal
最简洁的答案。谢谢! - RayLoveless

2

看起来你想将你的现有分支合并到暂存分支。

以下是详细的操作指南:

http://www.git-tower.com/learn/git/ebook/command-line/branching-merging/merging

基本上,你需要执行以下步骤:

$ git checkout local-staging
$ git merge local-live

现在,如果你想将你的现有分支的更改放在暂存分支的顶部,你应该使用rebase。并且执行类似以下的操作:
$ git checkout local-live
$ git rebase local-staging
$ git checkout local-staging
$ git merge local-live

请查看以下内容:

https://git-scm.com/book/zh/v2/Git-分支-变基


现在,如果您不想合并分支,则应进行破坏性操作 :O

您可以执行“硬重置”和“强制推送”。

$ git checkout local-staging
$ git reset --hard <desired commit of local-live>
$ git push --force origin local-staging

更多信息:

https://es.atlassian.com/git/tutorials/undoing-changes/git-reset

这是有关撤消Git提交和恢复先前状态的有用链接。

我不想合并任何东西。我想要替换掉暂存区的内容(失去暂存区的任何更改)。抱歉,我刚刚更新了问题。希望这样说得清楚了。 - RayLoveless

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接