我在Git中有一个存储库。我做了一个分支,然后对主分支和分支都做了一些更改。
然后,几十次提交之后,我意识到分支的状态比主分支好得多,所以我希望分支“成为”主分支,并忽略对主分支的更改。
我无法合并它,因为我不想将更改保留在master上。我该怎么办?
额外:在本例中,“旧”主控已被推送到另一个存储库,如GitHub。这是如何改变事情的?
我在Git中有一个存储库。我做了一个分支,然后对主分支和分支都做了一些更改。
然后,几十次提交之后,我意识到分支的状态比主分支好得多,所以我希望分支“成为”主分支,并忽略对主分支的更改。
我无法合并它,因为我不想将更改保留在master上。我该怎么办?
额外:在本例中,“旧”主控已被推送到另一个存储库,如GitHub。这是如何改变事情的?
当前回答
我很惊讶这里没有答案。这就是我所做的。
在我的文件系统中的不同目录中制作了两个repo副本,一个是主副本,另一个是分支副本。将分支中的所有文件(手动)复制到主文件已将更改提交给master。
这样,就有了一个包含所有差异的提交,保存了提交历史,不需要强制推送。
其他回答
编辑:你没说你已经推到了公开回购!这是天壤之别。
有两种方式,“脏”的方式和“干净”的方式。假设您的分支名为new master。这是一种干净的方式:
git checkout new-master
git branch -m master old-master
git branch -m new-master master
# And don't do this part. Just don't. But if you want to...
# git branch -d --force old-master
这将使配置文件更改以匹配重命名的分支。
你也可以用脏的方式来做,这不会更新配置文件。这是在上面的罩下发生的事情。。。
mv -i .git/refs/new-master .git/refs/master
git checkout master
以下步骤在Atlassian(Bitbucket服务器)支持的Git浏览器中执行
将{当前分支}设置为主分支
从master中创建一个分支,并将其命名为“master duplicate”。从{current branch}中创建一个分支,并将其命名为“{currentbranch}-copy”。在存储库设置(Bitbucket)中,将“默认分支”更改为指向“主副本”(如果没有此步骤,您将无法删除主副本-“在下一步”)。删除“master”分支-我从源代码树中执行了这一步骤(您可以在CLI或Git浏览器中执行)将“{current branch}”重命名为“master”并推送到存储库(这将创建一个新的“master”分支,但“{当前分支}”仍然存在)。在存储库设置中,将“Default Branch”更改为指向“master”。
通过以下方式将分支重命名为主分支:
git branch -M branch_name master
我很惊讶这里没有答案。这就是我所做的。
在我的文件系统中的不同目录中制作了两个repo副本,一个是主副本,另一个是分支副本。将分支中的所有文件(手动)复制到主文件已将更改提交给master。
这样,就有了一个包含所有差异的提交,保存了提交历史,不需要强制推送。
我的做事方式如下
#Backup branch
git checkout -b master_backup
git push origin master_backup
git checkout master
#Hard Reset master branch to the last common commit
git reset --hard e8c8597
#Merge
git merge develop