如何使分支B与分支A完全相同?

时间:2015-11-09 13:03:35

标签: git

假设我有一个现有的分支B(如果它有所不同,它是远程的)。

我还有一个分支A(本地或远程)。我希望分支B与A完全一样。如果我理解正确,合并不会使分支相同,那么分支B中的某些东西仍然不会出现在分支A上并且它将在之后保留在那里执行git checkout B后跟git merge A。我理解正确吗?

当然,我可以删除分支B并从A创建一个新的分支B.这是最好的方法吗?

注意只是为了澄清它:我希望由于部署配置而使分支B保持活动状态。如果我删除并重新创建,我将需要手动执行另一项操作以进行部署。

4 个答案:

答案 0 :(得分:5)

git会跟踪开发的 历史 。因此,要使分支与另一个分支完全相同,您只需要:

git checkout <branch B>
git reset --hard <branch A>
git push --force origin <branch B>

当然,这样做会失去分支B上的开发历史。

答案 1 :(得分:0)

你当然可以这样做,但你真的想要吗?如果B是远程的,这也意味着其他人可能会检查它,并且重写会让他们感到困惑......

反正

git checkout B       # get B
git reset --hard A   # change B to be exactly like A
git push --force     # push B to remote, use --force to overwrite B (not normally allowed)

答案 2 :(得分:0)

听起来您只想重命名branchB

git branch -m branchB new_name_for_branchB
git branch branchA branchB

现在new_name_for_branchB指的是branchB曾经使用的相同提交,而branchB现在指的是与branchA相同的提交。然而,两个分支A和B仍然是不同的。

答案 3 :(得分:0)

其他人描述的git reset --hard会在您运行时将本地分支A与(远程)分支B同步。

如果(远程)分支是&#34;实时分支&#34; (也就是说,人们(可能是除了你之外的其他人;可能来自多个本地/主机/ ......)承诺),它会随着时间的推移而发展。为了使你的分支&#34;跟随&#34;远程分支通过新的更改,您可能希望将其设置为跟踪

git branch --set-upstream A origin/B

然后,只要您pull来自远程{{​​1}},它就会(尝试)同步您的本地副本origin