我是Git的新手,我只懂了如何将它与SourceTree一起使用(一点点)
我的分支图是:
o Commit E is origin/test and (local) master
|
| o Commit D is origin/master
| |
| o Commit C
| |
| o Commit B
|/
o Commit A
|
现在,我想:
但我在SourceTree中找不到合适的按钮和命令。
答案 0 :(得分:1)
您要做的是将您的(本地)主分支推送到origin
--force
,以表示您要重写历史记录。
即:你知道你的改变会导致起源/主分支失去历史记录(3提交B,C,D)并且你不在乎。
我不太了解sourcetree,告诉你是否可以进行这样的操作,GUI一直在不断发展,他们每个月都会增加新的功能以支持更多的操作,但是你总是可以打开git控制台来自sourcetree(至少有1.3个图标可以做到这一点)并输入:
git push --force origin master
这会将您的(本地)主分支推送到其跟踪分支(应该是origin / master)。
N.B:我不知道您如何配置SourceTree,但如果依靠https与服务器通信,则可能需要输入登录名/密码。
编辑1:
如果您还想删除原点/测试,可以通过右键单击sourceTree中的分支(在遥控器下)并选择删除来执行此操作:
https://answers.atlassian.com/questions/65053/how-do-you-remove-branches-from-source-tree
编辑2:
显然,push --force
的GUI选项将被添加到1.7版
作为更一般的答案:Stackoverflow不是谷歌。 SourceTree是由Atlassian支持的免费商业软件。他们支持你。他们有一本好的手册和用户群,不足以成为第一个想知道如何做X的新手。只需谷歌吧。
答案 1 :(得分:0)
不知道如何使用SourceTree执行此操作。正如其他人所说:采取命令行:
git checkout master # master points at COMMIT E
git push -f origin master:master # forced push to origin so that masters are equal
git push origin :test # delete origin/test
无需按钮。
答案 2 :(得分:0)
不确定这是否已解决但面临类似问题并使用Source树解决如下:
您可以使用“Reverse Commit ...”选项(当您右键单击该提交时)从最新提交开始的每次提交D.不要推送任何更改并逐个使用C和B的反向提交。在这3次反转之后,源/主分支上的代码将与提交A相同。现在推送更改到远程仓库(分支原产地/主人)。将原点/测试合并到原点/主页。现在origin / master在提交E.推送它,当你在origin / master分支时,你可以删除origin / test分支
P.S。:只有你会看到在分支上恢复提交,但代码将是干净的。