Git:检查以前的提交并放在顶部?

你好,感谢你的时间。

我已经做了一些我想要维护的提交,但是我确实需要从前一点开始。 所以这个想法是我想维护历史上最新的提交,但是我需要从之前的代码中知道它的工作原理。

特别是我需要从回购:https://github.com/PrototipoAtlas/Prototipo/commits/master

提交: 重构提取ControlsPanel

所以我做了:

git checkout 88975b656fae250f469507b3f1f80364810a0e7c

但是,我怎么能把它放在存储库的顶部?

我只是试着:

git commit

它说,没有改变。

我也读过:

Git签出旧提交,并进一步进行新的提交

如何检出旧的提交并将其提交给新的提交

签出旧的提交并使其成为新的提交

如何将Git存储库恢复到以前的提交?

但我还没有找到我完全理解的答案

请问你能帮帮我吗???


我相信你正在寻找诸如“git modification”之类的东西,但也要看看这个“重写历史”文章

另一种选择可能是交互式底座,它允许您更改提交的顺序。


TL; DR

$ git cherry-pick --strategy=recursive -X theirs <commit>

如果我理解正确,你想维护所有的提交,但是通过把状态变为提交的状态来“假装”它们从来没有发生过。 如果我是对的,让我解释一些事情:

通过设计,git可以处理指向提交的指针。 你在git中的状态是HEAD,这是一个指向ref的指针。 默认参考(即,如果您没有移动),是refs / head / master或分支主人。

$ cat .git/HEAD 
ref: refs/heads/master

这又是一个指向提交的指针。

$ cat .git/refs/heads/master 
6a7c2df372d612dff5fb5ce8cfbcea02f4ad5bee

我告诉你这个向你解释什么checkout 。 当你执行它时,你会收到这条消息

注意:检查'b17058ee12b46cb7b9a15057efe2f1872ff076cc'。

你处于'分离头部'状态。 您可以环顾四周,进行实验性更改并提交它们,并且可以放弃您在此状态下进行的任何提交,而不会通过执行另一个结帐影响任何分支。

如果你想创建一个新的分支来保留你创建的提交,你可以(现在或以后)再次使用-b和checkout命令。 例:

git checkout -b

HEAD现在在b17058e ... b

如果您现在检查.git/HEAD

$ cat .git/HEAD
b17058ee12b46cb7b9a15057efe2f1872ff076cc

这意味着你指向一个提交,但你不能提交更改,如消息指出的那样。 你可以从这个提交中创建一个分支,但是你并没有要求这个。 要做你想做的事,你需要:

$ git cherry-pick --strategy=recursive -X theirs <commit>

Cherry-pick是一个git命令,它获取提交并将其应用于HEAD。 尽管如此,它试图进行合并,所以当你想要替换提交时,你会遇到很多冲突。 所以你可以把--strategy=recursive -X theirs作为参数来选择樱桃选择,说你希望你的改变被樱桃选择提交覆盖。

链接地址: http://www.djcxy.com/p/18865.html

上一篇: Git: Check previous commit and put in on top?

下一篇: Wrong revert in git