假设我有一个现有的分支B(如果它有所不同,它是远程的)。
我还有一个分支A(本地或远程)。我希望分支B与A完全一样。如果我理解正确,合并不会使分支相同,那么分支B中的某些东西仍然不会出现在分支A上并且它将在之后保留在那里执行git checkout B
后跟git merge A
。我理解正确吗?
当然,我可以删除分支B并从A创建一个新的分支B.这是最好的方法吗?
注意只是为了澄清它:我希望由于部署配置而使分支B保持活动状态。如果我删除并重新创建,我将需要手动执行另一项操作以进行部署。
答案 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
。