smartgit delete commit并返回上一次提交

Low*_*rux 10 git pull git-checkout smartgit

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

在尝试结帐时:

在此输入图像描述

我的日志如何看待当下:

在此输入图像描述

我想要做的是从日志中删除前两个提交并返回到"Cambios Varios"提交(当我试图检查提交时,带有绿色箭头的那个提示).

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

Mik*_*ail 9

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

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

谷歌就这些来获取更多信息.现在,让我们为你的提交命名:

在此输入图像描述

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

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

所以简单的答案就是你无法将repo恢复C为你想要的提交,因为它可能与克隆在其他机器上的repos冲突.更长的答案是你可以试试.

如果您确定克隆了此repo的唯一人员是您和您的同事,则可以重写远程日志.为此,请master在提交时重置本地分支C(通过拖放操作,如前所述)并推送它.SmartGit可能禁止您这样做,转到首选项/命令/推送并启用选项"允许修改推送的提交".因为它很危险.

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


Dav*_*han 5

TLDR:这是它的屏幕截图smatgit 截图