我有一个git仓库,除了主分支外还有一个分支。我希望将这个分支变成主分支 -- 完全覆盖主分支。显然我可以进行合并,但这将导致许多冲突,并且解决它们似乎需要很多工作,而我知道我始终希望使用来自其他分支的文件,而不是主分支。
是否可能将一个分支转换为主分支,或进行合并并告诉git始终优先使用一个分支中的文件而非另一个分支中的文件?
提前致谢!
我有一个git仓库,除了主分支外还有一个分支。我希望将这个分支变成主分支 -- 完全覆盖主分支。显然我可以进行合并,但这将导致许多冲突,并且解决它们似乎需要很多工作,而我知道我始终希望使用来自其他分支的文件,而不是主分支。
是否可能将一个分支转换为主分支,或进行合并并告诉git始终优先使用一个分支中的文件而非另一个分支中的文件?
提前致谢!
git checkout master
git reset --hard topicBranch
硬重置会使当前分支指向给定的提交。这将丢弃主分支上尚未在主题分支上的任何提交;它们将不会被合并。
与变基相同,此处也适用于警告:如果您已经将主分支推送到与其他开发人员共享的任何存储库中,请不要执行此操作。
git checkout master
git branch oldMaster
删除旧主分支并创建新的主分支:
git checkout topicBranch
git branch -D master
git branch master
如果在远程服务器上托管存储库,则需要更新远程服务器:
git push --force remoteName master:master
重要提示:如果其他开发者从你的代码库中拉取过代码,那么执行此方法会导致他们在下一次从你的代码库拉取或者你推送到他们的代码库时出现错误。
我在 Git 方面还不是专家,但看起来你想要使用 rebase 命令:
git checkout branch_name
git rebase master
git checkout master
看起来这将自动合并所有更改到您的主分支,在您的分支与主分支分歧的点,然后在这些更改之上重新应用当前更改到主分支(因此您不必进行合并)。
当然,如果您只想完全覆盖主分支,我认为您只需使用强制选项将该分支推送到主存储库。类似于这样:
git push --force origin branch_name
然后你的远程仓库将拥有来自你分支的所有更改,合并到主分支中,然后你就可以将其拉回来了...
git checkout master
git pull --force origin
git reset --hard
会丢弃所有未提交的更改。 - Mark Longairgit push -f
来强制推送。 - Force Hero