如何使分支与origin / master相同

问题描述 投票:0回答:2

假设我从origin/master分支到brancha

我创建,提交并推送更改到brancha(这包括创建,提交和推送新文件)。

现在,我想让brancha再次与origin/master完全相同的内容(因为,说我的更改是错误的,并且更好的解决方案被放在master上)。

所以我希望我的分支基本上是origin/master的一个新分支,但我希望我的旧更改已被记录,所以我可以在历史的后期看到它。

有没有办法做到这一点?

git
2个回答
1
投票

要保存更改,您需要指向其当前提示的指针 - 例如标签或其他分支。

git tag <tag_name> brancha

然后重置分支,使其与当前的origin/master匹配:

git checkout brancha
git reset --hard origin/master

0
投票

如果你想在你的brancha提交(你想保留)之上创建一个新的提交,反映origin / master,我会建议重置 - hard然后是soft(如“Practical uses of git reset --soft?”)。

m--m--m (origin/master)
       \
        a--a--a (brancha, HEAD)

首先,将索引和工作树重置为您想要查看的内容:origin / master

git checkout brancha
git branch tmp
git reset --hard origin/master

m--m--m (origin/master, brancha, HEAD)
       \
        a--a--a (tmp)

问题:brancha历史不再被引用:将brancha HEAD移回其原始位置,但不更改索引和工作树(这两者都反映了origin/master

git reset --soft tmp

m--m--m (origin/master)
       \
        a--a--a (tmp, brancha, HEAD)

现在你可以添加和提交:应该计算相关的delta来设置一个与origin/master具有相同内容的新提交。

git add .
git commit -m "Restore origin/master content in a new commit on brancha"

m--m--m (origin/master)
       \
        a--a--a----M (brancha, HEAD)
             (tmp)

M和origin / master commit应该具有相同的内容。

© www.soinside.com 2019 - 2024. All rights reserved.