【问题标题】:smartgit delete commit and return to previous commitsmartgit 删除提交并返回之前的提交
【发布时间】:2015-09-04 09:08:57
【问题描述】:

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

尝试结帐时:

我的日志现在的样子:

我想要做的是从日志中删除前两个提交并返回到“Cambios Varios”提交(当我尝试检查该提交时出现的带有绿色箭头的那个)。

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

【问题讨论】:

    标签: git pull git-checkout smartgit


    【解决方案1】:

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

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

    在这些上谷歌以获取更多信息。现在,让我们为您的提交命名:

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

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

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

    如果你确定只有你和你的同事克隆了这个 repo,你可以重写远程日志。为此,请在提交 C 时重置您的本地 master 分支(如我之前所说,使用拖放操作)并推送它。 SmartGit 可能会禁止您这样做,请转到 Preferences/Commands/Push 并启用选项“允许修改推送的提交”。因为它很危险。

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

    【讨论】:

    • “因为它很危险。”这意味着它会引起混乱,而不是它会破坏任何东西,对吧?
    • @endolith 是的,它不会破坏 GIT 存储库本身,你不能轻易破坏它。
    • 你告诉我拖动绿色箭头,让我丢失了本地更改。我想将更改提交到不同的分支。
    【解决方案2】:

    TLDR:这是它的截图

    【讨论】:

      猜你喜欢
      • 2015-12-01
      • 2018-03-01
      • 1970-01-01
      • 2021-04-14
      • 2013-02-13
      • 2013-09-10
      • 2015-02-23
      • 2019-10-27
      • 2015-12-22
      相关资源
      最近更新 更多