我目前处于一些最新提交已覆盖旧提交内容的情况。
我正在使用工具git扩展,从GUI界面中,我可以签出特定的修订-提交。
所以我签出了修订版,并且可以在本地看到文件存在-但是似乎没有什么要提交的?我想这有道理吗?
如何重新推送先前的提交?
答案 0 :(得分:0)
您是否尝试将提交放在首位? git cherry-pick
答案 1 :(得分:0)
假设我们有一个场景,我们以前的提交日志就像
git status
commit-1 [ bad commit ]
commit-2 [ bad commit ]
commit-3 [ bad commit ]
commit-4 [ good commit ]
commit-5 [ good commit ]
现在我们可能想要两件事。
我们可能想要删除所有错误的git commit,并希望进入最后一个良好的commit阶段。就像关注
git status
commit-4 [ good commit ]
commit-5 [ good commit ]
我们可以通过休息前三个提交来做到这一点
git reset --hard HEAD~3
# for n number of last commit reset
git reset --hard HEAD~n
我必须提到,这是撤消工作的非常困难的方法。当您完全确定为什么要这样做时,请执行此操作。
您可能希望将commit-4放在其中的顶部
git status
commit-4 [ good commit ]
commit-1 [ bad commit ]
commit-2 [ bad commit ]
commit-3 [ bad commit ]
commit-4 [ good commit ]
commit-5 [ good commit ]
您可以按照以下步骤进行操作
git cherry-pick -n <commit-4 sha1>
这些将把commit-4放在那些错误的提交之上。
答案 2 :(得分:0)
我建议两种方法之一。
如果您的新提交没有提供任何有用的信息。而且它只是取消了您在先前提交中所做的操作,使用git-revert。它将创建一个新的提交,该操作将不执行还原的提交所做的任何操作。
在git命令行中,您使用以下命令标识错误的提交 git日志 保留其ID(例如12345abcd)。然后还原该提交 git恢复12345abcd
如果您的新提交除了打破了旧提交之外还做得不错,那么您可以选择喜欢的旧提交。它将应用与上一次提交相同的代码更改。但是,它将成为新提交。这样可以使您的分支与较早的请求保持一致。
首先确定您要再次应用的提交 git日志 保留ID(例如fedc9876) git cherry-pick fedc9876
如果您希望对Cherry Pick进行更多控制,请使用-n标志来防止立即提交 git cherry-pick -n fedc9876
您提到使用git工具。 git命令可能会帮助您找到如何为此目的使用它。
答案 3 :(得分:0)
所以我最终创建了一个新分支,并将文件移到了那里, 后来我遇到了类似的问题,我注意到本地分支和远程分支的命名方式不相同。
我执行了git push -f,因为我想与我们的主人重新建立基础, 但是本地分支名称与远程分支名称不同,这意味着已创建一个远程分支,并且该分支包含新的提交。
默认情况下,gitExtension似乎以大写字母开头创建本地分支-创建远程分支时并非总是如此。