使用SourceTree删除提交

时间:2015-02-16 10:15:18

标签: git atlassian-sourcetree

我是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
 |

现在,我想:

  • 删除提交D,C和B
  • 将origin / master移至Commit E
  • 删除origin / test分支标记

但我在SourceTree中找不到合适的按钮和命令。

3 个答案:

答案 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。:只有你会看到在分支上恢复提交,但代码将是干净的。