smartgit 删除提交和 return 到以前的提交

smartgit delete commit and return to previous commit

我错误地做了一个提交,现在我想从历史日志中删除并且 return 到以前的提交。我一直在尝试检查我想要 return 的提交,但是 Smartgit 要求我创建一个本地分支以便执行此操作(附上屏幕截图)并且由于我不是 SG 专家我真的需要一些建议.我也尝试恢复错误的提交,但我仍然在日志中看到提交。这是日志现在的样子:

尝试结帐时:

我的日志目前看起来如何:

我想做的是从日志中删除前两个提交,然后 return 到 "Cambios Varios" 提交(顺便说一句,当我试图签出时出现的带有绿色箭头的那个提交)。

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

你问的不是 SmartGit 特有的,而是 GIT 的一般问题。 SmartGit 只是一个客户端,虽然非常方便且功能齐全。在您的情况下,您必须考虑几个 GIT 特征:

  1. 分支机构
  2. 已发布的提交
  3. 分离头
  4. 重写远程历史记录

Google 以获取更多信息。现在,让我们为您的提交命名:

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

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

所以简单的答案是您不能根据需要将回购恢复到提交 C,因为它可能与在其他机器上克隆的回购冲突。更长的答案是你可以试试。

如果您确定只有您和您的同事克隆了此存储库,您可以重写 远程日志。为此,在提交 C 时重置您的本地 master 分支(如我之前所说,使用拖放)并 push 它。 SmartGit 可能会禁止您这样做,转到 Preferences/Commands/Push 并启用选项 "Allow modifying pushed commits"。因为很危险。

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

TLDR:这是它的屏幕截图