smartgit delete commit并返回上一次提交

时间:2015-09-04 09:08:57

标签: git pull git-checkout smartgit

我错误地提交了一个提交,现在我想从历史记录日志中删除并返回到先前的提交。我一直在尝试检查我想要返回的提交但Smartgit要求我创建一个本地分支以执行此操作(屏幕截图附加),因为我不是SG的专家我真的需要一些建议。我还试图恢复我错误提交,但我仍然看到日志提交。这就是日志的样子:

尝试结帐时:

enter image description here

我的日志如何看待当下:

enter image description here

我想要做的是从日志中删除前两个提交并返回" Cambios Varios"提交(当我试图检查提交时,btw出现的绿色箭头)。

所有这些混乱是因为我的coleague做了一些更改并添加了一个文件然后提交他的更改,为了让我的文件更新我拉了一下但我的文件没有在我的本地存储库上更新并且没有添加我的coleague添加的文件。除了PULL之外,当另一个用户执行提交时,还有什么我需要做的才能更新我的所有文件夹吗?我是SmartGit的新手,每次试图干净拉动时都会有点混乱。非常感谢!

2 个答案:

答案 0 :(得分:8)

您所询问的不是SmartGit特有的,而是GIT的特定内容。 SmartGit仅仅是一个客户端,虽然非常方便且功能齐全。在您的情况下,您必须考虑几个GIT功能:

  1. 分行
  2. 已发布提交
  3. 独立头
  4. 重写远程历史记录
  5. 谷歌就这些获取更多信息。现在,让我们为你的提交命名:

    enter image description here

    您继续看到提交A,因为您指向了分支。这是您的本地分支master。你可以重置这个分支到你喜欢的任何提交。在SmartGit中,只需单击该绿色分支标签并将其拖动到任何其他提交。而已。例如。将其重置为B,其中origin/master指向,并且您将不再在日志中看到此提交,因为没有可以从中访问它的分支。

    严格地说,您可以对origin/master分支执行相同的操作,您可以将其重置为任何其他提交。但是你应该非常小心,因为它指向提交B已发布。即任何人都可以将它拉到他们的机器上。如果您无法确定,则无法从已发布的提交中重置分支,而不会破坏某人的回购副本。

    因此,简单的答案是您无法将repo还原为提交C,因为它可能与克隆在其他计算机上的repos冲突。更长的答案是你可以试试。

    如果您确定克隆此repo的唯一人员是您和您的同事,则可以重写远程日志。为此,请在提交master上重置您的本地C分支(正如我之前所说,使用拖放功能)和推送。 SmartGit可能禁止您这样做,转到首选项/命令/推送并启用选项“允许修改推送的提交”。因为它很危险。

    这将重写远程master分支的位置,从同事的机器中取出它。如果他没有对这个分支做任何额外的修改,那应该没问题。

答案 1 :(得分:2)

TLDR:以下是smatgit screenshot

的屏幕截图