Git - 删除所有尚未推送的提交

时间:2017-11-19 15:38:33

标签: git

关于GIT的一个非常基本的问题:

如何删除所有尚未推送到远程存储库的提交,以便我对文件的修改仍然存在?

4 个答案:

答案 0 :(得分:1)

git reset --soft origin/master

该命令将HEAD移回原始分支,但保留了工作存储库。

答案 1 :(得分:1)

你能试试吗?

git log --oneline
git reset --soft COMMIT

其中COMMIT是推送到远程存储库的最新提交。

答案 2 :(得分:1)

如果 确实 想要删除提交,则需要从键值存储中删除对象。

这可以通过在添加任何提交之前首先将分支重置为提交来完成。

git reset --soft <COMMIT-SHA>

--soft标志将保留您的工作目录。我假设您所指的 模板 位于您工作目录的某个位置?

通常,origin / master将指向COMMIT-SHA,如果不是,则执行

git log --oneline

或同等学历。

完成此操作后,您需要 修剪 存储库。

Here is an answer which explains how

基本上你需要:

git reflog expire --expire-unreachable=now --all
git gc --prune=now

没有任何理由这样做,因为最终git会自动执行此操作。

答案 3 :(得分:0)

试图理解,我们需要有关您问题的更多详细信息。

你想:

  1. 还原一组已定义的提交?
  2. 恢复到原始状态(origin / master)?
  3. 压缩你的提交?
  4. 这不是你的答案,只是一个提示:使用分支。