我试图从之前的提交(而不是HEAD)进行分支,但是当我提交这些更改时,而不是将更改保留在分支中,它会使我的提交在HEAD中超过该点。我可以看到这可能有用,但我认为VC的目的是永远保留所有提交,以便你可以随时回到之前的状态。
如何编辑先前的提交并提交它而不删除主服务器上提交的提交?
谢谢!
编辑:
这是让我相信其他更改已被删除的图片
以下是我认为已删除的隐藏分支。为什么gitk不显示其他分支(HEAD,master)
答案 0 :(得分:4)
最有可能没有被删除。您可能已经创建了一个新的匿名分支。如果您签出master
或您开始的任何分支,那么缺失的更改仍应存在。
尝试git log --all
;它应该显示存储库中的所有提交。
有一些git命令可以破坏信息,但你可能还没有这样做,虽然很难确定你不知道你执行了什么命令。
答案 1 :(得分:3)
提交可能不会丢失。先做备份。检查你的分支,以及它们中的内容。如果你真的找不到任何分支的提交,你可能有兴趣了解reflog。
如果您没有安装存储库浏览器(我喜欢tig),您可以使用如下命令检查存储库:git log --graph --all --oneline --decorate
如何编辑先前的提交并提交它而不删除主服务器上提交的提交?
如果要编辑的提交是先前的提交:
git add -u
暂存更改。git commit --amend
将执行此操作,如果您不想编辑提交消息,请添加-C HEAD
。如果要编辑较旧的提交,则需要使用rebase。 这可以以交互方式完成:
git rebase -i
,这将打开一个编辑器:
pick
更改为f
(用于修正)。这将尝试将您的编辑应用于先前的提交,并在之前的提交和编辑之上重新定义所有后续更改。如果后期提交受编辑影响,则可能会出现合并冲突。 Git将提供有关如何解决这些问题的说明。如果您不理解它们,可以使用git rebase --abort
返回到您开始的位置,编辑是最新的提交。
请注意,您不应编辑已推送到共享存储库的提交。这可能会造成很多混乱。