我错误地进行了一次提交,现在我想从历史日志中删除并返回到以前的提交。我一直在尝试检查我想要返回的提交,但 Smartgit 要求我创建一个本地分支才能执行此操作(附有屏幕截图),并且由于我不是 SG 专家,所以我确实需要一些建议。我还尝试恢复我错误地进行的提交,但我仍然在日志中看到该提交。这是日志现在的样子:
尝试结帐时:
我的日志目前看起来如何:
我想要做的是从日志中删除前两个提交并返回到“Cambios Varios”提交(顺便说一句,当我试图检查该提交时出现的带有绿色箭头的提交)。
所有这些混乱都是因为我的同事做了一些更改并添加了一个文件,然后提交了他的更改,为了更新我的文件,我进行了拉取,但我的文件没有在我的本地存储库上更新,也没有添加原来的文件我的同事添加的。当另一个用户除了 PULL 之外进行提交时,我还需要做其他事情才能更新我的所有文件夹吗?我对 SmartGit 还很陌生,每次尝试进行干净的拉取时都有点困惑。非常感谢 !
您所问的并不是 SmartGit 特有的问题,而是 GIT 的普遍问题。 SmartGit 只是一个客户端,但非常方便且功能齐全。根据您的情况,您必须考虑几个 GIT 功能:
- Branches
- 已发布的提交
- 分离头
- 重写远程历史
谷歌这些以获得更多信息。现在,让我们为您的提交命名:
您继续看到提交A
,因为你有一个branch指着它。这是你的local branch master
。你可以reset这个分支可以是你喜欢的任何提交。要在 SmartGit 中执行此操作,只需单击绿色分支标签并将其拖动到任何其他提交即可。就是这样。例如。重置它以提交B
, where origin/master
指向,并且您将不再在日志中看到此提交,因为没有可以到达它的分支。
严格来说,你可以用你的origin/master
分支,您可以将其重置为任何其他提交。但你应该非常小心它,因为它指向一个提交B
,即发表。 IE。任何人都可以将其拉到他们的机器上。如果您无法确定,则无法从已发布的提交重置分支,而不会面临破坏某人的存储库副本的危险。
所以简单的答案是你无法将存储库恢复到提交C
如您所愿,因为它可能与其他计算机上克隆的存储库冲突。更长的答案是你可以尝试一下。
如果您确定克隆此存储库的唯一人是您和您的同事,您可以rewrite远程日志。为此,请重置您的本地master
提交时分支C
(正如我之前所说,通过拖放)和push它。 SmartGit 可能会禁止您这样做,请转到“首选项/命令/推送”并启用选项“允许修改推送的提交”。因为它很危险。
这将重写遥控器的位置master
分支,从你同事的机器上拉出来。如果他没有对该分支进行任何额外的更改,应该没问题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)