bla*_*s75 47 git commit sha cherry-pick
我想在保留它的原始SHA提交代码的同时在提取的遥控器上挑选提交(我当前的分支基于这个我重置为先前状态的遥控器).
Mar*_*nde 65
git SHA哈希是根据不同的信息计算出来的:
即使您编辑了一个挑选的提交,以便树,提交消息,作者和提交者信息完全相同,父提交的SHA(或提交,如果处理合并提交)将始终不同.因此,您无法在挑选之后生成相同的SHA哈希(除非您发现SHA冲突;)).
eis*_*eis 15
SHA提交哈希由存储库的状态组成,使用整个历史记录直到提交点(不包括分支).这意味着除非整个历史都是相同的,否则你不能将原始哈希保留在采摘樱桃上,在这种情况下,采摘樱桃是没有意义的.
进入交互式变基(“git rebase -i”)并在末尾粘贴一个新条目,其中包含您想要添加到 HEAD 的确切修订版本。
例子:
打开交互式变基会话:
$ git rebase -i HEAD~4
Run Code Online (Sandbox Code Playgroud)
屏幕现在显示[类似于]:
pick efdd0ece Linked how to make a pull requests in README
pick 790a3be8 adjust pytest pins to fix testing infra
pick 5bb90d8f drop 3.4 support
pick 839dc8ba v2.22.0
pick b97fb61a Print the type of the password instead of the password itself
Run Code Online (Sandbox Code Playgroud)
您当前的 HEAD 是最后一个条目。在底部添加一个新条目(只需“选择”和您的修订版;无需描述)以及您想要添加的确切修订版:
pick efdd0ece Linked how to make a pull requests in README
pick 790a3be8 adjust pytest pins to fix testing infra
pick 5bb90d8f drop 3.4 support
pick 839dc8ba v2.22.0
pick b97fb61a Print the type of the password instead of the password itself
pick 2a173c2a6491aae0772640ba7946a08315d18eb8
Run Code Online (Sandbox Code Playgroud)
保存并关闭。确切的修订版现在将成为您的 HEAD:
$ git log --oneline | head -n 6
2a173c2a Some commit
b97fb61a Print the type of the password instead of the password itself
839dc8ba v2.22.0
5bb90d8f drop 3.4 support
790a3be8 adjust pytest pins to fix testing infra
efdd0ece Linked how to make a pull requests in README
Run Code Online (Sandbox Code Playgroud)
正如其他答案中提到的,您仍然必须遵守规则。这仅适用于非常狭窄的情况,即您具有完全相同的分支、父级和提交者(例如,在以代码审查为中心的流程中,您有一堆提交在某处排队,开发人员可以将它们推送并提交)将它们删除,而不必先将它们提交到存储库中);实际上只有当时间戳是唯一可能改变的事情时。在这种情况下,您可以强制进行相同的修订,以强制时间戳保持不变。
在大多数其他情况下,父母通常会有所不同,仅此一点就意味着您强制进行某些修改的梦想将会破灭。如果任何非时间戳因素不同,Git 总是会修复修订版本以使其正确。
根据您对其他答案的评论,我认为您只是想重置为某些远程提交。您可以使用它git reset --hard <SHA>
来执行此操作。警告:这将丢弃您在工作目录中的所有(未提交的)更改,并且您在此分支中所做的所有提交将不再可访问。
如果这不是你想要的(或者你不确定),请更清楚地描述你做了什么,你想做什么或你想要完成什么。
归档时间: |
|
查看次数: |
20127 次 |
最近记录: |